この記事では、Access で条件付き (ブール型とも呼ばれます) 式を作成する方法について説明します。 条件式は true または false のいずれかに評価され、指定した条件を満たす結果が返されます。 条件式で関数を使用する場合は、式の条件を満たしていない値に対してアクションを指定することもできます。 たとえば、利益マージンが 10% 以下のすべての売上を検索する式を作成し、それらの数値が赤い型で表示されるように指定するか、値をメッセージに置き換えることができます。
この記事の内容
条件式について
条件式は、データが条件を満たしているかどうかを確認し、結果に応じてアクションを実行する式の一種です。 たとえば、式は、指定した開始日より後の日付値を検索し、定義された開始日より前の日付を入力しようとするとエラー メッセージを表示できます。
条件式は同じ形式をとり、他の式と同じ基本的な構文を使用します。また、他の式と同じ方法で使用できます。
-
テーブル フィールドの場合は、フィールドの [検証規則 ] プロパティに式を追加します。 その後、ユーザーは、式の条件に一致する値をフィールドに入力する必要があります。 たとえば、[日付/時刻] フィールド で>=#1/1/2000# などの式を使用する場合、ユーザーは 2000 年 1 月 1 日以降の値を入力する必要があります。
-
フォームのコントロールの場合は、コントロールの [コントロール ソース ] プロパティまたは [検証規則] プロパティに式を追加できます。 通常、条件付き式を [検証規則] プロパティに追加し、値を計算する式を [コントロール ソース] プロパティに追加します。 たとえば、コントロールの検証規則プロパティで >=#1/1/2000# を使用すると、ユーザーが無効な日付を入力できなくなります。 コントロール ソース プロパティで Date() などの式を使用すると、現在の日付が既定値として表示されます。
-
クエリの場合は、[ フィールド] 行の空白セルに条件式を追加するか、クエリの [抽出条件 ] 行で式を使用できます。 [フィールド] 行で式を使用すると、クエリ結果に結果が列として表示されます。 式を既存のフィールドの条件として使用する場合、式はフィルターとして機能し、クエリから返されるレコードを制限します。
たとえば、クエリの [フィールド] 行で次の式を使用できます: =IIf([Order Date]<=#04/01/2018#,[Order Date],"Order entered after April 1") 式は日付条件を指定します (<=#04/01/2018#)。 クエリを実行すると、条件を満たすすべての日付値が表示され、条件を満たしていない日付値は"4 月 1 日以降に入力された注文" というメッセージに置き換えられます。 「 クエリに式を追加する 」セクションの手順では、クエリでこの式を使用する方法について説明します。
これに対し、クエリの [抽出条件 ] フィールドでこの式を使用すると、条件を満たす日付を持つレコードのみが返されます。 Between #04/01/2018# AND #05/15/2018# です。
式の作成と使用の詳細については、式の 作成に関する記事を参照してください。
条件式を作成する
このセクションの手順では、条件式をテーブル、フォームまたはレポートのコントロール、クエリに追加する方法について説明します。 各一連の手順では、少し異なる式を使用して[日付/時刻] フィールドの値をテストし、日付値が指定した条件を満たしているかどうかに基づいてアクションを実行します。
テーブル フィールドに式を追加する
-
ナビゲーション ウィンドウで、変更するテーブルを右クリックし、ショートカット メニューの [デザイン ビュー] をクリックします。
-
[ データ型] 列で、[日付/時刻] フィールドをクリックします。
-
[ フィールド プロパティ] の [ 全般 ] タブで、[ 検証規則 ] プロパティ ボックスをクリックし、次の式を入力します。
>=#01/01/2000#
注: 米国の日付形式を使用する必要はありません。 国/地域またはロケールの日付形式を使用できます。 ただし、次に示すように、日付値をポンド記号 (#) で囲む必要があります。
-
[ 検証テキスト ] の横にある列をクリックし、次のテキスト文字列を入力します。
日付は 2000 年 1 月 1 日より大きくする必要があります。
ここでも、ローカルの日付形式を使用できます。
-
変更を保存し、[データシート] ビューに切り替えます。 これを行うには、テーブルの [ドキュメント] タブを右クリックし、ショートカット メニューの [ データシート ビュー ] をクリックします。
-
2000 年 1 月 1 日より前の [日付/時刻] フィールドに日付値を入力します。 [ 検証規則 ] プロパティ ボックスに指定されたメッセージが表示され、式で true と評価される値を入力しない限り、フィールドを残すことはできません。
コントロールに式を追加する
-
ナビゲーション ウィンドウで、変更するフォームを右クリックし、ショートカット メニューの [ デザイン ビュー ] をクリックします。
-
日付/時刻フィールドにバインドされているコントロールを右クリックし、ショートカット メニューの [プロパティ ] をクリックします。
コントロールのプロパティ シートが表示されます。
-
[ データ ] タブまたは [ すべて ] タブで、[ 検証規則 ] の横にあるフィールドをクリックし、次の式を入力します。
>=#01/01/2000#
注: 米国の日付形式を使用する必要はありません。 国/地域またはロケールの日付形式を使用できます。 ただし、次に示すように、日付値をポンド記号 (#) で囲む必要があります。
-
[ 検証テキスト ] の横にある列をクリックし、次のテキスト文字列を入力します。
日付は 2000 年 1 月 1 日より大きくする必要があります。
-
変更を保存し、フォーム ビューに戻ります。 これを行うには、フォームの [ドキュメント] タブを右クリックし、ショートカット メニューの [ フォーム ビュー ] をクリックします。
クエリに式を追加する
-
ナビゲーション ウィンドウで、変更するクエリを右クリックし、ショートカット メニューの [デザイン ビュー] をクリックします。
-
デザイン グリッドの [フィールド] 行で空白のセルをクリックし、次の式を入力します。
=IIf([Field_Name]<=#04/01/2018# , [Field_Name] , "2018 年 4 月 1 日より後の日付")
式を入力するときは、Field_Nameの両方のインスタンスを Date/Time フィールドの名前に置き換えてください。 また、テーブルに 2018 年 4 月 1 日より前の日付が含まれていない場合は、式の日付を変更してデータを操作します。
-
変更を保存し、[ 実行 ] をクリックして結果を表示します。
式は次のように機能します。最初の引数 (=IIf([Field_Name]<=#04/01/2018#) は、データが満たす必要がある条件を指定します。日付は 2018 年 4 月 1 日以上である必要があります。 2 番目の引数 ([Field_Name]) は、条件が true の場合にユーザーに表示される内容 (フィールド内の日付) を指定します。 3 番目の引数 ("Date later than 1 April, 2018") は、データが条件を満たしていないときにユーザーに表示されるメッセージを指定します。
先に進むにつれて、すべての条件式で IIf 関数が使用されるわけではないことに注意してください。 また、 IIf 関数は、式自体ではなく、引数を必要とする式の一部であることを覚えておいてください。
式とその使用方法の詳細については、式を 構築する方法に関する記事を参照してください。
条件式の例
次の表の式は、true 値と false 値を計算する方法をいくつか示しています。 これらの式では 、IIf 関数 (イミディエイト If) を使用して条件が true か false かを判断し、条件が true の場合は 1 つの値を返し、条件が false の場合は別の値を返します。
詳細については、 IIf 関数 に関する記事を参照してください。
式 |
説明 |
=IIf([確認] = "Yes", "受注は確認されました。", "受注は確認できません。") |
[確認済み] フィールドの値が [はい] の場合は、"Order Confirmed" というメッセージを表示します。それ以外の場合は、"Order Not Confirmed" というメッセージが表示されます。 |
=IIf(IsNull([Country/region])," ", [Country/region]) |
[国/地域] フィールドの値が Null の場合は、空の文字列を表示します。それ以外の場合は、[国/地域] フィールドの値が表示されます。 |
=IIf(IsNull([Region]),[City]&" "& [PostalCode], [City]&" "&[Region]&" " &[PostalCode]) |
[地域] フィールドの値が Null の場合は、[市区町村] フィールドと [PostalCode] フィールドの値を表示します。それ以外の場合は、City、Region、PostalCode フィールドの値が表示されます。 |
=IIf(IsNull([RequiredDate] - [ShippedDate]), "Check for a missing date", [RequiredDate] - [ShippedDate]) |
[必須日付] フィールドから ShippedDate フィールドの値を減算した結果が Null の場合は、"不足している日付を確認してください" というメッセージを表示します。それ以外の場合は、RequiredDate フィールドと ShippedDate フィールドの値の差が表示されます。 |