式の例

この記事では、Access の式について多くの例を示します。式とは、算術演算子または論理演算子、定数、関数、テーブルのフィールド、コントロール、プロパティを組み合わせたもので、単一の値に評価されます。Access で式を使用すると、値を計算したり、データを検証したり、既定値を設定したりできます。

この記事の内容

フォームとレポート

このセクションに掲載された表は、フォームまたはレポートに配置されたコントロールの値を計算する式の例を示しています。演算コントロールを作成するには、コントロールの ControlSource/コントロールソース プロパティに、テーブルのフィールド名やクエリを入力するのではなく式を入力します。

注:    条件付き書式を使用してデータを強調表示する場合、フォームまたはレポートで式を使用することもできます。

文字列​​操作

次の表に示す式では、& (アンパサンド) 演算子や + (加算) 演算子を使用してテキスト文字列を結合したり、組み込み関数を使用してテキスト文字列を操作したり、テキストを処理して演算コントロールを作成したりしています。

結果

="N/A"

"N/A" と表示します。

=[FirstName] & " " & [LastName]

[名] および [姓] というテーブル フィールドの値を表示します。この例では、& 演算子を使用して、[名] フィールド、スペース (二重引用符の中)、および [姓] フィールドを結合しています。

=Left([ProductName], 1)

Left 関数を使用して、[商品名] というフィールドまたはコントロールに入力されている値の最初の文字を表示します。

=Right([AssetCode], 2)

Right 関数を使用して、[備品番号] というフィールドまたはコントロールに入力されている値の最後の 2 文字を表示します。

=Trim([Address])

Trim 関数を使用して、[住所] コントロールの値から先頭や末尾の空白を削除して表示します。

=IIf(IsNull([Region]), [City] & " " & [PostalCode], [City] & " " & [Region] & " " & [PostalCode])

IIf 関数を使用して、[都道府県] コントロールの値が null の場合は [郵便番号] コントロールと [住所] コントロールの値をスペースで区切って表示し、その他の場合は [郵便番号] コントロール、[都道府県] コントロール、および [住所] コントロールの値をスペースで区切って表示します。

=[City] & (" " + [Region]) & " " & [PostalCode]

+ 演算子と null 値の反映を使用して、[都道府県] フィールドまたはコントロールの値が null の場合は [郵便番号] コントロールと [住所] コントロールの値をスペースで区切って表示し、その他の場合は [郵便番号]、[都道府県]、[住所] の各フィールドまたはコントロールの値をスペースで区切って表示します。

null 値の反映とは、式のいずれかの構成要素が null の場合に、式全体を null として評価する機能です。+ 演算子では null 値の反映がサポートされていますが、& 演算子ではサポートされていません。

ページの先頭へ

ヘッダーとフッター

フォームやレポートのページ番号を表示または印刷するには、Page プロパティと Pages プロパティを使用します。Page プロパティおよび Pages プロパティは、印刷中または印刷プレビューの実行中にのみ有効になるので、フォームやレポートのプロパティ シートには表示されません。通常、これらのプロパティを使用するときは、フォームやレポートのヘッダー セクションまたはフッター セクションにテキスト ボックスを配置し、以下の表に示すような式を設定します。

フォームやレポートでヘッダーおよびフッターを使用する方法の詳細については、「フォームまたはレポートにページ番号を挿入する」の記事を参照してください。

結果

=[Page]

1

="Page " & [Page]

ページ 1

="Page " & [Page] & " of " & [Pages]

ページ 1 of 3

=[Page] & " of " & [Pages] & " Pages"

1 of 3 ページ

=[Page] & "/" & [Pages] & " Pages"

1/3 ページ

=[Country/region] & " - " & [Page]

イギリス - 1

=Format([Page], "000")

001

="Printed on: " & Date()

印刷日: 2017/12/31

ページの先頭へ

算術演算

式を使用して、2 つ以上のフィールドまたはコントロールの値の加算、減算、乗算、除算を行うことができます。式を使用すると、日付に対して算術演算を実行することもできます。たとえば、[締切日] という名前の日付/時刻型のテーブル フィールドがあるとします。このとき、フィールドまたはフィールドに連結されたコントロールに =[RequiredDate] - 2 という式を設定すると、[締切日] フィールドの現在の値の 2 日前に相当する日付/時刻型の値が返されます。

結果

=[Subtotal]+[Freight]

[小計] および [運送料] というフィールドまたはコントロールの値の合計。

=[RequiredDate]-[ShippedDate]

[締切日] および [出荷日] というフィールドまたはコントロールの日付値の間隔。

=[Price]*1.06

[単価] フィールドまたはコントロールの値と 1.06 の積 ([単価] の値の 6% 増し)。

=[Quantity]*[Price]

