式の概要

式は、数値演算、テキストの結合や抽出、データの検証など、Microsoft Office Access 2007 のさまざまな作業で使用できます。この記事では、式に関する基礎的な情報として、式を使用する状況、Microsoft Office Excel の数式との違い、および式の構成要素について説明します。

この記事の内容


式の概要

式は、いくつかの要素の組み合わせです。式を構成する要素には、組み込みまたはユーザー定義の関数 (Function プロシージャ: 値を返すプロシージャ。式の中で使用できます。Function プロシージャは、Function ステートメントで始まり、End Function ステートメントで終わります。)識別子 (識別子 (式): 式の要素。フィールド、コントロール、またはプロパティの値を参照します。たとえば、"Forms!受注!受注コード" は、[受注] フォームの [受注コード] コントロールの値を参照する識別子です。)演算子 (演算子: 式を構成する記号や単語。これにより、実行する計算の種類を指定します。演算子には、算術演算子、関係演算子、論理演算子、参照演算子などがあります。)、および単一の値として評価される定数 (定数: 計算されない、したがって変化しない値。たとえば、210 という数値、"四半期売上" という文字列などは、定数です。式や式の計算結果の値は定数ではありません。)があります。

式の構成要素

たとえば、次の式はこれらの 4 つの要素をすべて含んでいます。

=Sum([購入価格])*0.08

この例では、Sum() は組み込み関数、[購入価格] は識別子、* は数値演算子、0.08 は定数です。この式は、フォーム フッターまたはレポート フッターのテキスト ボックスで、一連の項目の売上税を計算するために使用できます。

この例よりもさらに複雑な式や単純な式も作成できます。たとえば、次のブール (ブール (Boolean): 真 (0 以外) と偽 (0) のどちらかに評価できる式。キーワード True と False を使って、それぞれ -1 および 0 の値を指定できます。フィールドのデータ型の Yes/No 型はブール型で、Yes の場合は -1、No の場合は 0 の値が格納されます。)式は演算子と定数のみで構成されます。

>0

この式は、0 より大きい数値と比較された場合に True を返し、0 以下の数値と比較された場合に False を返します。この式をコントロールまたはテーブル フィールドの "ValidationRule/入力規則" プロパティで使用すると、正の値のみが入力されるように強制できます。

Access では、計算の実行、文字の操作、データの検査などのさまざまな場面で式が使用されます。テーブル、クエリ、フォーム、レポート、およびマクロには、式を使用できるプロパティがあります。たとえば、コントロールの "ControlSource/コントロールソース" プロパティおよび "DefaultValue/既定値" プロパティで式を使用できます。テーブル フィールドの "ValidationRule/入力規則" プロパティでも式を使用できます。さらに、イベント プロシージャやモジュールの Microsoft Visual Basic for Applications (VBA) コードを作成するときにも、テーブルやクエリなどの Access オブジェクトで使用するものと同様の式を使用することがよくあります。

 メモ   式の構成要素の詳細については、後の「式の構成要素」を参照してください。

ページの先頭へ ページの先頭へ

式を使用する理由

Access では、次の処理に式を使用できます。

  • データとして直接存在しない値を計算する場合。クエリ フィールド、フォーム上のコントロール、およびレポート上のコントロールの値を計算できます。
  • テーブル フィールド、フォーム上のコントロール、またはレポート上のコントロールに既定値を設定する場合。これらの既定値は、テーブル、フォーム、またはレポートを開いたときに表示されます。
  • 入力規則を作成する場合。入力規則は、ユーザーがフィールドやコントロールに入力できる値を制御します。
  • クエリの条件を設定する場合。

Access で最もよく式が使用されるのは、直接には存在しないデータを計算する場合です。たとえば、クエリで明細項目の合計を計算する列を作成し、その値をフォームやレポートで使用できます。このような計算によって得られるクエリの列を、演算フィールドと呼びます。たとえば、次に示すクエリ内の式では、割引を適用して明細項目の合計が計算されます。

特別価格: CCur([受注明細].[単価]*[数量]*(1-[割引率])/100)*100

この式では、結果の列、つまり演算フィールドに "特別価格" という名前が付けられています。

自身の値を自動計算するテーブル フィールドは作成できません。必要であれば、別の場所 (クエリやフォームなど) で行われた計算の結果をテーブル フィールドに格納することはできます。ただし、特別な理由がない限り、計算の実行に必要な値のみを格納し、必要時に結果を計算する方が効率的です。

たとえば、請求書の明細項目の合計額を計算する必要があるとします。明細項目の合計額をデータベースに保存する代わりに、必要に応じてデータベースに格納されている他の 2 つの項目 (数量と単価) から合計額を計算します。請求書レポートのテキスト ボックス コントロールで、次の式を使用して値を計算します。

=CCur([数量]*[単価])

この式では、数量と単価を乗算し、その結果を通貨変換 (CCur) 関数で通貨型に変換します。注文ごとに割引額を計算することもできます。

