検索・抽出における条件式の書き方
解説
VBAを使ってのADO、DAOのレコードセットで検索や抽出に条件式およびSQLでWHERE句に使用する条件式の書式と事例です。
データ型によって記述方法が異なります。特に変数を使用する場合は注意が必要です。
(ポイント)
- Findメソッド、Filterメソッドの条件式はダブルクォーテーションで囲みます。
(検索の構文) recordset.Find 条件式
(抽出の構文) recordset.Filter 条件式
- SQL文では、WHERE句に条件式を記述します。
(抽出の構文) SELECT * FROM テーブル名 WHERE 条件式
- 比較演算子/論理演算子/算術演算子を使って抽出条件を記述します。
- テキスト型フィールドを使ってレコードを抽出する場合は,抽出する値をシングルクォーテーション(’)で囲みます。
- 日付型フィールドを使ってレコードを抽出する場合は,抽出する値をシャープ記号(#)で囲みます。
- 数値型フィールドを使ってレコードを抽出する場合は,そのまま記述します。
- 変数は評価しなければなりません。そのためダブルクォーテーションから外して接続子「&」で結合します。
検索および抽出条件式の記述例
等しい ( 「 = 」 を使用 )
数値型 | " [金額] = 1000 " | 金額が「1000」である |
数値型変数 | " [金額] = " & var | 金額が変数varと同じである |
文字列型 | " [氏名] = ' 山田太郎 ' " | 氏名は山田太郎である |
文字列型変数 | " [氏名] = ' " & var & " ' " | 氏名は変数varと同じである |
日付/時刻型 | " [入会日] = #4/1/2012# " | 入会日が2012年4月1日である |
等しくない ( 「 < > 」 を使用 )
数値型 | " [成績] < > 100 " | 成績が100ではない |
数値型変数 | " [成績] < > " & var | 成績が変数varではない |
文字列型 | " [都道府県] < > ' 東京都 ' " | 都道府県が東京都ではない |
日付/時刻型 | " [入会日] < > #4/1/2012# " | 入会日が2012年4月1日ではない |
より大きい(小さい) ( 「 > 」 「 < 」 を使用 )
数値型 | " [年齢] > 25 " | 年齢が25歳より上である |
数値型変数 | " [年齢] > " & var | 年齢が変数varより上である |
日付/時刻型 | " [生年月日] > #5/25/1965# " | 生年月日が1965年5月25日より後 |
以上(以下) ( 「 > = 」 「 <= 」 を使用 )
数値型 | " [年齢] > = 25 " | 年齢が25歳以上である |
数値型変数 | " [年齢] > = " & var | 年齢が変数var以上である |
日付/時刻型 | " [生年月日] > = #5/25/1965# " | 生年月日が1965年5月25日以降である |
部分一致 ( 「 Like 」 演算子を使 用)
文字列型 | " [氏名] Like ' 山 * ' " | 氏名が「山」で始まる |
文字列型 | " [氏名] Like ' * 山 * ' " | 氏名に「山」を含む |
文字列型変数 | " [氏名] Like ' * " & var & " * ' " | 氏名に変数varを含む |
範囲 ( 「 Between 」演算子を使用 )
日付/時刻型 | " [生年月日] Between #1/1/1995# And #12/31/2000# " | 生年月日が1995年1月1日から2000年12月31日の間である |
複合条件 ( 「 And 」 双方一致 「 Or 」 いずれか一致 を使用 )
双方一致 | " ( [入会日] > = #4/1/2012# ) And ( [都道府県] = ' 東京都 ' ) " | 2012年4月1日入会で、東京都である |
いずれか一致 | " ( [都道府県] = ' 東京都 ' ) Or ( [都道府県] = ' 神奈川県 ' ) " | 東京都または神奈川県である |
(この項終わり)