[数量] および [単価] というフィールドまたはコントロールの値の積。

=[EmployeeTotal]/[CountryRegionTotal]

[四半期売上高] および [社員数] というフィールドまたはコントロールの値の商。

注:    式に算術演算子 (+-*/) を使用し、式内のコントロールのいずれかの値が null 値である場合、式全体の結果は null になります。これを null 値の反映と呼びます。式で使用するコントロールの 1 つのレコードに null 値が含まれる可能性がある場合は、Nz 関数を使用して null 値を 0 に変換することにより、null 値の反映を避けることができます。例: =Nz([Subtotal])+Nz([Freight])

ページの先頭へ

その他のコントロールの値

場合によっては、別のフォームやレポートに含まれているフィールドまたはコントロールなど、他の場所に存在する値が必要になることがあります。式を使用して、他のフィールドまたはコントロールから値を返すことができます。

次の表は、フォームの演算コントロールで使用できる式の例の一覧です。

結果

=Forms![Orders]![OrderID]

[受注] フォームの [受注コード] コントロールの値。

=Forms![Orders]![Orders Subform].Form![OrderSubtotal]

[受注] フォームにある [受注サブフォーム] という名前のサブフォーム上の [受注小計] コントロールの値。

=Forms![Orders]![Orders Subform]![ProductID].Column(2)

[受注] フォームにある [受注サブフォーム] という名前のサブフォーム上の [商品コード] という複数列リスト ボックスの 3 列目の値 (0 は 1 列目、1 は 2 列目、以下同様)。

=Forms![Orders]![Orders Subform]![Price] * 1.06

[受注] フォームにある [受注サブフォーム] という名前のサブフォーム上の [単価] コントロールの値と 1.06 の積 ([単価] コントロールの値の 6% 増し)。

=Parent![OrderID]

カレント サブフォームのメインまたは親フォームの [受注コード] コントロールの値。

次の表の式は、レポート上の演算コントロールを使用する方法を示しています。これらの式では、Report プロパティが参照されています。

結果

=Report![Invoice]![OrderID]

[納品書] というレポートにある [受注コード] というコントロールの値。

=Report![Summary]![Summary Subreport]![SalesTotal]

[合計] レポートにある [年次売上高サブレポート] という名前のサブレポート上の [売上高] コントロールの値。

=Parent![OrderID]

カレント サブレポートのメインまたは親レポートの [受注コード] コントロールの値。

ページの先頭へ

値のカウント、合計、平均

集計関数と呼ばれる種類の関数を使用すると、1 つ以上のフィールドまたはコントロールの値を計算できます。たとえば、レポートのグループ フッターに表示するグループの集計や、フォーム上の品目に対する受注小計を計算することができます。1 つまたは複数のフィールド内の項目数を数えたり、平均値を求めたりすることもできます。

次の表の式は、Avg、Count、Sum などの関数を使用する方法を示しています。

説明

=Avg([Freight])

Avg 関数を使用して、"運送料" という名前のテーブル フィールドまたはコントロールの値の平均値を表示します。

=Count([OrderID])

Count 関数を使用して、[受注コード] コントロールのレコードの数を表示します。

=Sum([Sales])

Sum 関数を使用して、[売上高] コントロールの値の合計を表示します。

=Sum([Quantity]*[Price])

Sum 関数を使用して、[数量] コントロールと [単価] コントロールの値の積の合計を表示します。

=[Sales]/Sum([Sales])*100

[売上高] コントロールの値を [売上高] コントロールのすべての値の合計で割って得られる売上高の割合をパーセント単位で表示します。

コントロールの Format/書式プロパティを Percent/パーセントに設定した場合は、式に *100 を含めないでください。

集計関数の使用方法およびフィールドや列の値の集計方法の詳細については、「Sum data by using a query (クエリを使用してデータを集計する)」、「クエリを使用してデータをカウントする」、「データシート内の行数をカウントする」、および「Display column totals in a datasheet (データシートに列の合計を表示する)」の記事を参照してください。

ページの先頭へ

SQL 集計関数

値を選択して合計またはカウントする必要がある場合は、SQL または定義域集計関数と呼ばれる種類の関数を使用します。"定義域" は、1 つ以上のテーブル内の 1 つ以上のフィールド、あるいは 1 つ以上のフォームまたはレポート上の 1 つ以上のコントロールで構成されます。たとえば、テーブル フィールドの値をフォーム上のコントロールの値と比較することができます。

説明

=DLookup("[ContactName]", "[Suppliers]", "[SupplierID] = " & Forms("Suppliers")("[SupplierID]"))

DLookup 関数を使用して、[仕入先] テーブルのレコードのうち、[仕入先コード] の値が [仕入先] フォームの [仕入先コード] コントロールの値に一致するレコードの [担当者名] フィールドの値を返します。

