はじめまして。
今データベースを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の主キーデータ という形
わかりにくいかもしれませんが、どうかよろしくお願いします。