式の構文の概要

Microsoft Access を使っていると、データに直接存在しない値で作業する必要があることがあります。たとえば、注文の売上税を計算したり、注文自体の合計値を計算したりすることが必要な場合があります。これらの値は、式を使って計算できます。

式を使うには、最初に適切な構文を使って式を記述する必要があります。構文とは、式の単語と記号を正しく組み合わせるルールのセットです。

Access に何かをしてもらいたい場合は、Access の言語で指示する必要がある、ということです。たとえば、"Customers テーブルの BirthDate フィールドを参照して、顧客の生年月日の年を取得する" ように Access に指示したいものとします。この場合の式は、DatePart("yyyy",[Customers]![BirthDate]) と記述できます。この式は、DatePart 関数と 2 つの引数 "yyyy," および [Customers]![BirthDate] で構成されます。

この式を詳しく見ていきましょう。

数式の例

1.DatePart は、日付を調べて特定の部分を返す関数です。

ヒント: Access 2010 以降では、式ビルダーで IntelliSense を使うことができるので、式に必要な引数を確認することができます。

2.区間引数は、Access に取得する日付の部分を指定します。この場合は、"yyyy" によって Access で日付の年の部分のみを返すように指示しています。

3.日付引数は、Access の日付の値を参照する場所を指定します。この場合は、[Customers]![BirthDate] によって Access に Customers テーブルの BirthDate フィールドの日付を参照するように指示しています。

このように Access の式で使われる言語は、最初は少し分かりにくいかもしれません。式の構文をよく理解し、少し練習すれば、もっと簡単にわかるようになります。

式を書いてみる前に理解しておく必要のある重要な概念がいくつかあります。この記事では、適切な構文を使うために理解する必要がある概念を紹介し、式で使う構文について説明します。

この記事では、構造化照会言語 (SQL) の構文および Visual Basic for Applications (VBA) の構文については説明しません。

この記事の内容

概要

オブジェクト、コレクション、プロパティ

識別子

関数、演算子、定数

概要

式を作成するには、関数、演算子、定数を使って識別子を組み合わせます。有効な式には、1 つ以上の関数または 1 つ以上の識別子が含まれている必要があり、定数や演算子を含めることもできます。また、式は別の式の一部として (通常は関数の引数として) 使うこともできます。

  • 式での識別子    式での識別子の一般的な形式は、"[コレクション名]![オブジェクト名].[プロパティ名]" です。

    注: 式のコンテキストにおいて識別子を一意にするために十分な部分だけを指定する必要があります。[オブジェクト名] という形式の識別子は珍しくありません.

  • 式での関数    関数を使う式の一般的な形式は、"関数(引数, 引数)" です。引数の 1 つは通常、識別子または式です。

    注: 引数を必要としない関数もあります。

    特定の関数を使う前に、対応するヘルプ記事でその関数の構文についての具体的な情報を確認してください。

  • 式での演算子    演算子を使う式の一般的な形式は、"識別子 演算子 識別子" です。この形式には例外があります。詳細については、「演算子」セクションの表をご覧ください。

  • 式での定数    定数を使う式の一般的な形式は、"識別子 比較演算子 定数" です

ページの先頭へ

オブジェクト、コレクション、プロパティ

Access データベース内のすべてのテーブル、クエリ、フォーム、レポート、フィールドは、それぞれオブジェクトと呼ばれます。すべてのオブジェクトには名前があります。Microsoft Office Access Contacts テンプレートから作成されるデータベースの Contacts テーブルなどのように、既に名前が付いているオブジェクトもあります。新しいオブジェクトを作成するときは、オブジェクトの名前を指定します。

特定の種類のオブジェクトのすべてのメンバーのセットは、コレクションと呼ばれます。たとえば、データベース内のすべてのテーブルのセットはコレクションです。データベースのコレクションのメンバーであるオブジェクトが、他のオブジェクトを含むコレクションになっていることもあります。たとえば、テーブル オブジェクトはフィールド オブジェクトを含むコレクションです。

オブジェクトにはプロパティがあります。プロパティは、オブジェクトの特性を記述し、変更する方法を提供します。たとえば、クエリ オブジェクトの既定のビュー プロパティでは、クエリを実行したときのクエリの表示方法が記述されているだけでなく、ユーザーが指定することもできます。

次の図は、コレクション、オブジェクト、プロパティの関係を示したものです。

コレクションとオブジェクトとプロパティの関係

1.コレクション

2.オブジェクト

3.プロパティ

ページの先頭へ

識別子

式でオブジェクト、コレクション、プロパティを使うときは、識別子を使って要素を参照します。識別子には、識別している要素の名前と、それが属する要素の名前が含まれます。たとえば、フィールドの識別子には、フィールドの名前と、フィールドが属しているテーブルの名前が含まれます。前の例での式で出てきた [Customers]![BirthDate] は、識別子の例です。