=DLookup("[ContactName]", "[Suppliers]", "[SupplierID] = " & Forms![New Suppliers]![SupplierID])

DLookup 関数を使用して、[仕入先] テーブルのうち、[仕入先コード] の値が [新しい仕入先] フォームの [仕入先コード] コントロールの値に一致するレコードの [担当者名] フィールドの値を返します。

=DSum("[OrderAmount]", "[Orders]", "[CustomerID] = 'RATTC'")

DSum 関数を使用して、[受注] テーブルの [得意先コード] が "RATTC" であるレコードの [受注金額] フィールドの値の合計を返します。

=DCount("[Retired]","[Assets]","[Retired]=Yes")

DCount 関数を使用して、[資産] テーブルの [退職] フィールド (Yes/No 型のフィールド) に設定されている Yes 値の数を返します。

ページの先頭へ

日付操作

日付と時刻の管理は、データベースの基本的な機能です。たとえば、納品日からの経過日数を計算して、売掛金の滞留日数を求めることができます。次の表に示すように、日付と時刻はさまざまな形式で表すことができます。

説明

=Date()

Date 関数を使用して、現在の日付を mm-dd-yy の形式で表示します。mm は月 (1 から 12)、dd は日 (1 から 31)、yy は年 (1980 から 2099) の下 2 桁を示します。

=Format(Now(), "ww")

Format 関数を使用して、年の初めから数えた現在の日付の週番号を表示します。ww は週 (1 から 53) を示します。

=DatePart("yyyy", [OrderDate])

DatePart 関数を使用して、[受注日] コントロールの値の年の部分を 4 桁で表示します。

=DateAdd("y", -10, [PromisedDate])

DateAdd 関数を使用して、[契約日] コントロールの値の 10 日前の日付を表示します。

=DateDiff("d", [OrderDate], [ShippedDate])

DateDiff 関数を使用して、[受注日] コントロールおよび [出荷日] コントロールの値の差の日数を表示します。

=[InvoiceDate] + 30

日付に対して算術演算を使用して、[納品日] フィールドまたはコントロールの日付の 30 日後の日付を計算します。

ページの先頭へ

2 つの値の一方を返す条件式

次の表に示す式では、IIf 関数を使用して 2 つの値の一方を返します。IIf 関数には、3 つの引数を渡します。最初の引数には、True または False のどちらかの値を返す式を指定します。2 番目の引数は式が True の場合に返す値、3 番目の引数は式が False の場合に返す値です。

説明

=IIf([Confirmed] = "Yes", "Order Confirmed", "Order Not Confirmed")

IIf (Immediate If) 関数を使用して、[確認] コントロールの値が Yes の場合は "受注は確認されました。"、そうでない場合は "Order Not Confirmed." というメッセージを表示します。

=IIf(IsNull([Country/region]), " ", [Country])

IIf 関数と IsNull 関数を使用して、[都道府県] コントロールの値が null の場合は空白を、その他の場合は [都道府県] コントロールの値を表示します。

=IIf(IsNull([Region]), [City] & " " & [PostalCode], [City] & " " & [Region] & " " & [PostalCode])

IIf 関数と IsNull 関数を使用して、[都道府県] コントロールの値が null の場合は [郵便番号] コントロールおよび [住所] コントロールの値を表示し、その他の場合は [郵便番号]、[都道府県]、[住所] の各フィールドまたはコントロールの値を表示します。

=IIf(IsNull([RequiredDate]) Or IsNull([ShippedDate]), "Check for a missing date", [RequiredDate] - [ShippedDate])

IIf 関数と IsNull 関数を使用して、[締切日] から [出荷日] を減算した結果が null の場合は "欠落している日がないか確認" というメッセージを表示し、その他の場合は [締切日] コントロールと [出荷日] コントロールの日付値の差の日数を表示します。

ページの先頭へ

クエリとフィルター

このセクションでは、クエリでの演算フィールドの作成や、クエリの抽出条件の指定のために使用できる式の例を紹介します。演算フィールドとは、式の結果から作成されるクエリの列のことです。たとえば、値を計算したり、姓や名などの文字列値を結合したり、日付の一部を取り出したりできます。

操作するレコードを制限するには、クエリで条件を使用します。たとえば、Between 演算子を使用すると、開始日と終了日を設定し、その期間に出荷された受注品だけが返されるようにクエリの結果を制限できます。

クエリで使用する式の例を次に示します。

文字列​​操作

次の表に示す式では、& 演算子や + 演算子を使用してテキスト文字列を結合したり、組み込み関数を使用してテキスト文字列を操作したり、文字列を処理することによって演算フィールドを作成します。

説明

FullName: [FirstName] & " " & [LastName]

