AccessVBAにおいてSQLを使用する際の基本的な構文
AccessVBAでSQLステートメントを使用する場面とは
SQL(Structured Query Language)とはデータベースを操作するための言語で
データベースを扱うAccessにおいても、VBA内に記述して使用することができる
例えば以下のような場面で使用
・データベースに対して詳細な検索を行いたい
例)あいまい検索・任意の文字列を含むレコードの検索
・フィールドを増やしたい or 減らしたい
・フィールドにインデックスをつけたい等…
2つの記述例
DAOのQueryDefオブジェクトを使用する記述
SQL プロパティを使用して、クエリ定義を設定する方法
書式:
Dim SQLを格納する変数 As String
SQLを格納する変数 = 【ここにSQLステートメントを記述】
CurrentDb.QueryDefs("クエリ名").SQL = SQLを格納する変数
DoCmd.OpenQuery"クエリ名"
▼記述例▼
Sub InnerJoin_test() Dim JOINSQL As String JOINSQL = "SELECT テーブルA.郵便番号,都道府県,市区町村"& _ "FROM テーブルA INNER JOIN テーブルB" & _ "ON テーブルA.郵便番号=テーブルB.郵便番号:" CurrentDb.QueryDefs("POSTCODEクエリ").SQL = JOINSQL 'クエリを設定 DoCmd.OpenQuery"POSTCODEクエリ" '実行 End Sub
DocmdのRunSQLメソッドを使用する記述
RunSQLメソッドで引数に指定したSQLステートメントの内容を実行
この記述はアクションクエリ(更新や削除)のみにおいて使用が可能
書式:
Dim SQLを格納する変数 As String
SQLを格納する変数 = 【ここにSQLステートメントを記述】
DoCmd.SetWarnings False
DoCmd.RunSQL SQLを格納する変数
DoCmd.SetWarnings True
▼記述例▼
Sub AlterTable_test() Dim ALTER_T As String ALTER_T = "ALTER TABLE テーブル1 ADD COLUMN メモ欄 TEXT(20)" DoCmd.SetWarnings False 'システムのエラーメッセージの表示をさせなくする<br> DoCmd.RunSQL ALTER_T 'RunSQLの引数ALTER_Tを実行<br> DoCmd.SetWarnings True 'システムのエラーメッセージの表示設定を既定に戻す<br><br> End Sub