Access VBA から MySQL の「顧客マスタ(customer_master など)」テーブルを検索するクエリを作成するには、以下の3つの方法があります:
目次
✅ 方法1:パススルークエリを使う(推奨)
MySQL に直接 SQL を送信する方法。高速で安定。
1. パススルークエリ作成(VBA)
Sub RunPassThroughQuery() Dim db As DAO.Database Dim qdf As DAO.QueryDef Dim sql As String ' MySQL用のSQL(例:名前であいまい検索) sql = "SELECT * FROM customer_master WHERE name LIKE '%山田%';" Set db = CurrentDb ' 既存のクエリを削除して再作成 On Error Resume Next db.QueryDefs.Delete "qryCustomerSearch" On Error GoTo 0 ' パススルークエリを作成 Set qdf = db.CreateQueryDef("qryCustomerSearch") qdf.SQL = sql qdf.ReturnsRecords = True qdf.Connect = "ODBC;DSN=MySQL_DSN;UID=root;PWD=root;" ' DSN名を適切に変更 ' クエリを実行し、結果を表示 DoCmd.OpenQuery "qryCustomerSearch" End Sub
✅ 方法2:ADO を使って動的検索+フォームに出力
Sub SearchCustomerADO() Dim conn As Object Dim rs As Object Dim sql As String sql = "SELECT * FROM customer_master WHERE name LIKE '%山田%';" Set conn = CreateObject("ADODB.Connection") conn.Open "Driver={MySQL ODBC 8.0 ANSI Driver};Server=localhost;Database=testdb;UID=root;PWD=root;" ' 要調整 Set rs = conn.Execute(sql) ' フィールドを即時ウィンドウに出力(確認用) Do Until rs.EOF Debug.Print rs!id & " - " & rs!name rs.MoveNext Loop rs.Close conn.Close Set rs = Nothing Set conn = Nothing End Sub
✅ 方法3:リンクテーブル+通常のAccessクエリ
MySQL の customer_master
テーブルを Access に ODBCリンクしておけば、
Access クエリデザイナで直接:
SELECT * FROM customer_master WHERE name LIKE '*山田*';
と記述できます(AccessのLIKEは *
ワイルドカードを使う点に注意)。