数式は、数学的計算の実行、テキストの結合または抽出、データの検証など、Microsoft Access のさまざまなタスクに使用できます。 この記事では、式に関する概要情報を提供します。式を使用するタイミング、そのコンポーネント パーツの概要、および Microsoft Excel の数式との比較方法について説明します。
この記事の内容
式の概要
Access に何かをしてもらいたい場合は、Access の言語で指示する必要があります。 たとえば、Access に 「Customers テーブルの BirthDate フィールドを見て、顧客の誕生年を教えてください」と伝えたいとします。この式は次のように記述できます。
DatePart("yyyy",[Customers]![BirthDate])
この式は 、DatePart 関数と 2 つの引数値 ( "yyyy" と [Customers]![BirthDate]) で構成されます。
この式を詳しく見ていきましょう。
1 DatePart は、日付を調べ、特定の部分を返す関数です。 この場合、最初の 2 つの引数が使用されます。
2 interval 引数は、返す日付のどの部分を Access に通知します。この場合、 "yyyy" は、返された日付の年部分のみを必要とすることを Access に通知します。
3 日付引数は、日付値を検索する場所を Access に指示します。この場合、[Customers]![BirthDate] は、Customers テーブルの [BirthDate] フィールドで日付を検索するように Access に指示します。
式の使用方法
式は次のように使用できます。
- データ内に直接存在しない値を計算する。 テーブルやクエリのフィールドで値を計算することも、フォームやレポートのコントロールで値を計算することもできます。
- テーブル フィールドの既定値、またはフォームやレポート上のコントロールの既定値を設定する。 これらの既定値はテーブル、フォーム、レポートを開くたびに表示されます。
- 入力規則を作成し、ユーザーがフィールドやコントロールにどのような値を入力できるかを制御します。
- クエリの抽出条件を定義して、希望のサブセットに結果を制限します。
値の計算
Access で式を使用する最も一般的な方法の 1 つは、そのままの状態ではデータに存在しない値を計算することです。 そのような計算の結果であるテーブル列またはクエリは、集計フィールドと呼ばれます。 集計フィールドは、2 つ以上のテーブルのフィールドを組み合わせて作成できます。 たとえば、多くのテーブルでは名と姓が別のフィールドに格納されています。 それらの名と姓を結合して、1 つのフィールドに表示する場合、テーブルまたはクエリに集計フィールドを作成します。
[FirstName] & " " & [LastName].
この場合、アンパサンド (&) は、 FirstName フィールドの値、スペース文字 (引用符で囲まれたスペース)、および LastName フィールドの値を結合します。
既定値の定義
Access で式を使用して、テーブルのフィールドの既定値やコントロールの既定値を設定することもできます。 たとえば、日付フィールドの既定値を現在の日付に設定するには、そのフィールドの [既定値 ] プロパティ ボックスに次のように入力します。
Date()
入力規則の作成
さらに、式を使用して入力規則を設定することができます。 たとえば、コントロールまたはテーブル フィールドで入力規則を使用し、現在の日付以降の日付の入力を強制することができます。 この場合、[入力規則] プロパティ ボックスに値を次のように入力します。
>= Date()
クエリの抽出条件の定義
最後になりますが、式を使用して、クエリの条件を設定することもできます。 たとえば、特定の期間に注文を受けて出荷した製品の売上を確認したいとします。 日付範囲を定義する条件を入力すると、条件に一致する行のみが返されます。 たとえば、式は次のようになります。
Between #1/1/2017# And #12/31/2017#
クエリに条件を追加してからクエリを実行すると、指定した日付に一致する値だけが返されます。
式の例
次の表に、Access 式のサンプルとそれらの一般的な使い方を示します。
| 式 | 用途 |
|---|---|
=[RequiredDate]-[ShippedDate] |
レポート上の 2 つのテキスト ボックス コントロール (RequiredDate と ShippedDate という名前) の日付値の差異を計算します。 |
Date() |
日付/時刻テーブル フィールドの既定値を現在の日付に設定します。 |
Between #1/1/2017# And #12/31/2017# |
クエリ内の日付/時刻フィールドの条件を指定します。 |
=[Orders Subform].Form!OrderSubtotal |
Orders フォーム上の Orders サブフォームにある OrderSubtotal コントロールの値を返します。 |
>0 |
テーブル内の数値フィールドの入力規則を設定します。— ユーザーは 0 より大きい値を入力する必要があります。 |
式の中には、等しい (=) 演算子で始まる式もあれば、そうでない式もあります。 フォームまたはレポートのコントロールの値を計算するときは、 = 演算子を使用して式を開始します。 クエリに式を入力する場合や、フィールドまたはコントロールの DefaultValue または ValidationRule プロパティに式を入力する場合など、テーブル内の Text フィールドに式を追加しない限り、 = 演算子は使用しません。 クエリに式を追加する場合など、場合によっては、 = 演算子が自動的に削除されます。
式の構成要素
式は、使用可能な複数の構成要素で構成され、単独で、または組み合わせて使用して、結果を得ることができます。 これらの構成要素は次のとおりです。
- 識別子 フォームまたはレポートのテーブルのフィールド名やコントロール名、フィールドまたはコントロールのプロパティ。
-
演算子 たとえば、
+(プラス) や-(マイナス) などです。 - 関数 たとえば、SUM や AVG などです。
- 定数 テキスト文字列や、式によって計算されるものではない数値などの変更のない値。
- 値 "1 から 10 までの数値を入力してください" などの文字列、または操作で使用される数値 (1,254 など) を入力します。
以降のセクションでは、これらのコンポーネントについてさらに詳しく説明します。
識別子
識別子はフィールド、プロパティ、またはコントロールの名前です。 式の中の識別子は、フィールド、プロパティ、コントロールに関連付けられられている値を参照するために使用します。 たとえば、式の =[RequiredDate]-[ShippedDate]を考えてみましょう。 この式は、RequiredDate フィールドまたはコントロールの値から、ShippedDate フィールドまたはコントロールの値を減算します。 この式では、 RequiredDate と ShippedDate の両方が識別子として機能します。
演算子
Access では、 +、 -、 * (乗算)、 / (除算) などの一般的な算術演算子など、さまざまな演算子がサポートされています。 また、 < (未満) や > (より大きい) などの比較演算子を使用して、値の比較、テキストの連結 (結合) に & や + などのテキスト演算子、 Not や And などの論理演算子を使用して、True または false の値を決定したり、Access に固有のその他の演算子を使用することもできます。
関数
関数とは、式の中で使用できる組込み手続です。 関数は、値の計算、テキストや日付の操作、データの要約などさまざまな操作で使用します。 たとえばよく使われる関数の 1 つが DATE で、これは現在の日付を返します。 DATE 関数は、テーブル内のフィールドの既定値を設定する式など、さまざまな形で使用できます。 この例では、誰かが新しいレコードを追加するたびに、フィールドの値が現在の日付に既定で設定されます。
引数が必要な関数もあります。 引数とは、関数に渡される入力値です。 関数に複数の引数が必要な場合、引数をコンマで区切ります。 たとえば、次の例の DATE 関数について見てみましょう。
=Format(Date(),"mmmm d, yyyy")
この例では、2 つの引数が使用されています。
- 最初の引数は、現在の日付を返す
Date()関数です。 引数がない場合でも、関数のかっこは入れる必要があります。 - 2 番目の引数
"mmmm d, yyyy"は、最初の引数からコンマで区切られた形式で指定され、返される日付値の書式設定方法を FORMAT 関数に指示するテキスト文字列を指定します。 テキスト文字列は、引用符で囲む必要があります。
この式では、ある関数から返された値を、別の関数の引数として、入れ子にできることの多い例も示しています。 この場合、 Date() は引数として機能します。
定数
定数とは、Access が実行されるときに変わらない値です。
True、False、およびNull定数は、式でよく使用されます。
値
式には、1,254 などの数値や "1 から 10 の間の数値を入力する。" などの文字列のリテラル値を使用することができます。必要に応じて、記号と小数点を含む一連の数字などの数値を使用することもできます。
テキスト文字列値を使用する場合は、Access で正しく解釈されるようにそれらを引用符で囲みます。 状況によっては、Access が自動的に引用符を付けてくれます。 たとえば、入力規則またはクエリ条件の式にテキストを入力すると、Access によって自動的にテキスト文字列が引用符で囲まれます。
日付/時刻の値を使用するには、値をポンド記号 (#) で囲みます。 たとえば、 #3-7-17#, #7-Mar-17#と #Mar-7-2017# はすべて有効な日付/時刻値です。 Access は # 文字で囲まれた有効な日付/時刻の値を見つけると、この値を自動的に日付/時刻データ型として扱います。
Access の式と Excel の数式の比較
Access の式と Excel の数式は、どちらも同じような要素を使って結果を算出するという点で似ています。 Excel の数式と Access の式はどちらも次の要素を 1 つ以上含んでいます。
-
識別子 Excel では、識別子は、A1、B3:C6、Sheet2 など、ブック内の個々のセルまたはセル範囲の名前です。C32。 Access では、識別子はテーブル フィールドの名前 (
[Contacts]![First Name]など)、フォームまたはレポートのコントロール (Forms![Task List]![Description]など)、またはそれらのフィールドまたはコントロールのプロパティ (Forms![Task List]![Description].ColumnWidthなど) です。 -
演算子 Access と Excel の両方で、演算子を使用して値を比較したり、データに対して単純な計算を実行したりできます。 たとえば、
+(プラス) または-(マイナス) などがあります。 - 関数 Access と Excel の両方で、関数と引数は、演算子だけでは実行できないタスクを実行するために使用されます。たとえば、フィールド内の値の平均を見つけたり、計算結果を通貨形式に変換したりできます。 関数の例として、SUM や STDEV などがあります。 引数は、関数に情報を提供する値です。 Access と Excel のどちらでも多数の関数を選べますが、同じような関数でもプログラムによって名前が異なることがあります。 たとえば、Excel の AVERAGE 関数は Access の AVG 関数に相当します。
- 定数 Access でも Excel でも、定数は変化しない値です。つまり、式で計算されないテキスト文字列や数字です。
- 値 Access と Excel の両方で、値は同様の方法で使用されます。
Access の式で使用する演算子と定数は Excel の数式で使用するものと似ていますが、Access の式で使用する識別子と関数は違います。 Excel の数式が通常はワークシートのセル内でのみ使用されるのに対し、Access の式は、次のように Access 内の多くの場面でさまざまな目的に使用されます。
- フォームやレポート上に演算コントロールを作成する
- テーブルやクエリ内に集計フィールドを作成する
- クエリで条件として使用する
- フィールドやフォーム上のコントロールに入力されるデータを検証する
- レポート内のデータをグループ化する
Access 式または Excel 数式を使用すると、算術演算子を使って数値や日時を計算できます。 たとえば、顧客の割引価格を計算するには、Excel 数式 =C2*(1-D2) または Access 式 = [Unit Price]*(1-[Discount])を使用できます。
Access 式または Excel 数式を使用すると、文字列演算子を使って文字列を結合や分割したり、その他の操作を行うこともできます。 たとえば、名と姓を 1 つの文字列に結合するには、Excel 数式 =D3 & " " & D4 または Access 式 = [First Name] & " " & [Last Name]を使用できます。