• ベストアンサー

access ふたつのテーブル間でのデータ移動VB

win10 office365 accessのテーブルの table1のフィールド IDの数値を table2のフィールド ID (いずれも長整数型 数値型 重複あり 空白の許容なし) にコピーする操作ですが 幾度か お尋ねしてきていますが 今回 このやり方で やってみました http://www.mahoutsukaino.com/ac/ac2002/vba/vba16/v16.htm 以下のコードにおいて rs2.Update ここの部分が黄色くなって とまってしまいます しかし なぜか 数値の移行は 出来ていました ただ止まってしまうと 次に続けられなく困っています Public Function table2table1() Dim cn As adodb.Connection Dim rs1 As adodb.Recordset Dim rs2 As adodb.Recordset Set cn = Application.CurrentProject.Connection Set rs1 = New adodb.Recordset Set rs2 = New adodb.Recordset rs1.Open "table1", cn, adOpenStatic, adLockReadOnly rs2.Open "table2", cn, adOpenKeyset, adLockOptimistic rs1.MoveFirst Do Until rs1.EOF rs2.Find "ID='" & rs1!ID & "'" If rs2.EOF Then rs2.AddNew rs2![ID] = rs1![ID] rs2.Update End If rs1.movenext Loop rs1.Close rs2.Close cn.Close End Function 以上 すみません 宜しくお願い致します

質問者が選んだベストアンサー

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.1

こちらではエラーにはなりませんが、どのようなエラーでしょう。 ただ Do Until rs1.EOF rs2.Find "ID=" & rs1!ID & "" のところを Do Until rs1.EOF rs2.MoveFirst rs2.Find "ID=" & rs1!ID & "" にしておかないと数値がバラバラに並んでいたら正しく追加されないと思います。

sushidokei
質問者

お礼

IDの重複がテーブルの相互でないかどうかのコードを削除して、このコードを実行するまえに、そもそもIDが重複しない前提にしたら、うまく行きました Loopで重複を探すと確かに時間がかかります 有り難うございました。

Powered by GRATICA

その他の回答 (2)

  • chayamati
  • ベストアンサー率41% (260/624)
回答No.3

loop の次に MsgBox ("更新完了")  docmd.Beep で如何ですか 蛇足ですが、レコード処理時間はレコード数に比例します

sushidokei
質問者

お礼

参考になります 有り難うございました。

Powered by GRATICA
  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.2

入れてないと一番上でエラーになると思いますけど一応念のために 参照設定で「Microsoft ActiveX Data Objects x.x Library」にチェックは入ってますよね。

sushidokei
質問者

お礼

2.8だけでしたので6.1追加しました

Powered by GRATICA

関連するQ&A