場合によっては、要素の名前自体が識別子として機能します。これは、作成している式のコンテキスト内で要素の名前が一意である場合に成り立ちます。識別子の他の部分は、コンテキストによって暗黙的に示されます。たとえば、テーブルを 1 つだけ使うクエリを設計する場合、テーブルのフィールド名はそのテーブル内で一意でなければならないため、フィールド名だけで識別子として機能します。使っているテーブルが 1 つだけなので、フィールドを参照するためにクエリで使っている識別子では、テーブル名は暗黙的に指定されます。

それ以外の場合は、参照が機能するためには、識別子の各部分を明示的に指定する必要があります。これは、式のコンテキスト内で識別子が一意ではない場合に当てはまります。あいまいさがある場合は、識別子の十分な部分を明示的に指定して、識別子をコンテキスト内で一意にする必要があります。たとえば、Products テーブルと Orders テーブルを使うクエリを設計していて、両方のテーブルに ProductID フィールドがあるものとします。このような場合、どちらかの ProductID フィールドを参照するためにクエリで使う識別子は、フィールド名だけでなくテーブル名も含む必要があります (例: [Products]![ProductID])。

識別子演算子    識別子では、次の 3 つの演算子を使うことができます。

  • 感嘆符演算子 (!)

  • ドット演算子 (.)

  • 角かっこ演算子 ([ ])

識別子の各部分を角かっこで囲み、感嘆符演算子またはドット演算子を使って各部分を結合します。たとえば、Employees テーブルの Last Name フィールドの識別子は、[Employees]![Last Name] と表すことができます。感嘆符演算子は、後に続く部分が感嘆符演算子の前にあるコレクションに属するオブジェクトであることを、Access に伝えます。この例では、[Last Name] は [Employees] コレクションに属するフィールド オブジェクトであり、[Employees] 自体はテーブル オブジェクトです。

注: 厳密にいえば、識別子または部分識別子を囲む角かっこを常に記述する必要はありません。識別子にスペースまたは他の特殊文字が含まれない場合は、式が読み取られるときに角かっこが自動的に追加されます。ただし、角かっこは常に記述しておくことをお勧めします。そうすれば、エラーを回避するのに役立つだけでなく、式の特定の部分が識別子であることを示す視覚的な手がかりとしても機能します。

ページの先頭へ

関数、演算子、定数

式を作成するには、識別子だけでなく、何らかのアクションを実行する必要があります。式の中でアクションを実行するには、関数、演算子、定数を使います。

関数

関数は、式の中で使うことができる手続きです。Date などの一部の関数は、入力がなくても機能します。ただし、ほとんどの関数では、引数と呼ばれる入力が必要です。この記事の最初の例の DatePart 関数では、区間引数 (値は "yyyy") と日付引数 (値は [Customers]![BirthDate]) の 2 つの引数が使われています。DatePart 関数は、これら 2 つの引数 (区間と日付) は必須ですが、最大 4 つの引数を受け取ることができます。

注: 関数に複数の引数がある場合は、引数をコンマで区切ります。

式でよく使われる関数を次に示します。その関数で使用する構文の詳細については、各関数のリンクをクリックしてください。

  • Date Date 関数は、システムの現在の日付を式に挿入するために使います。Format 関数と組み合わせて使われるのが一般的であり、日時データを含むフィールドのフィールド識別子との組み合わせでも使われます。

  • DatePart DatePart 関数は、日付の一部分を特定または抽出するために使われます。日付は通常はフィールド識別子から取得されますが、Date などの別の関数から返されることもあります。

  • DateDiff DateDiff 関数は、2 つの日付の差を取得するために使われます。通常は、フィールド識別子から取得された日付と、Date 関数を使って取得された日付の間隔です。

  • Format Format 関数は、識別子や別の関数の結果に書式を適用するために使われます。

  • IIf IIf 関数は、式が true か false かを評価し、true と false の場合で異なる値を返すために使われます。

  • InStr InStr 関数は、別の文字列の中の文字または文字列の位置を検索するために使います。通常、検索対象の文字列はフィールド識別子から取得されます。

  • LeftMidRight これらの関数は、左端の文字 (Left)、中間の特定の位置にある文字 (Mid)、または右端の文字 (Right) から始めて、文字列から文字を抽出するために使われます。一般に、InStr 関数と組み合わせて使われます。通常、これらの関数が文字を抽出する元となる文字列は、フィールド識別子から取得されます。

関数のカテゴリ別の一覧については、「関数 (カテゴリ順)」をご覧ください。

演算子

演算子は、式の他の要素間の特定の算術関係または論理関係を示す単語または記号です。次の演算子があります。

  • 算術演算子。プラス記号 (+) など。

  • 比較演算子。等号 (=) など。

  • 論理演算子。Not など。