[姓] フィールドと [名] フィールドの値をスペースで区切って表示する [氏名] というフィールドを作成します。

Address2: [City] & " " & [Region] & " " & [PostalCode]

[郵便番号]、[都道府県]、[住所] の各フィールドの値をスペースで区切って表示する [住所 2] というフィールドを作成します。

ProductInitial: Left([ProductName], 1)

[商品頭文字] というフィールドを作成し、Left 関数を使用して、[商品名] フィールド値の先頭の文字を [商品頭文字] フィールドに表示します。

TypeCode: Right([AssetCode], 2)

[種類コード] というフィールドを作成し、Right 関数を使用して、[備品番号] フィールドの値の最後の 2 文字を表示します。

AreaCode: Mid([Phone],2,3)

[市外局番] というフィールドを作成し、Mid 関数を使用して、[電話番号] フィールドの値の 2 文字目から始まる 3 文字を表示します。

ExtendedPrice: CCur([Order Details].[Unit Price]*[Quantity]*(1-[Discount])/100)*100

演算フィールドに [明細金額] という名前を付け、CCur 関数を使用して割引適用後の品目の合計を計算します。

ページの先頭へ

算術演算

式を使用して、2 つ以上のフィールドまたはコントロールの値の加算、減算、乗算、および除算を行うことができます。日付に対して算術演算を実行することもできます。たとえば、[締切日] という日付/時刻型フィールドがあるとします。このとき、=[RequiredDate] - 2 という式を指定すると、[締切日] フィールドの値の 2 日前に相当する日付/時刻型の値が返されます。

説明

PrimeFreight: [Freight] * 1.1

[特別運送料] というフィールドを作成し、運送料の 10% 増しの料金をフィールドに表示します。

OrderAmount: [Quantity] * [UnitPrice]

[受注金額] というフィールドを作成し、[数量] フィールドと [単価] フィールドの値の積を表示します。

LeadTime: [RequiredDate] - [ShippedDate]

[リード タイム] というフィールドを作成し、[締切日] フィールドと [出荷日] フィールドの値の差を表示します。

TotalStock: [UnitsInStock]+[UnitsOnOrder]

[在庫合計] というフィールドを作成し、[在庫数] フィールドと [受注数] フィールドの値の合計を表示します。

FreightPercentage: Sum([Freight])/Sum([Subtotal]) *100

[運送料率] というフィールドを作成し、各小計における運送料の割合をパーセント単位で表示します。この式では、Sum 関数を使用して [運送料] フィールドの値を合計し、その合計値を [小計] フィールドの合計値で割っています。

この式を使用するには、デザイン グリッドの [集計] 行を使用して、このフィールドに対する [集計] セルを [演算] に設定する必要があるため、選択クエリから集計クエリへの変換が必要になります。

集計クエリの作成方法の詳細については、「Sum data by using a query (クエリを使用してデータを集計する)」の記事を参照してください。

フィールドの書式プロパティをパーセントに設定した場合は、*100 を含めないでください。

集計関数の使用方法およびフィールドや列の値の集計方法の詳細については、「Sum data by using a query (クエリを使用してデータを集計する)」、「クエリを使用してデータをカウントする」、「データシート内の行数をカウントする」、および「Display column totals in a datasheet (データシートに列の合計を表示する)」の記事を参照してください。

ページの先頭へ

日付操作

ほとんどのデータベースには、日付と時刻が格納されて管理されています。Access で日付と時刻を操作するには、テーブル内の日付と時刻のフィールドを日付/時刻型に設定します。Access では、日付に対して算術演算を実行できます。たとえば、納品日からの経過日数を計算して、売掛金の滞留日数を求めることができます。

説明

LagTime: DateDiff("d", [OrderDate], [ShippedDate])

[ラグ タイム] というフィールドを作成し、DateDiff 関数を使用して、受注日から出荷日までの日数を表示します。

YearHired: DatePart("yyyy",[HireDate])

[採用年] というフィールドを作成し、DatePart 関数を使用して、各社員が採用された年を表示します。

MinusThirty: Date( )- 30

[30 日前] というフィールドを作成し、Date 関数を使用して、現在の日付の 30 日前の日付を表示します。

ページの先頭へ

SQL 集計関数

次の表に示す式では、データを集計する SQL (構造化照会言語) 関数を使用しています。このような関数 (Sum、Count、Avg など) は、集計関数と呼ばれることがよくあります。

Access には、集計関数の他に、値を選択して合計またはカウントするための "定義域" 集計関数も用意されています。たとえば、特定の範囲に含まれる値だけをカウントしたり、他のテーブルに格納されている値を参照したりできます。定義域集計関数には、DSum 関数DCount 関数、および DAvg 関数があります。

