- 締切済み
パススルークエリ&ACCESSテーブル VBA抽出方法
ACCESSパススルークエリでSQLサーバーのテーブルからデータをインポートする場合において ACCESSのテーブルにあるデータを抽出条件としたいのですがSQL文の記述方法がわからなくて困っております。 根本的な考え方が間違っている可能性が高いのですがどのように記述したらよいか教えていただけますでしょうか。 よろしくお願いいたします。 ・SQLサーバーのテーブル名(S_USR) USRID MAIL 10001 10001@test.com 10002 10002@test.com 10003 10003@test.com ・ACCESSのテーブル名(T_USR) USRID 10001 10003 ・パススルークエリ名(Q_USR)←ACCESS上 ・欲しい結果(T_RESULT)←ACCESS上のテーブル USRID MAIL 10001 10001@test.com 10003 10003@test.com 自分で考えたVBAです。 Private Sub Command1_Click() Dim db As DAO.Database Dim rs As DAO.Recordset Dim qDef As QueryDef Dim tDef As TableDef Dim SQLD As String Dim SQLA As String Set db = CurrentDb 'ACCESSテーブル内のデータを消す SQLD = "DELETE * FROM T_RESULT" DoCmd.RunSQL SQLD 'クエリの更新 db.QueryDefs.Delete "Q_USR" Set qDef = db.CreateQueryDef("Q_USR") 'ODBC接続実施 qDef.Connect = "ODBC;" 'フォームから取得したパラメーターを使ったクエリの設定 qDef.SQL = "select USRID, MAIL from S_USR where ID.USRID=S_USR" qDef.ReturnsRecords = True Set rs = qDef.OpenRecordset(dbOpenSnapshot,dsbSQLPassThrough,dbReadOnly) '追加クエリ SQLA = "INSERT INTO T_RESULT (USRID, MAIL) FROM Q_USR (USRID, MAIL) DoCmd.RunSQL SQLA rs.Close db.Close MsgBox "終了" Exit Sub End Sub
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- O_cyan
- ベストアンサー率59% (745/1260)
>ACCESSのテーブルにあるデータを抽出条件としたい qDefに代入するSQLを SELECT USRID, MAIL FROM S_USR INNER JOIN T_USR ON S_USR.USRID = T_USR.USRID とすれば良いのでは。