- 締切済み
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
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- piroin654
- ベストアンサー率75% (692/917)
SQL文を書く前に、まずは不一致クエリを作成みてください。 作成したクエリで必要なデータが表示されるか確認してみてください。 場合によっては少し手直しをする必要があるかもしれません。 そのときは補足してください。 次に、できたクエリを追加クエリに変更します。 追加先テーブルはテーブル3とします。 わからないところがあれば補足してください。
お礼
遅くなりました なんとかできました ありがとうございました