入力規則を使ってデータ入力を制限する
Applies ToAccess for Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

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

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

簡単な例:

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

一般的に受け入れられる電子メール形式: Null OR ((例: "*?@?*.?*") AND ("*[ ,;] とは同じではありません*"))

5 未満または 5 未満の数値: <=5

通貨フィールドを負にすることはできません: >=0

文字列の文字数を制限する: Len([StringFieldName])<100

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

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

簡単な例:

終了日が開始日より前に来ないことを確認します: [終了日]>=[開始日]

注文日から 30 日以内に必要な日付を入力します:[RequiredDate]<=[OrderDate]+30

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

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

この記事の内容

概要

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

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

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

  • Data types   Every table field has a data type that restricts what users can enter. For example, a Date/Time field accepts only dates and times, a Currency field accepts only monetary data, and so on.

  • Field properties   Some field properties restrict data input. For example, the Field Size property of a field restricts input by limiting the amount of data.

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

  • Input masks   You can use an input mask to validate data by forcing users to enter values in a specific way. For example, an input mask can force users to enter dates in a European format, such as 2007.04.14.

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

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

入力規則の種類

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

  • Field validation rules   Use a field validation rule to check the value that you enter in a field when you leave the field. For example, suppose you have a Date field, and you enter >=#01/01/2010# in the Validation Rule property of that field. Your rule now requires users to enter dates on or after January 1, 2010. If you enter a date earlier than 2010 and then try to place the focus on another field, Access prevents you from leaving the current field until you fix the problem.

  • Record validation rules   Use a record validation rule to control when you can save a record (a row in a table). Unlike a field validation rule, a record validation rule refers to other fields in the same table. You create record validation rules when you need to check the values in one field against the values in another. For example, suppose your business requires you to ship products within 30 days and, if you don't ship within that time, you must refund part of the purchase price to your customer. You can define a record validation rule such as [RequiredDate]<=[OrderDate]+30 to ensure that someone doesn't enter a ship date (the value in the RequiredDate field) too far into the future.

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

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

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

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

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

検証規則には、式 (単一の値を返す関数) を含めることができます。 式を使うと、計算の実行、文字の操作、データのテストを行うことができます。 入力規則の式でデータをテストします。 For example, an expression can check for one of a series of values, such as "Tokyo" Or "Moscow" Or "Paris" Or "Helsinki". さらに、式は数学演算も実行できます。 たとえば、式 <100 を使うと、100 未満の値を入力するよう制限されます。 The expression ([OrderDate] - [ShipDate]) calculates the number of days that elapsed between the time an order was placed and the time it shipped.

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

ページの先頭へ

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

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

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

  • オートナンバー

  • OLE オブジェクト

  • 添付ファイル

  • レプリケーション ID

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

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

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

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

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

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

  2. [ テーブル フィールド] タブの [ フィールドの検証 ] グループで、[ 検証] をクリックし、[ フィールド検証メッセージ] をクリックします。

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

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

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

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

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

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

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

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

  2. [ テーブル フィールド] タブの [ フィールドの検証 ] グループで、[ 検証] をクリックし、[ 検証メッセージ] をクリックします。

  3. 適切なメッセージを入力します。 たとえば、検証規則が [StartDate]< [EndDate]の場合、メッセージは "StartDate が EndDate の前にある必要があります" である可能性があります。

ページの先頭へ

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

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

  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 ワイルドカード文字リファレンス」を参照してください。

ページの先頭へ

ヘルプを表示

その他のオプションが必要ですか?

サブスクリプションの特典の参照、トレーニング コースの閲覧、デバイスのセキュリティ保護方法などについて説明します。

コミュニティは、質問をしたり質問の答えを得たり、フィードバックを提供したり、豊富な知識を持つ専門家の意見を聞いたりするのに役立ちます。