Date: Thu, 21 Feb 2002 12:42:54 +0900
From: Nobuhiro Takatsuki <who@sub.example.jp>
はじめて,投稿させていただきます 高槻と申します
初心者ながらMSDEに挑戦しています
Excelをクライアントとして,ADO経由でMSDE2000へ接続しています
(Excelを利用することは大前提です)
MSDEのあるテーブルにデータが数万件あります
その中からデータ更新する必要がある件数が1000件ほど発生します
それをどのようにすれば,早く・安全確実に行うことができるかを
アドバイスください
今考えて,取り合えず動くようにしたやり方は以下のようなやり方です。
更新に時間がかかり,また,更新の途中でエラーが発生した場合,どこまで
更新され,どのレコードが更新されなかったかがわからなくなりそうです。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
ExcelのVBAにて,ADOで接続し,
テーブル(myTable)のレコードをパラメータを与えたストアドプロシ
ージャ(mySP_test)でセレクトし取得,シートにペーストします
ストアドプロシージャ mySP_test
REATE PROCEDURE dbo.mySP_Syutoku(@Key1 char(4),@Key2 char(1))
AS SELECT ID,Data1 FROM myTable
WHERE (Key1=@Key1,Key2=@Key2)
ORDER BY ID
GO
Excel VBA
Set myADOcon = New ADODB.Connection
Set myCmd = New ADODB.Command
Set myRS = New ADODB.Recordset
myADOcon.Open "Provider=MSDASQL.1;Data Source=IDBS_0"
With myCmd
.ActiveConnection = myADOcon
.CommandText = "mySP_Syutoku"
.CommandType = adCmdStoredProc
.Parameters(1) = Format(Range("A1").Value, "&&&&")
.Parameters(2) = Format(Range("B1").Value, "&")
End With
Set myRS = myCmd.Execute
Range("A4").CopyFromRecordset myRS
(ADO接続はここで一旦切ります)
ExcelのWorkSheet上でデータを更新します
そして,
再接続し,
VBAにて,1000行ほどのデータを順次,ストアドプロシージャに
パラメータを渡すことによって,データをアップデートするように
します これが,時間がかかり,えらーも心配
ストアドプロシージャ mySP_Kousin
CREATE PROCEDURE dbo.mySP_Koushin(@ID char(8),@Data int)
AS UPDATE myTable
set Data1=@Data
WHERE ID =@ID
GO
Excel VBA
Set myADOcon = New ADODB.Connection
Set myCmd = New ADODB.Command
myADOcon.Open "Provider=MSDASQL.1;Data Source=IDBS_0"
j = 4
Do Until Cells(j, 1) = ""
With myCmd
.ActiveConnection = myADOcon
.CommandText = mySP_Kousin
.CommandType = adCmdStoredProc
.Parameters(1) = Cells(j,1).Value 'IDを取得
.Parameters(2) = Cells(j,2).Value 'データを取得
.Execute
End With
j = j + 1
Loop
* myTableをソースとして,レコードセットをオープンし,
アップデートする方法では,数万件のレコードを全て
クライアントへもってくるようになりますよね。
これはまずいですよね
[MSDE/SQLServerに関して、今、どんなことにお困りですか?] |
よろしければお困りの内容を、電子メールで教えて下さい。 |
質問を電子メールで作成する
|
[ウィンドを閉じる][MSDE/SQLServer FAQ ][MSDE / MSDE2000 技術サポート情報一覧]
|