ms access vba DoCmd.OpenQueryでクエリを開く クエリの実行、ということか?


DoCmd.SetWarnings False
DoCmd.OpenQuery "UpdateQtyA"        
DoCmd.SetWarnings True


上記のaccess vbaのコードは
accessファイル内に作成したクエリを実行しようとしていますが、

そのクエリを OpenQuery で開く処理、
というのはそのクエリを実行する、ということでしょうか?

そしてそのクエリがアクションクエリであれば
テーブルの作成や、データの更新を行う、ということでしょうか?

    ↓

はい、そのとおりです。  

### `DoCmd.OpenQuery` の動作
 
`DoCmd.OpenQuery "UpdateQtyA"` は、
Access 内で作成したクエリ(`UpdateQtyA`)を
**実行** する命令です。クエリを単に「開く」のではなく、
`UpdateQtyA` がアクションクエリ
(更新クエリ、削除クエリ、追加クエリ、テーブル作成クエリなど)の場合は、
そのアクションが実行されます。  

### `SetWarnings` の役割  

- `DoCmd.SetWarnings False`  

  → アクションクエリの実行時に表示される
  **確認メッセージ**(「○○件のレコードを更新します。
 
  続行しますか?」など)を **非表示** にする。  

- `DoCmd.SetWarnings True`
 
  → 実行後に **メッセージを元に戻す**
  (他の操作に影響を与えないようにするため)。  


### 具体的な処理例  

もし `UpdateQtyA` が
**更新クエリ(UPDATE クエリ)** であれば、
テーブル内のデータを更新する処理が実行されます。  

もし **削除クエリ(DELETE クエリ)** なら、
データが削除されます。  

もし **テーブル作成クエリ(MAKE TABLE クエリ)** なら、
新しいテーブルが作成されます。  


つまり、`DoCmd.OpenQuery` は、
作成済みのクエリを VBA から呼び出して実行するためのものです。



コメント