入力規則を使ってデータ入力を制限する

入力規則を使ってデータ入力を制限する

入力規則を使うことで、Access デスクトップ データベースでデータを入力時に検査したり検証したりすることができます。式ビルダーを使用して、規則を正しく設定することができます。入力規則は、テーブル デザインまたはテーブル データシート ビューのいずれかで設定できます。Access の入力規則には次の 3 種類があります。

1. フィールドの入力規則    フィールドの入力規則を使用して、すべての有効なフィールド値が満たさなければならない条件を指定することができます。関数内でフィールドを使用している場合を除き、現在のフィールドをルールの一部として指定する必要はありません。 フィールドに入力する文字の種類の制限は、[定型入力] を使って行うと簡単になる場合があります。 たとえば、日付フィールドには、過去の値を許可しない入力規則が存在することがあります。

簡単な例:

過去の日付の値を許可しない: > = date()

一般的に許可されるメールの形式: Is Null OR ((Like "*?@?*.?*") AND (Not Like "*[ ,;]*"))

5 以下の数値: <=5

通貨フィールドを負の値にできないようにする: >=0

文字列の文字数を制限する: Len([文字列フィールド名])<100

Access のテーブル デザイナーに表示されたフィールドの入力規則

2. レコードの入力規則    レコードの入力規則を使って、有効なすべてのレコードが満たす必要のある条件を指定できます。レコードの入力規則を使用して異なるフィールド間の値を比較できます。たとえば、2 つの日付フィールドを持つレコードのうち、一方のフィールドの値をもう一方のフィールドの値より常に前にすることが必要な場合があります (たとえば、開始日は終了日より前にするなど)。

簡単な例:

終了日が開始日の前にならないようにする: [終了日]>=[開始日]

受注日後 30 日以内の日付の出荷日を入力する: [出荷日]<=[受注日]+30

Access のテーブル デザイナーの表の入力規則。

3. フォームの入力規則    フォームのコントロールの [入力規則] プロパティを使って、そのコントロールに入力されるすべての値が満たす必要のある条件を指定できます。[入力規則] コントロール プロパティは、フィールドの入力規則と同じように機能します。通常は、使用場所にかかわらず、規則がフォームのみに固有で、テーブルに対して固有でない場合は、フィールドの入力規則ではなく、フォームの入力規則を使用します。

この記事の内容

概要

この記事では、テーブル フィールドとフォーム コントロールで入力規則と評価テキストを使う方法について説明します。入力規則は、テーブル フィールドまたはフォームのコントロール (テキスト ボックスなど) への入力を制限する 1 つの方法です。評価テキストは、ユーザーが有効でないデータを入力した場合に表示されるメッセージです。

データを入力すると、入力が入力規則に違反していないかどうかが Access によりチェックされます。違反している場合、入力は受け入れられず、メッセージが表示されます。

Access には、入力を制限する多数の方法があります。

  • データ型   各テーブル フィールドには、ユーザーが入力できる内容を制限するデータ型があります。たとえば、日付/時刻フィールドは日付と時刻のみ受け入れ、通貨フィールドは通貨データのみ受け入れる、というようになります。

  • フィールド プロパティ    一部のフィールド プロパティでは、データ入力が制限されます。たとえば、フィールドの [フィールド サイズ]プロパティは、データの量を制限することで入力を制限します。

    [入力規則] プロパティを使って特定の値を要求したり、[評価テキスト] プロパティを使って誤りをユーザーに知らせたりすることができます。たとえば、[入力規則] プロパティに >100 And <1000 などの規則を入力すると、100 から 1,000 の値を入力するよう制限されます。[終了日]>=[開始日] などの規則を入力すると、開始日以降の日付を終了日として入力するよう制限されます。[評価テキスト] プロパティに "100 から 1,000 の値を入力してください" や "終了日には開始日以降の日付を入力してください" などのテキストを入力すると、ユーザーが間違えたときにエラーの修正方法が表示されます。

  • 定型入力   定型入力を使うと、特定の方法での値を入力するように制限することで、データを検証できます。たとえば、定型入力により、日付を 2007.04.14 などのヨーロッパ形式で入力するように制限できます。

