たま氏の覚え書き

KNIME・AccessVBA・Swift等、学習したことを覚え書き

AccessVBA_SQLを使用する際の構文

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