一般に、演算子は 2 つの識別子の間の関係を示すために使われます。次の表では、Access の式で使うことができる演算子について説明します。

算術演算子   

2 つ以上の数値から 1 つの値を計算したり、数値の記号を正から負に変換したりするには、算術演算子を使います。

演算子

用途

使用例

+

2 つの数値の和を求めます。

[小計]+[販売税]

-

2 つの数値の差を求めたり、数値の負の値を示したりします。

[価格]-[割引金額]

*

2 つの数値を乗算します。

[数量]*[単価]

/

最初の数値を 2 番目の数値で除算します。

[合計]/[アイテム数]

\

両方の数値を四捨五入したり、最初の数値を 2 番目の数値で除算して、結果を整数に切り捨てたりします。

[登録人数]\[部屋数]

MOD

最初の数値を 2 番目の数値で除算して、余りだけを返します。

[登録人数] Mod [部屋数]

^

指数で累乗した数値に変換します。

Number ^ Exponent

比較演算子   

値を比較し、True、False、または Null (未知の値) の結果を返すには、比較演算子を使います。

演算子

用途

<

1 番目の値が 2 番目の値より小さいかどうかを判定します。

<=

1 番目の値が 2 番目の値以下かどうかを判定します。

>

1 番目の値が 2 番目の値より大きいかどうかを判定します。

>=

1 番目の値が 2 番目の値以上かどうかを判定します。

=

1 番目の値が 2 番目の値と等しいかどうかを判定します。

<>

1 番目の値が 2 番目の値と等しくないかどうかを判定します。

いずれの場合でも、1 番目の値または 2 番目の値のいずれかが Null の場合、結果も Null になります。Null は不明の値を意味するため、Null との比較結果も不明になります。

論理演算子   

論理演算子を使って 2 つの値を組み合わせると、結果として True、False、または Null が返されます。論理演算子は、ブール演算子とも呼ばれます。

演算子

使用法

説明

And

Expr1 And Expr2

Expr1 と Expr2 が True の場合、True になります。

Or

Expr1 Or Expr2

Expr1 または Expr2 のいずれかが True の場合、True になります。

Eqv

Expr1 Eqv Expr2

Expr1 と Expr2 の両方が True か、Expr1 と Expr2 の両方が False の場合、True になります。

Not

Not Expr

Expr が True でない場合、True になります。

Xor

Expr1 Xor Expr2

Expr1 または Expr2 のいずれか一方だけが True で、両方が True でない場合、True になります。

連結演算子   

2 つのテキスト値を 1 つの文字列に組み合わせるには、連結演算子を使います。

演算子

使用法

説明

&

string1 & string2

2 つの文字列を組み合わせて、1 つの文字列を作成します。

+

string1 + string2

2 つの文字列を組み合わせて、1 つの文字列を作成し、Null 値を伝達します。

特殊演算子   

特殊演算子は、次の表に示すように使います。

演算子

説明

詳細情報

Is Null または Is Not Null

値が Null か Null でないかを判別します。

Like "パターン"

ワイルドカード演算子 ?* を使って、文字列値の一致を検索します。

Like 演算子

Between val1 And val2

数値またはデータ値が一定範囲内にあるかどうかを判別します。

Between...And 演算子

In(string1,string2...)

文字列値が、文字列値のセットの範囲内に含まれるかどうかを判別します。

In 演算子

定数

定数とは、変化せず、式の中で使うことができる、既知の値です。Access にはよく使われる定数が 4 つあります。

  • True    論理的に真であるものを示します。

  • False    論理的に偽であるものを示します。

  • Null    既知の値がないことを示します。

  • "" (空の文字列)    空であることがわかっている値を示します。

定数は関数の引数として使うことができ、条件の一部として式で使うこともできます。たとえば、クエリで列の条件の一部として空の文字列定数 ("") を使って、その列のフィールド値を評価できます (例: 条件として <>"" と入力します)。この例では、<> が演算子で、"" が定数です。一緒に使うと、適用対象の識別子を空の文字列と比較する必要があることを示します。識別子の値が空の文字列以外である場合、式は True になります。

注: Null 定数を使うときは注意する必要があります。ほとんどの場合、Null を比較演算子と組み合わせて使うとエラーになります。式で値を Null と比較する場合は、Is Null または Is Not Null 演算子を使います。

式の使い方の詳細については、「Build an expression」 (式を作成する) を参照してください。

ページの先頭へ

スキルを磨く
トレーニングの探索
新機能を最初に入手
Office Insider に参加する

この情報は役に立ちましたか?

ご意見をいただきありがとうございます。

フィードバックをお寄せいただき、ありがとうございます。Office サポートの担当者におつなぎいたします。

×