ACCESS VBA 2つのテーブルから抽出
ACCESS VBA初心者です
見よう見まねで作成してみたのですが、デバックになってしまい先に進めません
どなたか、どこがどう違うのか教えてください
テーブル1とテーブル2の15項目ほどをぶつけて
一致しないレコードを抽出し、その抽出したレコードを既存のテーブル3にコピーをしたいのですが、その方法がわかりません
Sub QQ()
Dim DB As DAO.Database
Set DB = CurrentDb()
DB.Execute "DELETE * FROM テーブル3;"
Dim strSQL As String
strSQL = "INSERT INTO テーブル3 ( AAA, BBB, CCC, DDD, EEE, FFF, GGG, HHH, III, JJJ ) "
strSQL = strSQL & " SELECT テーブル1.AAA, テーブル1.BBB, テーブル1.CCC, テーブル1.DDD, テーブル1.EEE, テーブル1.FFF, テーブル1.GGG, テーブル1.HHH, テーブル1.III, テーブル1.JJJ, FROM AAA;"
DB.Execute strSQL
Dim TB_テーブル2 As DAO.Recordset
Dim TB_テーブル3 As DAO.Recordset
Set TB_テーブル2 = DB.OpenRecordset("Select * from テーブル2;")
While TB_テーブル2.EOF = False
Debug.Print TB_テーブル2![AAA]
Debug.Print TB_テーブル2![BBB]
Debug.Print TB_テーブル2![CCC]
Debug.Print TB_テーブル2![DDD]
Debug.Print TB_テーブル2![EEE]
Debug.Print TB_テーブル2![FFF]
Debug.Print TB_テーブル2![GGG]
Debug.Print TB_テーブル2![HHH]
Debug.Print TB_テーブル2![III]
Debug.Print TB_テーブル2![JJJ]
strSQL = "SELECT テープ3.* FROM テーブル3 "
strSQL = strSQL & "WHERE (((テーブル3.AAA)='" & TB_テーブル2![AAA] & "') " ←デバックヵ所
strSQL = strSQL & " AND ((テーブル3.BBB)='" & TB_テーブル2![BBB] & "') "
strSQL = strSQL & " AND ((テーブル3.CCC)='" & TB_テーブル2![CCC] & "') "
strSQL = strSQL & " AND ((テーブル3.DDD)='" & TB_テーブル2![DDD] & "') "
strSQL = strSQL & " AND ((テーブル3.EEE)='" & TB_テーブル2![EEE] & "') "
strSQL = strSQL & " AND ((テーブル3.FFF)='" & TB_テーブル2![FFF] & "') "
strSQL = strSQL & " AND ((テーブル3.GGG)='" & TB_テーブル2![GGG] & "') "
strSQL = strSQL & " AND ((テーブル3.HHH)='" & TB_テーブル2![HHH] & "') "
strSQL = strSQL & " AND ((テーブル3.III)='" & TB_テーブル2![III] & "') "
strSQL = strSQL & " AND ((テーブル3.JJJ)=" & TB_テーブル2![JJJ] & "));"
Set TB_テーブル3 = DB.OpenRecordset(strSQL)
Debug.Print "COUNT=" & TB_テーブル3.RecordCount
If TB_CCC.RecordCount > 0 Then
Debug.Print "削除"
TB_テーブル3.Delete
Else
Debug.Print "追加"
TB_テーブル3.AddNew
TB_テーブル3![AAA] = TB_テーブル2![AAA]
TB_テーブル3![BBB] = TB_テーブル2![BBB]
TB_テーブル3.Update
End If
TB_テーブル3.Close
TB_テーブル2.MoveNext
Wend
TB_テーブル2.Close
DB.Close
End Sub
お礼
バグですか!思いがけない原因でした。そういうこともあるのですね。ありがとうございました。