データ アクセス オブジェクト (DAO) を操作するとき、コードに SQL ステートメントを記述する必要がある場合もあります。たとえば、QueryDef オブジェクトを新規作成する場合は、そのオブジェクトの SQL プロパティに有効な SQL 文字列を設定します。また、Recordset オブジェクトを作成するときにも SQL ステートメントが必要になる場合があります。
SQL ステートメントを効率よく構築するには、SQL ビューでクエリを作成し、デザイン グリッドに切り替えて、SQL ステートメントをコピーしてコード内に貼り付けます。
ユーザーが指定する値や、状況によって変化する値を使ってクエリを作成する場合は、クエリに変数やコントロールの値を含める必要があります。Jet データベース エンジンは SQL ステートメントをすべて処理しますが、変数やコントロールは処理しません。したがって、Access で最初にこれらの値を評価し、SQL ステートメントの文字列として Jet データベース エンジンに渡すことができるように、SQL ステートメントを構築する必要があります。
次の例では、簡単な SQL ステートメントを使用して QueryDef オブジェクトを作成します。このクエリは 1996 年 3 月 31 日以降に入力された [受注] テーブルにあるすべての受注を返します。
Dim dbs As Database, qdf As QueryDef, strSQL As String Set dbs = CurrentDb strSQL = "SELECT * FROM
受注WHERE
受注日>#96-3-31#;" Set qdf = dbs.CreateQueryDef("
第4
四半期", strSQL)
次の例では、変数に格納されている値を使って、同じ QueryDef オブジェクトを作成します。日付値を示す数値記号 (#) を SQL 文字列に含め、日付値と連結されるようにします。
Dim dbs As Database, qdf As QueryDef, strSQL As String Dim dteStart As Date dteStart = #96-3-31# Set dbs = CurrentDb strSQL = "SELECT * FROM
受注WHERE
受注日" _ & "> #" & dteStart & "#;" Set qdf = dbs.CreateQueryDef("
第4
四半期", strSQL)
次の例では、[受注] フォームの [受注日] というコントロールの値を使って QueryDef オブジェクトを作成します。コントロールは完全な参照で指定する必要があります。また、日付値を示す数値記号 (#) を SQL 文字列に含めます
Dim dbs As Database, qdf As QueryDef, strSQL As String Set dbs = CurrentDb strSQL = "SELECT * FROM
受注WHERE
受注日" _ & "> #" & Forms!
受注!
受注日& "#;" Set qdf = dbs.CreateQueryDef("
第4
四半期", strSQL)