HOME > 即効テクニック > AccessVBA > クエリ・SQL > クエリを作らずにSQL文を実行する

即効テクニック

クエリ・SQL

クエリを作らずにSQL文を実行する

(Access 97)

●概要●
オブジェクトとしてクエリを作らずに、VBAでその都度SQL文を実行する方法です。
DatabaseオブジェクトのExecuteメソッドを利用します。
●サンプルコード●
Sub SetNewStudent()
    Dim db As Database
    
    ' カレントデータベース セット
    Set db = CurrentDb
    
    ' 抽出ワークへ全学生をセット
    db.Execute "DELETE FROM t_抽出ワーク", dbFailOnError
    db.Execute "INSERT INTO t_抽出ワーク(個人ID)" & _
        " SELECT 個人ID FROM t_学生 ORDER BY 個人ID", dbFailOnError

    ' オブジェクト解放
    Set db = Nothing
End Sub
●備考●
Executeメソッドの第2引数に指定する定数によって処理の内容が異なってきます。
例えば(サンプルのように)、dbFailOnError を指定すると、エラーが発生時に更新をロールバックします。指定がなければ、矛盾した更新でも実行されます。

●注意●
Access2000の場合、デフォルトではDAOに参照設定されていません。
Visual Basic Editor(VBE)を開き、メニューの[ツール]−[参照設定]から、Microsoft DAO 3.6 Object Libraryにチェックを入れて下さい。
その際にMicrosoft ActiveX Data Object 2.1 Libraryよりも上に、DAOのチェックを持ってきて下さい