合計を計算するには、集計クエリの作成が必要になることがよくあります。たとえば、グループごとの集計を求めるには、集計クエリを使用する必要があります。クエリのデザイン グリッドで集計クエリを有効にするには、[表示] メニューの [集計] をクリックします。

説明

RowCount: Count(*)

[行数] というフィールドを作成し、Count 関数を使用して、クエリ内の行数をカウントします。null 値 (空) のフィールドを持つレコードも含まれます。

FreightPercentage: Sum([Freight])/Sum([Subtotal]) *100

[運送料率] というフィールドを作成し、[運送料] フィールドの値の合計を [小計] フィールドの値の合計で割ることによって、各小計における運送料の割合をパーセント値として求めます (この例では、Sum 関数を使用しています)。

この式は集計クエリで使用する必要があります。フィールドの書式プロパティをパーセントに設定した場合は、*100 を含めないでください。

集計クエリの作成方法の詳細については、「クエリを使用してデータを集計する」の記事を参照してください。

AverageFreight: DAvg("[Freight]", "[Orders]")

[平均運送料] というフィールドを作成し、DAvg 関数を使用して、集計クエリで結合されたすべての受注に対する運送料の平均を計算します。

ページの先頭へ

データが不足しているフィールド

ここで紹介する式では、null 値 (未知または未定義の値) を含むフィールドなど、情報が欠落している可能性のあるフィールドを取り扱います。新商品の価格が決まっていない場合や、同僚が受注データに値を追加し忘れた場合など、フィールドに null 値が含まれる状況はよくあります。null 値を検出して適切に処理することは、データベースの重要な機能の 1 つであると言えます。次の表の式では、null 値を扱う一般的な方法をいくつか示します。

説明

CurrentCountryRegion: IIf(IsNull([CountryRegion]), " ", [CountryRegion])

[現在の都道府県] というフィールドを作成し、IIf 関数と IsNull 関数を使用して、[都道府県] フィールドに null 値が含まれている場合は作成したフィールドに空白を表示し、その他の場合は [都道府県] フィールドの内容を表示します。

LeadTime: IIf(IsNull([RequiredDate] - [ShippedDate]), "Check for a missing date", [RequiredDate] - [ShippedDate])

[リードタイム] というフィールドを作成し、IIf 関数と IsNull 関数を使用して、[締切日] フィールドまたは [出荷日] フィールドの値が null の場合は "欠落している日がないか確認" というメッセージを表示し、その他の場合は日付の差を表示します。

SixMonthSales: Nz([Qtr1Sales]) + Nz([Qtr2Sales])

[半期売上高] という名前のフィールドを作成し、Nz 関数を使用して null 値を 0 に変換しながら、[第 1 四半期売上高] フィールドと [第 2 四半期売上高] フィールドの合計を表示します。

ページの先頭へ

サブクエリを使用した演算フィールド

サブクエリとも呼ばれるネストされたクエリを使用して、演算フィールドを作成することもできます。次の表に示す式は、サブクエリから作成される演算フィールドの一例です。

説明

Cat: (SELECT [CategoryName] FROM [Categories] WHERE [Products].[CategoryID]=[Categories].[CategoryID])

[区分] という名前のフィールドを作成し、[商品区分] テーブルの [区分コード] が [商品] テーブルの [区分コード] と一致する商品区分の [区分名] を表示します。

ページの先頭へ

文字列値の検索

次の表の式は、文字列値の全体または一部に一致する条件の例を示しています。

フィールド

説明

出荷先市町村

"London"

札幌市に出荷される受注品を表示します。

出荷先市町村

"London" Or "Hedge End"

Or 演算子を使用して、札幌市または福岡市に出荷される受注品を表示します。

出荷先都道府県

In("Canada", "UK")

In 演算子を使用して、佐賀県または愛知県に出荷される受注品を表示します。

出荷先都道府県

Not "USA"

Not 演算子を使用して、埼玉県以外の都道府県に出荷される受注品を表示します。

商品名

Not Like "C*"

Not 演算子と * ワイルドカード文字を使用して、商品名が "シ" 以外の文字で始まる商品を表示します。

会社名

>="N"

社名が "ナ" 行から "ワ" 行で始まる会社に出荷される受注品を表示します。

商品コード

Right([ProductCode], 2)="99"

Right 関数を使用して、[商品コード] の値が 99 で終わる受注品を表示します。

出荷先名

Like "S*"

社名が "山" から始まる会社に出荷される受注品を表示します。

ページの先頭へ

日付条件の検索

次の表の式は、条件式で日付や日付関連の関数を使用する例を示しています。日付値の入力および使用の詳細については、「日付値または時刻値を入力する」の記事を参照してください。

フィールド

説明

出荷日

#2/2/2017#

2017 年 2 月 2 日に出荷された受注品を表示します。

出荷日