演算フィールドは、複数のテーブル フィールドのデータで計算や演算を実行する必要がある場合に作成できます。たとえば、複数のテーブルで姓と名が別々のフィールドに格納されているとします。姓と名を組み合わせて 1 つのフィールドに表示する場合は、クエリで演算フィールドを作成します。既に説明したように、この種類の演算フィールドをテーブルに直接作成することは理にかなっているように思われますが、このような演算はテーブルではサポートされません。テーブルには、必要な式を追加するためのフィールドやプロパティがありません。

姓と名を結合する演算フィールドは、[姓] & " " & [名] のようになります。ここでは、"姓" フィールドの値、スペース文字 (引用符で囲まれたスペース)、および "名" フィールドの値が、アンパサンド (&) で結合されています。

Access では、式を使用してテーブルのフィールドやコントロールの既定値を指定することもできます。たとえば、日付フィールドの既定値を現在の日付に設定する場合は、そのフィールドの [既定値] プロパティ ボックスに「Date()」と入力します。

入力規則の設定にも式を使用できます。たとえば、コントロールまたはテーブル フィールドで入力規則を使用して、現在の日付以降の日付のみを受け付けるようにできます。その場合は、[入力規則] プロパティ ボックスの値を「>= Date()」に設定します。

さらに、式を使用してクエリの条件を設定できます。たとえば、一定の期間に出荷された注文の商品売上を確認するとします。日付範囲を定義する条件を入力すると、その条件に一致する行のみが返されます。たとえば、次のような式を作成します。

Between #1/1/2007# And #12/31/2007#

クエリに条件を追加して実行すると、指定した日付と一致する値のみが返されます。

ページの先頭へ ページの先頭へ

Access の式と Excel の数式の比較

Access の式と Excel の数式は、同様の要素を使用して結果を生成する点で似ています。Excel の数式と Access の式は、どちらも次の要素を 1 つ以上含んでいます。

  • 識別子    Excel での識別子は、A1、B3:C6、Sheet2!C32 など、ブック内の個々のセルまたはセル範囲の名前です。Access での識別子は、テーブル フィールド ([連絡先]![姓] など)、フォームまたはレポートのコントロール (Forms![タスク リスト]![説明] など)、またはフィールドやコントロールのプロパティ (Forms![仕事リスト]![説明].ColumnWidth など) の名前です。
  • 演算子    Access でも Excel でも、値を比較する場合やデータで単純な計算を実行する場合に演算子が使用されます。例として、+ (加算) や - (減算) があります。
  • 関数と引数    Access でも Excel でも、演算子だけでは実行できない処理のために関数と引数が使用されます。たとえば、フィールド内の値の平均を求めたり、計算結果を通貨書式に変換したりできます。関数の例として、SUMSTDEV などがあります。引数は、関数に渡す情報となる値です。Access と Excel には多数の関数が用意されていますが、類似する関数の名前が異なる場合があります。たとえば、Excel の AVERAGE 関数は Access の AVG 関数に相当します。
  • 定数    Access でも Excel でも、定数は変化しない値です。たとえば、式で計算されないテキスト文字列や数字があります。

Access の式では、Excel の数式と同様の演算子と定数が使用されますが、識別子と関数は異なります。Excel の数式は 1 か所 (つまりワークシートのセル) でしか使用できませんが、Access の式は、多くの場所で、次のようなさまざまな作業に使用できます。

  • フォームやレポートに演算コントロールを作成する
  • クエリに演算フィールドを作成する
  • クエリの条件として使用する
  • フィールド、またはフォーム上のコントロールに入力されるデータを検証する
  • レポートでデータをグループ化する

Access の式でも Excel の数式でも、数値演算子を使用して数値や日付/時刻値を計算できます。たとえば、顧客に提示する割引価格を計算するには、Excel の数式「=C2*(1-D2)」または Access の式「= [単価]*(1-[割引率])」を使用できます。

また、Access の式および Excel の数式では、文字列演算子を使用して文字列の連結や分割などの操作を行うことができます。たとえば、姓と名を連結して 1 つの文字列にするには、Excel の数式「=D3 & " " & D4」または Access の式「= [姓] & " " & [名]」を使用できます。

ページの先頭へ ページの先頭へ

式の構成要素

式を構成する要素には、識別子、演算子、関数と引数、定数、および値があります。以降のセクションでは、各構成要素についてさらに詳しく説明します。また、各セクションの例で式の構文を簡単に説明します。

識別子

識別子は、フィールド、プロパティ、またはコントロールの名前です。式では、識別子を使用してフィールド、プロパティ、またはコントロールに関連付けられている値を参照します。たとえば、=[締切日]-[発送日] という式があるとします。この式では、"締切日" フィールドまたはコントロールの値から、"発送日" フィールドまたはコントロールの値が差し引かれます。この場合、"締切日" と "発送日" の両方が識別子となります。

演算子

Access では、+-* (乗算)、/ (除算) などの一般的な算術演算子を始めとするさまざまな演算子がサポートされています。また、< (より小) や > (より大) などの比較演算子を使用した値の比較、&+ などの文字列演算子を使用した文字列の連結、NotAnd などの論理演算子を使用した真偽値の判定が可能であるほか、Access 固有のその他の演算子も使用できます。

