RecordSetのUpdateで発生するエラーを解決するには?


ぼん  2007-12-07 18:15:54  No: 144156  IP: 192.*.*.*

はじめまして。

今データベースを2つ開き、片方のデータでもう片方を更新するというプログラムを作成中なのですが、どうしても解決できないエラーが発生しました。

1回目に更新した際はうまく通ったのですが、2回目以降で

"追加情報: 行が見つからなかっため、更新できません。列の値は最後に読み込まれた後で変更された可能性があります。"

というエラーが発生してしまいます。
このエラーについて調べてみても要領を得ないものが多く、理解ができませんでした。


以下詳細

Dim srcCon,destCon As ADODB.Connection
Dim srcRs,destRs As ADODB.RecordSet
Dim sql = "SELECT * FROM " & テーブル名

'Connectionの確立
srcCon = New ADODB.Connection
destCon = New ADODB.Connection 
srcCon.Open("DSN=xxx;UID=xxx;PWD=xxx")
srcCon.CursorLocation = 3
destCon.Open("DSN=xxx;UID=xxx;PWD=xxx")
destCon.CursorLocation = 3

srcRs = New ADODB.RecordSet
srcRs.Open(sql, srcCon, ADODB.CursorTypeEnum.adOpenForwardOnly, ADODB.LockTypeEnum.adLockReadOnly)

While Not srcRs.EOF
     destRs = New ADODB.RecordSet
     destRs.Open(sql & " WHERE " & ※1, destCon, ADODB.CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockOptimistic)
     If destRs.EOF = True Then
          destRs.AddNew()
          Debug.Print("INSERT")
     Else     
          Debug.Print("UPDATE")
     End If

     Dim i As Integer
     For i = 0 To  srcRs.Fields.Count - 1
          destRs(columnName(i)).Value = srcRs(columnName(i)).Value
     Next
     destRs.Update()
     
     destRs.Close()
     destRs = Nothing

     srcRs.MoveNext()
End While

srcRs.Close()
srcRs = Nothing

Connectionクローズ処理


※1:主キー名=srcRsの主キーデータ という形


わかりにくいかもしれませんが、どうかよろしくお願いします。

編集 削除