検索・抽出における条件式の書き方

解説

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 ( [都道府県] = ' 神奈川県 ' ) "東京都または神奈川県である

(この項終わり)