式を使用すると、データであらゆることを実行できます。 たとえば、注文品を出荷した後に何日経過したかを調べたり、[名] と [姓] を [氏名] と結合したりすることができます。 次のセクションでは、式を作成する詳しい手順について説明します。
この記事の内容
フォームおよびレポートのコントロールの値を計算する
式をコントロールのデータ ソースとして使用するときは、演算コントロールを作成します。 たとえば、複数の在庫レコードを表示するレポートがあり、レポートのすべての項目を集計した合計をレポート フッターに作成するとします。
合計を計算するには、レポート フッターにテキスト ボックス コントロールを配置し、次の式にテキスト ボックスの "コントロール ソース" プロパティを設定します。
=Sum([table_field])
この場合、table_field は小計値を格納するフィールドの名前です。 このフィールドは、テーブルまたはクエリから取得できます。 Sum 関数は、table_field のすべての値の合計を計算します。
手順
-
ナビゲーション ウィンドウで、変更するフォームを右クリックし、ショートカット メニューの [レイアウト ビュー] または [デザイン ビュー] をクリックします。
-
式を入力するコントロールを選びます。
-
プロパティ シートが表示されていない場合は、F4 キーを押して表示します。
-
式を手動で作成するには、プロパティ シートの [データ] タブで、テキスト ボックスの "コントロール ソース" プロパティをクリックし、= の後に残りの式を入力します。 たとえば、上記の小計を計算するには、「=Sum([table_field])」と入力し、table_field を実際のフィールド名に置き換えます。
-
式ビルダーを使用して式を作成するには、プロパティ ボックスの [ビルド] ボタン クリックします。
式の入力が完了すると、プロパティ シートは次のようになります。
クエリ条件として式を使用する
クエリ結果を絞り込むには、クエリで抽出条件を使用します。 抽出条件を式として入力すると、その式に一致する行のみが返されます。
たとえば、出荷日が 2017 年の 1 から 3 月に発生したすべての注文を確認したいとします。 抽出条件を入力するには、クエリの日付/時刻列の [抽出条件] セルに、次の式を入力します。 この例では、[出荷日] という日付/時刻列が使用されます。 日付範囲を定義するには、次のように抽出条件を入力します。
Between #1/1/2017# And #3/31/2017#
[出荷日] 列は、次のようになります。
"注文" テーブルの各レコードで、[出荷日] 列の値が指定した日付範囲にある場合、そのレコードはクエリの出力に含まれています。 式では、日付をシャープ記号 (#) で囲むことにご注意ください。 Access で、シャープ記号 () で囲まれた値は日付/時刻のデータ型として処理されます。 このような値を日付/時刻データとして処理することで、一方からもう一方への減算などの計算を値に対して実行することができます。
手順
-
ナビゲーション ウィンドウで、変更するクエリを右クリックし、ショートカット メニューの [デザイン ビュー] をクリックします。
-
入力対象の列の [抽出条件] セルをクリックします。
-
手動で式を作成するには、抽出条件式を入力します。 抽出条件式の前に = 演算子を入力しないでください。
-
式ビルダーを使用して式を作成するには、リボンで [デザイン] をクリックし、[クエリ設定] グループで [ビルダー] をクリックします。
式の編集領域を大きくするには、[抽出条件] セルにカーソルを置いて、Shift キーを押しながら F2 キーを押すと、[ズーム] ボックスが表示されます。
ヒント To make the text more readable, select Font.
クエリに集計フィールドを作成する
クエリを設計しており、クエリの他のフィールドを使用して、計算の結果を表示したいとします。 集計フィールドを作成するには、クエリの [フィールド] 行にある空白セルに式を入力します。 たとえば、"数量" フィールドと "単価" フィールドを含むクエリがある場合、クエリの [フィールド] 行に次の式を入力して 2 つを乗算し、[明細金額] の集計フィールドを作成することができます。
Extended Price: [Quantity] * [Unit Price]
Prefacing the expression with the text Extended Price: names the new column Extended Price. This name is often called an alias. If you do not supply an alias, Access will create one, such as Expr1.
クエリを実行すると、次の図に示すように、各行で計算が実行されます。
手順
-
ナビゲーション ウィンドウで、変更するクエリを右クリックし、ショートカット メニューの [デザイン ビュー] をクリックします。
-
集計フィールドを作成する列の [フィールド] セルをクリックします。
-
手動で式を作成するには、式を入力します。
Do not precede the criteria expression with the = operator; instead, begin the expression with a descriptive label followed by a colon. For example, type Extended Price: to provide the label for an expression that creates a calculated field called Extended Price. Then, enter the criteria for your expression after the colon.
-
To create your expression by using the Expression Builder, on the ribbon, click Design, and then in the Query Setup group, click Builder.
テーブルに集計フィールドを作成する
Access では、テーブルの中に集計フィールドを作成することができます。 これにより、計算を行うためのクエリは必要なくなります。 たとえば、注文の各項目の数量、価格、税率を表示するテーブルがある場合は、次の式で合計金額を表示する集計フィールドも追加することができます。
[Quantity]*([UnitPrice]+([UnitPrice]*[TaxRate]))
計算には他のテーブルやクエリのフィールドを含めることはできません。また、計算結果は読み取り専用です。
手順
-
ナビゲーション ウィンドウでテーブルをダブルクリックして開きます。
-
テーブルの右端の列まで横方向にスクロールし、[クリックして追加] 列見出しをクリックします。
-
表示される一覧で [集計フィールド] をクリックし、結果に必要なデータ型をクリックします。 Access により、式ビルダーが表示されます。
-
このフィールドに必要な計算を入力します。たとえば、次のように入力します。
[Quantity] * [Unit Price]
集計フィールドの式の先頭に等号 (=) を入力しないでください。
-
[OK] をクリックします。
集計フィールドが追加され、フィールド名を入力できるようにフィールドの見出しが強調表示されます。
-
集計フィールドの名前を入力し、Enter キーを押します。
テーブルのフィールドに既定値を設定する
You can use an expression to specify a default value for a field in a table – a value that Access uses for new records unless another value is provided. For example, suppose that you want to automatically insert the date and time into a field called OrderDate whenever someone adds a new record. To do this, you might use the following expression:
Now()
手順
-
ナビゲーション ウィンドウで、変更するテーブルをダブルクリックします。
テーブルがデータシート ビューに表示されます。
-
変更するフィールドを選びます。
-
リボンの [ テーブル フィールド] をクリックし、[ プロパティ ] グループで [ 既定値] をクリックします。 Access により、式ビルダーが表示されます。
-
ボックスに式を入力します。その際、式の先頭に等号 (=) を付けるようにしてください。
Note テーブルのフィールドにコントロールを関連付けたときに、コントロールとテーブルのフィールドの両方に既定値が設定されている場合は、コントロールの既定値がテーブルのフィールドの既定値よりも優先されます。
コントロールに既定値を設定する
式は他に、コントロールの "既定値" プロパティで使用されるのが一般的です。 コントロールの "既定値" プロパティは、テーブルのフィールドの "既定値" プロパティと似ています。 たとえば、テキスト ボックスの既定値として現在の日付を使用するには、次の式を使用します。
Date()
この式では、Date 関数を使用して現在の日付を返しますが、時刻は返しません。 テーブルのフィールドにテキスト ボックスを連結した場合、フィールドに既定値が設定されていると、コントロールの既定値がテーブルのフィールドよりも優先されます。 多くの場合、テーブルのフィールドで "既定値" プロパティを設定する方が有効です。 こうすることで、さまざまなフォームの複数のコントロールが同じテーブルのフィールドに基づいている場合、同じ既定値が各コントロールに適用され、各フォームに同じデータが入力されるようになります。
手順
-
ナビゲーション ウィンドウで、変更するフォームまたはレポートを右クリックし、ショートカット メニューの [デザイン ビュー] または [レイアウト ビュー] をクリックします。
-
変更するコントロールを選びます。
-
プロパティ シートが表示されていない場合は、F4 キーを押して表示します。
-
プロパティ シートの [すべて] タブをクリックし、[既定値] プロパティ ボックスをクリックします。
-
式を入力するか、プロパティ ボックスの [ ビルド ] ボタン クリックして、 式ビルダーを使用して式を作成します。
テーブルのフィールドまたはレコードに入力規則を追加する
Expressions are very useful for validating data as it is entered into the database – keeping bad data out. In tables, there are two kinds of validation rules: Field validation rules (which prevent users from entering bad data in a single field), and record validation rules (which prevent users from creating records that don't meet the validation rule). You use expressions for both kinds of validation rules.
たとえば、"手持在庫" という名前のフィールドがある "在庫" というテーブルで、0 以上の値を入力するようにユーザーに強制する規則を設定したいとします。 つまり、在庫を負の数にすることはできません。 これを行うには、"手持在庫" フィールドで次の式をフィールドの入力規則として使用します。
>=0
手順:フィールドまたはレコードの入力規則を入力する
-
ナビゲーション ウィンドウで、変更するテーブルをダブルクリックします。 テーブルがデータシート ビューに表示されます。
-
フィールドの入力規則を入力する場合、変更するフィールドを選びます。
-
リボンで [ テーブル フィールド] をクリックし、[ フィールドの検証 ] グループで [ 検証] をクリックし、[ フィールドの検証規則 ] または [ 検証規則] をクリックします。 Access により、式ビルダーが表示されます。
-
抽出条件の入力を開始します。 たとえば、すべての値を 0 以上にする必要があるフィールドの入力規則の場合は、次のように入力します。
>=0
式の前に等号 (=) を付けないでください。
Validation rule expressions are Boolean, which means that they are either True or False for any given input value. A validation rule must be True for the value or Access doesn’t save the input and displays a validation message indicating the error. In this example, if you enter a value for the Units On Hand field that is less than zero, the validation rule is False, and Access does not accept the value. If you haven't entered a validation message as described in the following section, Access displays its own message to indicate that the value you entered is prohibited by the validation rule for the field.
手順:検証メッセージを入力する
To make your database easier to use, you can enter custom validation messages. These replace the generic messages that Access displays when data does not match a validation rule. You can use custom validation message to provide specific information that helps the user enter the correct data, for example, "The Units On Hand value cannot be a negative number."
-
ナビゲーション ウィンドウで、変更するテーブルをダブルクリックします。
テーブルがデータシート ビューに表示されます。
-
フィールドの検証メッセージを作成する場合、入力規則を追加するフィールドを選びます。
-
リボンで [ テーブル フィールド] をクリックし、[ フィールドの検証 ] グループで [ 検証] をクリックし、[ フィールド検証メッセージ ] または [ 検証メッセージ] をクリックします。
-
[検証メッセージの入力] ダイアログ ボックスで、データが入力規則に一致しないときに表示するメッセージを入力し、[OK] をクリックします。
コントロールに入力規則を追加する
テーブルのフィールドとレコードだけでなく、コントロールにも、式を使用できる "入力規則" プロパティがあります。 たとえば、フォームを使用してレポートの日付範囲を入力し、開始日を 2017 年 1 月 1 日より後にしたいとします。 開始日を次のように入力するテキスト ボックスの [ 検証規則 ] プロパティと [ 検証 テキスト] プロパティを設定できます。
プロパティ |
設定 |
---|---|
入力規則 |
>=#1/1/2017# |
エラー メッセージ |
2017 年 1 月 1 日より前の日付を入力することはできません。 |
2017 年 1 月 1 日より前の日付を入力しようとすると、メッセージが表示され、[ 検証テキスト ] プロパティにテキストが表示されます。 [ 検証テキスト ] プロパティ ボックスにテキストが入力されなかった場合、Access は汎用メッセージを表示します。 [OK] をクリックすると、テキスト ボックスに戻ります。
Setting a validation rule for a table field enforces the rule throughout the database, wherever that field is modified. Alternatively, setting a validation rule for a control on a form enforces the rule only when that form is being used. Setting validation rules separately for table fields and for controls on forms can be useful if you want to establish different validation rules for different users.
手順
-
ナビゲーション ウィンドウで、変更するフォームまたはレポートを右クリックし、ショートカット メニューの [デザイン ビュー] または [レイアウト ビュー] をクリックします。
-
変更するコントロールを右クリックし、ショートカット メニューの [プロパティ] をクリックします。 コントロールのプロパティ シートが表示されます。
-
[すべて] タブをクリックし、[入力規則] プロパティ ボックスをクリックします。
-
式を入力するか、プロパティ ボックスの [ ビルド ] ボタン クリックして、 式ビルダーを使用して式を作成します。
式の前に = 演算子を使用しないでください。
-
ユーザーが入力規則と一致しないデータを入力した場合に表示されるテキストをカスタマイズするには、"エラー メッセージ" プロパティに、表示するテキストを入力します。
レポート内のデータのグループ化および並べ替えを行う
[グループ化、並べ替え、集計] ウィンドウを使用して、レポート内のデータのグループ化レベルや並べ替え順序を定義します。 通常は、一覧から選んだフィールドでグループ化または並べ替えを行います。 ただし、計算された値に基づいてグループ化または並べ替えを行う場合は、代わりに式を入力することができます。
グループ化は重複する値が含まれる列の結合処理です。 たとえば、データベースに異なる都市のオフィスの売上情報が含まれ、そのデータベースのレポートの 1 つが "市町村別売上" という名前だとします。 そのレポートにデータを提供するクエリは、データを市区町村の値によってグループ化します。 このようなグループ化によって、情報が読みやすく、理解しやすくなります。
それに対し、並べ替えとは、クエリ結果の行 (レコード) に対して並べ替え順序を適用する処理です。 たとえば、主キーの値 (または別のフィールドの別の値セット) によってレコードを昇順または降順で並べ替えたり、アルファベット順などの指定した順序で 1 つ以上の文字を基にレコードを並べ替えたりできます。
手順: レポートにグループ化と並べ替えを追加する
-
ナビゲーション ウィンドウで、変更するレポートを右クリックし、ショートカット メニューの [レイアウト ビュー] または [デザイン ビュー] をクリックします。
-
リボンの [ レポート デザイン] をクリックし、[ グループ化] & [集計 ] グループで、[ グループ化] & [並べ替え] をクリックします。 [グループ化、並べ替え、集計] ウィンドウがレポートの下に表示されます。
-
レポートにグループ化レベルを追加するには、[グループの追加] をクリックします。
-
レポートに並べ替え順序を追加するには、[並べ替えの追加] をクリックします。
新しいグループ レベルまたは並べ替え順序に加えて、レポートのデータを提供するフィールドの一覧がウィンドウに表示されます。 次の図は、通常の新しいグループ レベル (カテゴリでのグループ化) と並べ替え順序 (製造元での並べ替え) に加えて、グループ化および並べ替えに使用できるフィールドが含まれる一覧も表示しています。
-
使用できるフィールドの一覧で、[式] をクリックして式ビルダーの使用を開始します。
-
式ビルダーの式ボックス (上のボックス) に、使用する式を入力します。 式は、必ず等号 (=) 演算子から始めます。
手順: 既存のグループ化または並べ替えに式を追加する
-
ナビゲーション ウィンドウで、変更するレポートを右クリックし、ショートカット メニューの [レイアウト ビュー] または [デザイン ビュー] をクリックします。
-
変更するグループ レベルまたは並べ替え順序をクリックします。
-
[グループ化] (グループ化レベルの場合) または [並べ替え] (並べ替え順序の場合) の横に表示される下矢印をクリックします。 使用できるフィールドを含む一覧が表示されます。
-
フィールドを含む一覧の一番下で、[式] をクリックして式ビルダーの使用を開始します。
-
式ビルダーの式ボックス (上のボックス) に、式を入力します。 式は、必ず等号 (=) 演算子から始めます。
実行するマクロ アクションを制御する
特定の条件が True である場合にのみ、マクロの (一連の) アクションを実行したい場合があります。 たとえば、テキスト ボックスの値が 10 以上の場合にのみマクロ アクションを実行したいとします。 この規則を設定するには、マクロの [If] ブロックで式を使用して、マクロの条件を定義します。
この例では、テキスト ボックスの名前が "品目" であるとします。 条件を設定する式は次のとおりです。
[Items]>=10
手順
-
ナビゲーション ウィンドウで、変更するマクロを右クリックし、ショートカット メニューの [デザイン ビュー] をクリックします。
-
変更する [If] ブロックをクリックするか、[アクション カタログ] ウィンドウから [If] ブロックを追加します。
-
[If] ブロックの一番上の行をクリックします。
-
ボックスに条件式を入力するか、式ボックスの横にある [ ビルド ] ボタン クリックして 式ビルダーの使用を開始します。
入力した式はブール値、つまり True または False のいずれかでなければなりません。 [If] ブロック内のマクロ アクションは、条件が True の場合にのみ実行されます。