これらのデータ検証方法は、単独で使うことも、他の方法と組み合わせて使うこともできます。データ型は選択できず、最も基本的な型がデータ検証に使用されます。

データ型、フィールド サイズ、定型入力の詳細については、「データ型とフィールド プロパティの概要」を参照してください。

入力規則の種類

次の 2 種類の基本的な入力規則を作成できます。

  • フィールドの入力規則   フィールドから移動するときに、フィールドに入力した値をチェックするには、フィールドの入力規則を使います。たとえば、日付フィールドがある場合に、そのフィールドの [入力規則] プロパティに 「>=#01/01/2010#」と入力したとします。この規則により、2010 年 1 月 1 日以降の日付を入力するよう制限されます。2010 年より前の日付を入力し、フォーカスを別の場所に置こうとしても、問題を修正するまで現在のフィールドから移動することができません。

  • レコードの入力規則   レコードの入力規則は、レコード (テーブル内の行) を保存できるタイミングを制御します。フィールドの入力規則とは異なり、レコードの入力規則は同じテーブル内の他のフィールドを参照します。あるフィールドの値を、別のフィールドの値に対してチェックする必要がある場合は、レコードの入力規則を作成します。たとえば、ビジネスで製品を 30 日以内に出荷する必要があり、その期間内に出荷しない場合、購入価格の一部を顧客に返金する必要があるとします。[要求日]<=[受注日]+30 などのレコードの入力規則を定義すると、遅すぎる出荷日 (要求日のフィールドの値) が入力されないようにすることができます。

入力規則の構文についてよくわからない場合は、「入力規則に含めることができる内容」で、入力規則の構文の説明といくつかの入力規則の例を参照してください。

入力規則を使用できる場所

テーブル フィールドとフォームのコントロールの入力規則を定義できます。テーブルの規則を定義すると、それらの規則はデータのインポート時に適用されます。テーブルに入力規則を追加するには、テーブルを開いて、リボンの [フィールド] タブのコマンドを使います。フォームに入力規則を追加するには、レイアウト ビューでフォームを開き、個々のコントロールのプロパティに規則を追加します。

テーブルに入力規則を追加する」セクションの手順は、テーブル フィールドに入力規則を追加する方法を説明しています。この記事の後の「フォームでコントロールに入力規則を追加する」セクションの手順は、個々のコントロールのプロパティに規則を追加する方法を説明しています。

入力規則に含めることができる内容

検証規則には、式 (単一の値を返す関数) を含めることができます。式を使うと、計算の実行、文字の操作、データのテストを行うことができます。入力規則の式でデータをテストします。たとえば、式を "東京" Or "モスクワ" Or "パリ" Or "ヘルシンキ" のようにして、一連の値のいずれかがあるかどうかをチェックできます。さらに、式は数学演算も実行できます。たとえば、式 <100 を使うと、100 未満の値を入力するよう制限されます。式 ([受注日] - [出荷日]) は、注文時から出荷時までの日数を計算します。

式の詳細については、「式を作成する」を参照してください。

ページの先頭へ

テーブルに入力規則を追加する

フィールドの入力規則やレコードの入力規則を追加できます。フィールドの入力規則は、フィールドへの入力をチェックし、フォーカスがフィールドから移動するときに適用されます。レコードの入力規則は、1 つ以上のフィールドへの入力をチェックし、フォーカスがレコードから移動するときに適用されます。通常、レコードの入力規則では複数のフィールドの値が比較されます。

注: 次の種類のフィールドでは、入力規則がサポートされません。

  • オートナンバー

  • OLE オブジェクト

  • 添付ファイル

  • レプリケーション ID

フィールドの入力規則を作成する

  1. 検証するフィールドを選択します。

  2. [フィールド] タブの [フィールドの入力規則] で [検証] をクリックし、[フィールドの入力規則] をクリックします。

  3. 式ビルダーを使用して、規則を作成します。式ビルダーの使用の詳細については、「式ビルダーを使用する」を参照してください。