Date()

今日出荷された受注品を表示します。

締切日

Between Date( ) And DateAdd("m", 3, Date( ))

Between...And 演算子、DateAdd 関数、Date 関数を使用して、現在の日付から 3 か月以内に出荷する必要のある受注品を表示します。

受注日

< Date( ) - 30

Date 関数を使用して、受注日が 30 日前より以前の受注品を表示します。

受注日

Year([OrderDate])=2017

Year 関数を使用して、受注日の年が 2017 年である受注品を表示します。

受注日

DatePart("q", [OrderDate])=4

DatePart 関数を使用して、受注日が第 4 四半期に該当する受注品を表示します。

受注日

DateSerial(Year ([OrderDate]), Month([OrderDate])+1, 1)-1

DateSerial 関数、Year 関数、Month 関数を使用して、受注日が各月の月末に該当する受注品を表示します。

受注日

Year([OrderDate])= Year(Now()) And Month([OrderDate])= Month(Now())

Year 関数、Month 関数、And 演算子を使用して、今年の今月分の受注品を表示します。

出荷日

Between #1/5/2017# And #1/10/2017#

Between...And 演算子を使用して、2017 年 1 月 5 日から 2017 年 1 月 10 日までの間に出荷された受注品を表示します。

締切日

Between Date( ) And DateAdd("M", 3, Date( ))

Between...And 演算子を使用して、現在の日付から 3 か月以内に出荷する必要のある受注品を表示します。

生年月日

Month([BirthDate])=Month(Date())

Month 関数と Date 関数を使用して、誕生日が今月の社員を表示します。

ページの先頭へ

不足しているデータの検索

次の表に示す式では、null 値または長さ 0 の文字列を含むフィールドなど、情報が欠落している可能性のあるフィールドを取り扱います。null 値は、情報がないことを示し、0 やその他の何らかの値を表すものではありません。これはデータベースの整合性を保つうえで不可欠な概念であるため、Access でも、この存在しない情報という概念がサポートされています。情報が存在しない状況は、たとえば新商品の価格がまだ決定していない場合など、一時的な場合も含めて実社会で頻繁に発生します。そのため、ビジネスのような実社会の構造を表すデータベースでは、存在しない情報を記録できるようにする必要があります。IsNull 関数を使用すると、フィールドまたはコントロールに null 値が含まれているかを調べることができ、Nz 関数を使用すると、null 値を 0 に変換できます。

フィールド

説明

出荷先の都道府県

Is Null

[出荷先の都道府県] フィールドが null (値なし) の得意先からの受注品を表示します。

出荷先の都道府県

Is Not Null

[出荷先の都道府県] フィールドに値が含まれている得意先からの受注品を表示します。

FAX

""

ファックスを持っていない得意先からの受注品を表示します。ファックスがない場合、[FAX] フィールドには、null 値 (値なし) ではなく長さ 0 の文字列値が含まれています。

ページの先頭へ

Like を使ったレコード パターンの検索

Like 演算子は、パターンに一致する行を抽出する場合に優れた柔軟性を発揮します。Like 演算子では、ワイルドカード文字を使用して検索パターンを定義できるためです。たとえば、ワイルドカード文字である * (アスタリスク) は、どのような文字列にも一致し、この文字を使用すると、特定の文字で始まるすべての名前を簡単に検索できます。たとえば、"山" で始まるすべての名前を検索するには、「Like "山*"」という式を使用します。詳細については、「Like 演算子」を参照してください。

フィールド

説明

出荷先名

Like "S*"

[出荷先名] フィールドが "山" という文字で始まるレコードをすべて検索します。

出荷先名

Like "*Imports"

[出荷先名] フィールドが "会社" という文字で終わるレコードをすべて検索します。

出荷先名

Like "[A-D]*"

[出荷先名] フィールドが "ア" 行から "サ" 行までの文字で始まるレコードをすべて検索します。

出荷先名

Like "*ar*"

[出荷先名] フィールドに "株式" という文字列が含まれているレコードをすべて検索します。

出荷先名

Like "株式会社?"

[出荷先名] フィールドの値の先頭部分に、"株式会社" と言う 4 文字と任意の 1 文字からなる 5 文字の文字列が含まれているレコードをすべて検索します。

出荷先名

Not Like "A*"

[出荷先名] フィールドが "ア" 以外の文字で始まるすべてのレコードを検索します。

ページの先頭へ

SQL 集計を使った行の検索

値を選択して合計、カウント、または平均する必要がある場合は、SQL または定義域集計関数を使用します。たとえば、特定の範囲内に収まる値だけをカウントしたり、Yes として評価される値だけをカウントしたりできます。または、別のテーブルに格納されている値を参照して表示することが必要になる場合もあります。次の表に示す式では、定義域集計関数を使用して一連の値に対する計算を実行し、その結果をクエリの抽出条件として使用します。

