やりたいこと
Accessアプリケーションを開かずに定義済みのUpdateクエリとDeleteクエリを実行後、
本命のテーブルからデータを取得したい
SQLクエリ
Q_Update
SQL
1UPDATE T_Pass_RPA RIGHT JOIN T_Pass ON (T_Pass_RPA.System_Name = T_Pass.System_Name) AND (T_Pass_RPA.Syain_ID= T_Pass.Syain_ID) SET T_Pass_RPA.Syain_ID = T_Pass.Syain_ID, T_Pass_RPA.System_Name = T_Pass.System_Name, T_Pass_RPA.[Password] = T_Pass.[Password];
Q_Delete
SQL
1DELETE T_Pass.* 2FROM T_Pass;
試したこと
ADODB.Commandによるコマンド実行の場合、「SQL ステートメントが不正です」エラー
vba
1 Dim strDB As String: strDB = "C:hoge.accdb" 2 Dim cn As ADODB.Connection: Set cn = New ADODB.Connection 3 cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=""" & strDB & """" 4 5 Dim cm As ADODB.Command: Set cm = New ADODB.Command 6 With cm 7 .ActiveConnection = cn 8 .CommandText = "Q_Update" 9 .Execute 'ここでエラー 10 End With 11
Accessアプリケーションを起動してDoCmd.OpenQueryを行うこともできるが、アプリを開く分遅くなる
vba
1 Dim oApp As Access.Application: Set oApp = New Access.Application 2 With oApp 3 .OpenCurrentDatabase "C:hoge.accdb" 4 .DoCmd.OpenQuery "Q_Update", acViewNormal, acEdit 5 .DoCmd.OpenQuery "Q_Delete", acViewNormal, acEdit 6 .CloseCurrentDatabase 7 .Quit 8 End With
そのコードで普通に実行できると思いますけど。(念のために、サンプル作成して確認済み)
「SQL ステートメントが不正です」→ SQL ステートメントが間違っているのでは?
その更新クエリは抽出条件が設定してありますか。
だとすると、下記のバグが関係しているかも。
2019年11月アップデート(KB4484113、KB4484119、KB4484127ʌ - マイクロソフト コミュニティ
https://answers.microsoft.com/ja-jp/msoffice/forum/all/2019%e5%b9%b411%e6%9c%88%e3%82%a2%e3%83%83/4ac3fbfd-3010-4541-a5dc-f0c8a3adf8e3
更新クエリの抽出条件を削除して試してみてください。
後日SQLクエリを変更して実行してみます。