関数と引数

関数は、式で使用できる組み込みのプロシージャです。関数は、値の計算、テキストや日付の操作、データの集計などのさまざまな操作に使用します。たとえば、よく使用される関数の 1 つに、現在の日付を返す Date 関数があります。Date 関数にはさまざまな用途があり、たとえば、テーブルのフィールドに既定値を設定する式で使用できます。この場合、ユーザーが新しいレコードを追加するたびに、既定でフィールドの値が現在の日付に設定されます。

一部の関数には引数が必要です。引数は、関数への入力となる値です。複数の引数を必要とする関数では、引数をコンマで区切って指定します。たとえば、Date 関数を使用する次の式を見てください。

=Format(Date(),"mmmm d, yyyy")

この例では、2 つの引数が使用されています。最初の引数は、現在の日付を返す Date() 関数です。この引数とコンマで区切られている 2 番目の引数 ("mmmm d, yyyy") は、返された日付値の書式設定方法を Format 関数に指示するテキスト文字列です。このテキスト文字列は引用符で囲む必要があります。この式は、ある関数の戻り値を別の関数の引数として使用できることも示しています。ここでは、Date() が引数として扱われています。

関数と式の構文の詳細については、[参照] セクションのリンク先を参照してください。

定数

定数とは、Access の実行中に値が変化しない項目です。TrueFalseNull の各定数は、式で頻繁に使用されます。VBA コードで独自の定数を定義し、VBA プロシージャで使用することもできます。VBA は、Access で使用されるプログラミング言語です。

 メモ   VBA の定数を、式で使用するユーザー定義関数で使用することはできません。たとえば、VBA には、vbSunday (日曜日) や vbMonday (月曜日) などの曜日を表す定数があります。それぞれの定数には数値が対応付けられています。たとえば、vbSunday の数値は 1、vbMonday の数値は 2 です。これらの定数を、式から呼び出されるユーザー定義関数で使用することはできません。代わりに、数値を使用する必要があります。

式では、数値 1,254 や文字列 "1 から 10 までの値を入力" などのリテラル値を使用できます。必要に応じて、符号や小数点を含んだ一連の桁を表す数値も使用できます。符号がない場合は正の値と見なされます。負の値を指定する場合は、負符号 (-) を付加します。また、指数表現を使用することも可能です。その場合は、E または e と、指数符号を付加します (1.0E-6 など)。

テキスト文字列を定数として使用する場合は、Access で正しく解釈されるように、対象の文字列を引用符で囲みます。引用符が自動的に付加される場合もあります。たとえば、入力規則やクエリ条件の式にテキストを入力すると、そのテキストが自動的に引用符で囲まれます。

たとえば、「東京都」と入力すると、式の中では自動的に "東京都" と表示されます。式の結果として、実際に引用符で囲まれた文字列を生成するには、二重引用符で囲まれた文字列をさらに単一引用符 (') で囲むか、または二重引用符 (") で 3 回囲みます。たとえば、次の 2 つの式は同じ内容です。

Forms![連絡先]![都道府県].DefaultValue = ' "東京都" '

Forms![連絡先]![都道府県].DefaultValue = " " "東京都" " "

日付/時刻値を使用する場合は、値を番号記号 (#) で囲みます。たとえば、#7-3-07#、#7-Mar-07#、#Mar-7-2007#、#2007/03/07# は、いずれも有効な日付/時刻値です。Access では、# 文字で囲まれた有効な日付/時刻値が検出されると、自動的にその値が日付/時刻型として処理されます。

ページの先頭へ ページの先頭へ

式の例

Access の式の例とその一般的な用途を次の表に示します。

目的
=[締切日]-[出荷日] レポート上の 2 つのテキスト ボックス コントロール ([締切日] と [出荷日]) の日付値の差を計算します。
Date() 日付/時刻型のテーブル フィールドの既定値を、現在の日付に設定します。
特別価格: CCur([受注明細].[単価]*[数量]*(1-[割引率])/100)*100 クエリで "特別価格" という名前の演算フィールドを作成します。
Between #1/1/2007# And #12/31/2007# クエリで日付/時刻型フィールドに対する条件を指定します。
=[受注サブフォーム].Form!受注小計 [受注] フォーム上にある [受注サブフォーム] の [受注小計] コントロールの値を返します。
>0 テーブルの数値フィールドに入力規則を設定します。この場合、ユーザーはゼロを超える値を入力する必要があります。

式によって、等号 (=) 演算子で始まっている場合とそうでない場合があります。フォームまたはレポートでコントロールの値を計算する場合は、式の先頭に = 演算子を指定します。それ以外の場合 (クエリで式を入力する場合や、フィールドまたはコントロールの "DefaultValue/既定値" プロパティや "ValidationRule/入力規則" プロパティに式を入力する場合など) は、テーブルのテキスト フィールドに式を追加するのでない限り、= 演算子は使用しません。クエリに式を追加するときなど、場合によっては = 演算子が自動的に削除されます。

 
 
適用対象:
Access 2007