フィールド

説明

運送料

> (DStDev("[Freight]", "Orders") + DAvg("[Freight]", "Orders"))

DStDev 関数と DAvg 関数を使用して、運送料の標準偏差と平均を足した値よりも運送料が上回るすべての受注を表示します。

数量

> DAvg("[Quantity]", "[Order Details]")

DAvg 関数を使用して、受注量が平均よりも多い商品を表示します。

ページの先頭へ

サブクエリを使ったフィールドの検索

ネストされたクエリとも呼ばれるサブクエリを使用して、抽出条件として使用する値を計算できます。次の表に示す式では、サブクエリから返された結果に基づいて行を抽出します。

フィールド

表示される内容

単価

(SELECT [UnitPrice] FROM [Products] WHERE [ProductName] = "Aniseed Syrup")

"ホワイトソルト" と同じ価格の商品。

単価

>(SELECT AVG([UnitPrice]) FROM [Products])

単価が平均より高い商品。

給料

> ALL (SELECT [Salary] FROM [Employees] WHERE ([Title] LIKE "*Manager*") OR ([Title] LIKE "*Vice President*"))

"部課長" または "役員" の役職を持つ社員よりも給料が高いすべての営業担当社員の給料。

受注合計: [単価] * [数量]

> (SELECT AVG([UnitPrice] * [Quantity]) FROM [Order Details])

合計額が受注額の平均値よりも高い受注。

ページの先頭へ

更新クエリ

更新クエリを使用して、データベース内の 1 つ以上の既存フィールドの値を変更できます。たとえば、値を置き換えたり、値を完全に削除したりできます。次の表では、更新クエリで式を使用する方法をいくつか示します。これらの式は、クエリのデザイン グリッドで、更新するフィールドの [レコードの更新] 行に入力して使用します。

更新クエリの作成方法の詳細については、「更新クエリを作成して実行する」の記事を参照してください。

フィールド

結果

タイトル

"Salesperson"

文字列値を "販売員" に変更します。

プロジェクト開始日

#8/10/17#

日付値を 2017 年 8 月 10 日に変更します。

退職

Yes

Yes/No 型フィールドの No 値を Yes に変更します。

部品番号

"PN" & [PartNumber]

指定した各部品番号の先頭に "PN" を追加します。

合計品目

[UnitPrice] * [Quantity]

[単価] と [数量] の積を計算します。

運送料

[Freight] * 1.5

運送料を 50% 増しにします。

売上高

DSum("[Quantity] * [UnitPrice]", "Order Details", "[ProductID]=" & [ProductID])

現在のテーブルの [商品コード] の値が [受注明細] テーブルの [商品コード] の値に一致する場合に、[数量] と [単価] から売上合計を更新します。

発送先郵便番号

Right([ShipPostalCode], 5)

右側の 5 文字を残し、残りの左側の文字を切り捨てます。

単価

Nz([UnitPrice])

[単価] フィールドの null 値 (未定義または不明の値) をゼロ (0) に変更します。

ページの先頭へ

SQL ステートメント

構造化照会言語 (SQL) は、Access で使用されるクエリ言語です。クエリのデザイン ビューで作成するクエリは、いずれも SQL を使用して記述できます。クエリの SQL ステートメントを表示するには、[表示] メニューの [SQL ビュー] をクリックします。次の表は、式を使用する SQL ステートメントの例です。

式を使用する SQL ステートメント

結果

SELECT [FirstName],[LastName] FROM [Employees] WHERE [LastName]="Danseglio";

姓が "小田" である社員の [姓] フィールドと [名] フィールドの値を表示します。

SELECT [ProductID],[ProductName] FROM [Products] WHERE [CategoryID]=Forms![New Products]![CategoryID];

[商品] テーブルの [区分コード] の値が [新しい商品] フォームの [区分コード] の値に一致するレコードについて、[商品コード] フィールドおよび [商品名] フィールドの値を表示します。

SELECT Avg([ExtendedPrice]) AS [Average Extended Price] FROM [Order Details Extended] WHERE [ExtendedPrice]>1000;

[明細金額] フィールドの値が 1000 より大きい受注について明細金額の平均を計算し、[平均明細金額] という名前のフィールドに表示します。

SELECT [CategoryID], Count([ProductID]) AS [CountOfProductID] FROM [Products] GROUP BY [CategoryID] HAVING Count([ProductID])>10;

10 個以上の商品がある区分について、[商品コード数] という名前のフィールドに商品の合計数を表示します。

ページの先頭へ

テーブル式

テーブルで式を使用する 2 つの一般的な方法は、既定値を割り当てる検証ルールを作成します。

フィールドの既定値

