環境は Windows2000 + VB6 + SQLServer2000 です。
サーバに接続しています。
下記のコードについてです。
With Adodc1
.ConnectionString = "Provider=MSDASQL;DSN=test;UID=sa;PWD=test;DATABASE=testdb;"
.CommandType = adCmdText
.CursorLocation = adUseClient
.CursorType = adOpenStatic
.LockType = adLockOptimistic
.RecordSource = "SELECT 氏名 FROM M_Data"
.Refresh
.Recordset.ActiveConnection.BeginTrans
Do
.Recordset.Fields("氏名").Value = "テスト"
.Recordset.MoveNext
Loop Until .Recordset.EOF = True
.Recordset.ActiveConnection.CommitTrans
End With
この処理をネットワークで監視していますが、
.Recordset.Fields("氏名").Value = "テスト"
の部分で
データの更新の度にサーバに接続されていることが分かります。
データの書き換えを蓄積してサーバーへの書き込みを一括で行いたいのですが可能でしょうか?
VB6ではなく、.NETで非接続型にしたほうが要件にかなっているかも。
ADOデータコントロールは、
ひとつのコントロールごとに勝手なタイミングで暗黙接続するし、
レコード移動時に勝手に更新してしまうので、
この場合は使用しないほうがよいでしょう。
ADOの場合、プロバイダが対応していれば、
LockType=adLockBatchOptimistic でUpdateBatchメソッドを使ってバッチ更新が可能です(Adoデータコントロールで使用可能かは未確認)。
もしくは、データ連結を行わずに処理したほうがいいかもと思います。
>VB6ではなく、.NETで非接続型にしたほうが要件にかなっているかも。
今の開発環境は変えられません。
>ADOの場合、プロバイダが対応していれば、
>LockType=adLockBatchOptimistic でUpdateBatchメソッドを使ってバッチ更新
>が可能です(Adoデータコントロールで使用可能かは未確認)。
できました。ありがとうございます。
>もしくは、データ連結を行わずに処理したほうがいいかもと思います。
というのは、どういうことでしょうか?
ツイート | ![]() |