有効でないフィールド入力に対して表示するメッセージを作成する

  1. 有効でない入力に対してメッセージが必要なフィールドを選択します。フィールドには、既に入力規則が設定されている必要があります。

  2. [フィールド] タブの [フィールドの入力規則] で [検証] をクリックし、[フィールドの検証メッセージ] をクリックします。

  3. 適切なメッセージを入力します。たとえば、入力規則が >10 の場合、"10 未満の値を入力してください" などのメッセージです。

フィールドの入力規則とメッセージの例については、入力規則リファレンスのセクションを参照してください。

レコードの入力規則を作成する

  1. レコードを検証するテーブルを開きます。

  2. [フィールド] タブの [フィールドの入力規則] で [検証] をクリックし、[レコードの入力規則] をクリックします。

  3. 式ビルダーを使用して、規則を作成します。式ビルダーの使用の詳細については、「式ビルダーを使用する」を参照してください。

有効でないレコード入力に対して表示するメッセージを作成する

  1. 有効でない入力に対してメッセージが必要なテーブルを選択します。テーブルには、既にレコードの入力規則が設定されている必要があります。

  2. [フィールド] タブの [フィールドの入力規則] で [検証] をクリックし、[レコードの検証メッセージ] をクリックします。

  3. 適切なメッセージを入力します。たとえば、入力規則が [開始日]<[終了日] の場合、"開始日は終了日より前にする必要があります" などのメッセージです。

ページの先頭へ

既存のデータを新しい入力規則でテストする

既存のテーブルに入力規則を追加した場合、規則をテストして、既存のデータが有効かどうかを調べることができます。

  1. デザイン ビューで、テストするテーブルを開きます。

    [デザイン] タブの [ツール] で、[入力規則のテスト] をクリックします。

  2. [はい] をクリックして警告メッセージを閉じ、テストを開始します。

  3. テーブルを保存するかどうかを確認するメッセージが表示されたら、[はい] をクリックします。

  4. 処理の途中で他のさまざまな警告メッセージが表示されることがあります。各メッセージの説明を読み、必要に応じて [はい] または [いいえ] をクリックし、テストを完了または中止します。

ページの先頭へ

フォームのコントロールに入力規則を追加する

フォーム コントロールの [入力規則] プロパティと [エラーメッセージ] プロパティを使うと、そのコントロールに入力されたデータを検証し、ユーザーが有効でないデータを入力した場合にメッセージを表示できます。

ヒント: リボンのフォーム コマンドのいずれかを使ってテーブルから自動的にフォームを作成した場合、基になるテーブル内のフィールドの入力規則が、フォーム上の対応するコントロールにより継承されます。

コントロールには、連結されたテーブル フィールドとは異なる入力規則を設定することができます。これは、フォームの制限をテーブルより強くする場合に便利です。フォームの規則が適用された後に、テーブルの規則が適用されます。テーブルの制限がフォームより強い場合、テーブル フィールドに定義された規則が優先されます。規則が互いに矛盾する場合は、データをまったく入力できなくなります。

たとえば、テーブル内の日付フィールドに次の規則を適用するとします。

<#01/01/2010#

その後、次の規則を、日付フィールドに連結されたフォーム コントロールに適用します。

>=#01/01/2010#

この結果、日付フィールドには 2010 年より前の値を入力する必要がありますが、フォーム コントロールによりその年以降の日付が要求されるため、データをまったく入力できなくなります。

コントロールの入力規則を作成する

  1. 変更するフォームを右クリックし、[レイアウト ビュー] をクリックします。

  2. 変更するコントロールを右クリックし、[プロパティ] をクリックしてコントロールのプロパティ シートを開きます。

  3. [すべて] タブをクリックし、[入力規則] プロパティ ボックスに入力規則を入力します。

    ヒント: [ビルド] ボタンをクリックして、式ビルダーを起動します。

    式ビルダーの使用の詳細については、「式ビルダーを使用する」を参照してください。

  4. [エラーメッセージ] ボックスにメッセージを入力します。