データベースのデザイン時には、フィールドやコントロールに既定値を割り当てることができます。Access では、そのフィールドを含む新しいレコードが作成されるか、そのコントロールを含むオブジェクトが作成されると、既定値が自動的に入力されます。次の表に示す式は、フィールドまたはコントロールの既定値の例を表しています。コントロールがテーブルのフィールドに連結されており、そのフィールドに既定値が設定されている場合は、コントロールの既定値が優先します。

フィールド

既定のフィールド値

数量

1

1

地域

"MT"

関東

地域

"New York, N.Y."

"東京, TYO" (句読点が含まれている場合は、二重引用符 (") で囲みます。)

FAX

""

長さ 0 の文字列 (このフィールドの既定値は、null 値ではなく空白にする必要があることを示します)

受注日

Date( )

今日の日付

期限日

Date() + 60

現在の日付の 60 日後の日付

ページの先頭へ

フィールドの入力規則

式を使用することにより、フィールドまたはコントロールに対して入力規則を作成できます。Access では、作成した入力規則は、そのフィールドまたはコントロールへのデータの入力時に適用されます。入力規則を作成するには、フィールドまたはコントロールの ValidationRule/入力規則プロパティを変更します。さらに、入力規則に違反した場合に表示されるテキストを示す ValidationText/エラー メッセージ プロパティも設定することをお勧めします。ValidationText/エラー メッセージ プロパティを設定しないと、Access の既定のエラー メッセージが表示されます。

以下の表は、ValidationRule/入力規則プロパティに設定する式と、関連する ValidationText/エラーメッセージ プロパティに設定するテキストの例を示しています。

ValidationRule プロパティ

ValidationText プロパティ

<> 0

0 以外の値を入力してください。

0 Or > 100

0 または 100 よりも大きい値を入力してください。

Like "K???"

K で始まる 4 文字の値を入力してください。

< #1/1/2017#

2017/1/1 より前の日付を入力してください。

>= #1/1/2017# And < #1/1/2008#

2017 年の日付を入力してください。

データの入力検査の詳細については、「Create a validation rule to validate data in a field (入力規則を作成してフィールド内のデータを検証する)」の記事を参照してください。

ページの先頭へ

マクロ式

特定の条件が真になるときだけ、マクロのアクションを実行したい場合があります。たとえば、[カウンター] ボックスの値が 10 の場合にだけアクションを実行する必要があるとします。このとき、マクロの [条件] 列で次の式を使用して、条件を定義することができます。

[Counter]=10

ValidationRule/入力規則プロパティと同様に、[条件] 列に指定する式は条件式です。つまり、この式は True または False のどちらかの値に解決されなければなりません。アクションは、条件が True になる場合にだけ実行されます。

ヒント:    一時的にアクションを無視するには、条件として False を入力します。これにより、マクロの問題点を探すことができます。

アクションの実行に使用する式

条件

[City]="Paris"

マクロが実行されるフォームの [住所] フィールドの値が "大阪府" のとき。

DCount("[OrderID]", "Orders") > 35

"受注" テーブルの "受注コード" フィールドに 35 を超えるエントリがあるとき。

DCount("*", "[Order Details]", "[OrderID]=" & Forms![Orders]![OrderID]) > 3

[受注明細] テーブルで、[受注] フォームの [受注コード] フィールドと一致する [受注コード] フィールドのエントリが 3 を超えるとき。

[ShippedDate] Between #2-Feb-2017# And #2-Mar-2017#

マクロが実行されるフォームの [出荷日] フィールドの値が 2017 年 2 月 2 日から 2017 年 3 月 2 日の期間にあるとき。

Forms![Products]![UnitsInStock] < 5

"商品リスト" フォームの "梱包単位" フィールドの値が 5 未満のとき。

IsNull([FirstName])

マクロが実行されるフォームの [担当者] フィールドに値がない (null 値) とき。この式は [担当者] IsNull と同じです。

[CountryRegion]="UK" And Forms![SalesTotals]![TotalOrds] > 100

マクロが実行されるフォームの [支社] フィールドの値が "東京本社" で、[支社別売上高] フォームの [売上総数] フィールドの値が 100 を超えるとき。

[CountryRegion] In ("France", "Italy", "Spain") And Len([PostalCode])<>5

マクロが実行されるフォームの [都道府県] フィールドの値が "埼玉県"、"大阪府"、"福岡県" のいずれかで、郵便番号が 5 桁でないとき。

MsgBox("Confirm changes?",1)=1

MsgBox 関数により表示されるダイアログ ボックスの [OK] をクリックしたとき。[キャンセル] をクリックすると、アクションは実行されません。

ページの先頭へ

関連項目

式ビルダーを使用する

式の概要

式を作成する

式の構文の概要

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

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

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

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

×