5.7 SQLの実行/INSERT、UPDATE系
 MDBファイルにあるテーブルを使う場合で、INSERT文やUPDATE文を実行したいときの方法です。これらを実行するときは、データベースオブジェクトのExecuteというメソッドで行います。

 これらのSQL文になぜExecuteというメソッドを使うかというと、INSERTUPDATEなどのSQLは、実行しても返ってくる情報(レコードセットなど)がないからです。
使用例
 Executeの使い方です。例では、開いたMDBファイルの住所録テーブルというテーブルの中にあるレコードの更新と、新しいレコードの追加を行っています。ちなみに、テーブルのレイアウトはAccessネタで使った住所録テーブルと同じです。詳しくは、Accessネタ住所録を作ってみようの2.住所録テーブルの作成を参照してください。

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

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

 ちなみに、Accessを終了する方法は5.11 Accessを終了するを見てくださいね。

Option Explicit

Dim objAccess
Dim objDB
Dim strSql

'Accessオブジェクトを作成します
Set objAccess = CreateObject("Access.Application")

'Access画面を表示します
objAccess.Visible = True

'既存のMDBファイルを開きます
objAccess.OpenCurrentDatabase("c:\happy\island.mdb")

'DBオブジェクトを作ります
Set objDB = objAccess.CurrentDb

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

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

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

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

'データベースをクローズします
objDB.Close

'MDBファイルを閉じます
objAccess.CloseCurrentDatabase

'各種オブジェクトの破棄
Set objDB = Nothing
Set objAccess = Nothing
 ※例では、Accessの画面をわざと表示しています

 ところで追加ですが、データが重複してるはずなのにエラーが出ないのは何故でしょうかねぇ…(汗)。しかも、追加だけじゃなく更新の方もキーが無くてもエラーが出ません。なぜなのでしょう…(汗)。てことで、取調中だったりします(汁)
Copyright(C) 1999-2006 結城圭介。 All rights reserved