ページの先頭へ

入力規則リファレンス

入力規則では、Access の式構文が使用されます。式の詳細については、「式の概要」を参照してください。

入力規則と評価テキストの例

入力規則

ValidationText/エラーメッセージ

<>0

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

>=0

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

または

正の数値を入力してください。

0 or >100

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

BETWEEN 0 AND 1

パーセント記号を付けて入力してください。(数値をパーセントとして保存するフィールドで使う場合)

<#2007/01/01#

2007 年より前の日付を入力してください。

>=#2007/01/01# AND <#2008/01/01#

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

<Date()

誕生日には将来の日付を入力できません。

StrComp(UCase([姓]),
[姓],0) = 0

[姓] フィールドのデータは大文字で入力してください。

>=Int(Now())

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

M Or F

男性の場合は「M」、女性の場合は「F」を入力してください。

LIKE "[A-Z]*@[A-Z].com" OR "[A-Z]*@[A-Z].net" OR "[A-Z]*@[A-Z].org"

有効な .com、.net、または .org の電子メール アドレスを入力してください。

[要求日]<=[受注日]+30

受注日後 30 日以内の日付の出荷日を入力してください。

[終了日]>=[開始日]

開始日以降の終了日を入力してください。

よく使う入力規則演算子の構文の例

演算子

関数

使用例

NOT

逆の値をテストします。他の比較演算子の前で使ってください (IS NOT NULL を除く)。

NOT > 10 (<=10 と同じです)。

IN

リスト内の既存の要素と等しい値をテストします。比較値は、かっこで囲まれたコンマ区切りリストで入力してください。

IN ("東京","パリ","モスクワ")

BETWEEN

値の範囲をテストします。2 つの比較値 (小さい値と大きい値) を使う必要があり、AND 演算子によってそれらの値を区切る必要があります。

BETWEEN 100 AND 1000 (>=100 AND <=1000 と同じです)

LIKE

テキスト型フィールドとメモ型フィールドのパターン文字列の一致を検査します。

LIKE "Geo*"

IS NOT NULL

フィールドへの値の入力が制限されます。 これは、[必須] フィールド プロパティを [はい] に設定するのと同じです。 ただし、[必須] プロパティを有効にして、ユーザーが値を入力しなかった場合、わかりづらいエラー メッセージのみが表示されます。 通常は、IS NOT NULL を使い、[評価テキスト] プロパティにわかりやすいメッセージを入力した方が、データベースを使いやすくなります。

IS NOT NULL

AND

入力規則のすべての項目が true である必要のある条件を指定します。

>= #2007/01/01# AND <=#2008/03/06#

注: AND を使って、入力規則を組み合わせることもできます。たとえば、NOT "UK" AND LIKE "U*" などです。

OR

入力規則のすべての項目ではなく、一部が true である必要のある条件を指定します。

1 月 OR 2 月

<

小なり

<=

以下

>

大なり

>=

以上

=

等しい

<>

等しくない

入力規則におけるワイルドカード文字の使用

入力規則にはワイルドカード文字を使用することができます。Access では、2 つのワイルドカード文字セット (ANSI-89 と ANSI-92) がサポートされる点に留意してください。これらの標準では、それぞれ異なるワイルドカード文字セットが使用されます。

既定では、すべての .accdb ファイルと .mdb ファイルは ANSI-89 標準を使用します。

データベースの ANSI 標準を ANSI-92 に変更するには、次の手順に従います。

  1. [ファイル] タブの [オプション] をクリックします。

  2. [Access のオプション] ダイアログ ボックスで、[オブジェクト デザイナー] をクリックします。

  3. [クエリ デザイン] セクションの [SQL サーバー互換構文 (ANSI-92)] で、[このデータベース] を選択します。

ワイルドカード文字の使い方および SQL の ANSI 標準の詳細については、「Access ワイルドカード文字リファレンス」を参照してください。

ページの先頭へ

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

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

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

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

×