2.13 SQLの実行
INSERT文やUPDATE文、DELETE文などのSQLを実行したいときの方法です。これらを実行するときは、データベースオブジェクトのExecuteメソッドを使います。

これらのSQLになぜExecuteというメソッドを使うかというと、INSERTUPDATEなどのSQLは、実行しても返ってくる情報(レコードセットなど)がないからです。
Executeの使用例
Executeの使い方です。例では、住所録テーブルというテーブルの中にあるレコードの更新と、新しいレコードの追加を行っています。

まずはUPDATE文ですが、@でSQLを組み立ててAでデータベースオブジェクトのExecuteメソッドを使って実行しています。SQLはstrSqlという変数の中にあります。

次にINSERT文ですが、BでSQLを組み立ててCで実行です。同じくデータベースオブジェクトのExecuteメソッドを使って実行しています。SQLは、これも同じくstrSqlという変数の中にあります。

ちなみにDAOの場合は、追加するときにデータが重複してもエラーが出なかったり、更新対象のキーが無くてもエラーが出なかったりするので注意しましょう。

Sub prcExecute2000()

    'Access VBA Tips
    '2.13 SQLの実行
    'Access2000以降での手順

    Dim daoDB As DAO.Database
    Dim strSQL As String

    'データベースのオープン(データベースオブジェクトの作成)
    Set daoDB = CurrentDb

    '@レコード更新のSQLを定義
    strSQL = "UPDATE  住所録テーブル " & _
             "   SET  漢字氏名 = '結城圭介' " & _
             "       ,カナ氏名 = 'ユウキケイスケ' " & _
             "       ,性別     =  1 " & _
             " WHERE  レコードキー = 1 "

    'Aレコードの更新のSQLを実行します
    daoDB.Execute strSQL

    'Bレコード追加のSQLを定義
    strSQL = "INSERT  INTO 住所録テーブル " & _
             "       (漢字氏名 " & _
             "       ,カナ氏名 " & _
             "       ,性別) " & _
             "VALUES ('埼京線之介' " & _
             "       ,'サイキョウセンノスケ' " & _
             "       ,1) "

    'Cレコード追加のSQLを実行します
    daoDB.Execute strSQL

    'データベースのクローズ
    daoDB.Close

End Sub
 ※Access2000以降の場合。ただし、参照設定が必要です。



Sub prcExecute97()

    'Access VBA Tips
    '2.13 SQLの実行
    'Access97までの手順

    Dim daoDB As Database
    Dim strSQL As String

    'データベースのオープン(データベースオブジェクトの作成)
    Set daoDB = DBEngine.Workspaces(0).Databases(0)

    '@レコード更新のSQLを定義
    strSQL = "UPDATE  住所録テーブル " & _
             "   SET  漢字氏名 = '結城圭介' " & _
             "       ,カナ氏名 = 'ユウキケイスケ' " & _
             "       ,性別     =  1 " & _
             " WHERE  レコードキー = 1 "

    'Aレコードの更新のSQLを実行します
    daoDB.Execute strSQL

    'Bレコード追加のSQLを定義
    strSQL = "INSERT  INTO 住所録テーブル " & _
             "       (漢字氏名 " & _
             "       ,カナ氏名 " & _
             "       ,性別) " & _
             "VALUES ('埼京線之介' " & _
             "       ,'サイキョウセンノスケ' " & _
             "       ,1) "

    'Cレコード追加のSQLを実行します
    daoDB.Execute strSQL

    'データベースのクローズ
    daoDB.Close

End Sub
 ※Access97までの場合。
Copyright(C) 1999-2006 結城圭介。 All rights reserved