TextBox.ValidationRule プロパティ (Access)

ValidationRule プロパティを使用して、レコード、フィールド、またはコントロールに入力されるデータの要件を指定します。 ValidationRule 設定に違反するデータが入力されると、ValidationText プロパティを使用して、ユーザーに表示するメッセージを指定できます。 読み取り/書き込みが可能な String です。

構文

Validationrule

TextBox オブジェクトを表す変数。

注釈

ValidationRule プロパティ設定の式と、ValidationText プロパティ設定のテキストを入力します。 ValidationRule プロパティ設定の最大長は 2048 文字です。 ValidationText プロパティ設定の最大長は 255 文字です。

コントロールの場合は、" ValidationRule /入力規則" を使用して、有効な式を設定できます。 フィールドとレコードの検証ルールの場合、式には、ユーザー定義関数、ドメイン集計関数、集計関数、 Eval 関数、 CurrentUser メソッド、またはフォーム、クエリ、またはテーブルへの参照を含めることはできません。 また、フィールドの入力規則には、他のフィールドへの参照を含む式も設定できません。 レコードの入力規則には、そのテーブルのフィールドへの参照を含む式を設定できます。

対象がテーブル フィールドやレコードの場合は、データ アクセス オブジェクトの DAO の ValidationRule プロパティを使用して、Visual Basic でこのプロパティを設定することもできます。

Microsoft Access では、フィールドのデータ型に基づいて値が自動的に検証されます。たとえば、Access では数値フィールドのテキストは許可されません。 ValidationRule プロパティを使用して、より具体的なルールを設定できます。

ValidationRule プロパティを設定しても ValidationText プロパティを設定しない場合、検証規則に違反したときに標準エラー メッセージが表示されます。 ValidationText プロパティを設定すると、入力したテキストがエラー メッセージとして表示されます。

たとえば、新しい従業員にレコードを追加する場合は、従業員の StartDate フィールドの値が会社の設立日と現在の日付の間に収まる必要がある ValidationRule プロパティを入力できます。 入力した日付がこの範囲にない場合は、 ValidationText プロパティ メッセージ "開始日が正しくありません" を表示できます。

フィールド リストからフィールドをドラッグしてコントロールを作成した場合、フィールドの検証ルールは有効なままですが、プロパティ シートのコントロールの ValidationRule プロパティ ボックスには表示されません。 これは、フィールドの入力規則が、そのフィールドに連結されているコントロールにも適用されるからです。

コントロール、フィールド、およびレコードの入力規則は次のように適用されます。

  • フィールドとコントロールに対して設定した検証ルールは、データを編集し、フォーカスがフィールドまたはコントロールから離れると適用されます。

  • レコードを保存して別のレコードに移動する場合は、レコードの入力規則が適用されます。

  • フィールドと、フィールドに連結されているコントロールの両方に対して入力規則を作成した場合は、データの編集後、フォーカスがコントロールから移動するときに、両方の入力規則が適用されます。

次の表は、"ValidationRule/入力規則" プロパティと "ValidationText/エラーメッセージ" プロパティの使用例です。

"ValidationRule/入力規則" プロパティ ValidationText プロパティ
<> 0 0 以外の値を入力します。
> 1000 Or Is Null 空白か、1,000 を超える数値を入力します。
Like "A????" エントリは 5 文字で、文字 A で始まる必要があります。
>= #1/1/96# And <#1/1/97# 1996 年の日付を入力します。
DLookup("CustomerID", "Customers", "CustomerID = Forms!Customers!CustomerID") Is Null 固有の得意先コードを入力します (定義域集計関数は、フォーム レベルの確認にのみ使えます)。

フィールドの検証規則を作成する場合、通常、Access では Null 値を フィールドに格納することはできません。 Null 値を許可する場合は、 のように"<> 8 Or Is Null"検証規則にを追加"Is Null"し、 [必須] プロパティが [いいえ] に設定されていることを確認します。

Access の外部で作成されたテーブル (dBASE、Paradox、SQL Serverなど) に対してフィールドまたはレコードの検証規則を設定することはできません。 ただし、これらのテーブルと連動したコントロールに対しては、入力規則を設定できます。

次の例では、65 以上の値だけの入力を認める入力規則をフィールドに対して作成します。 65 未満の値が入力された場合は、メッセージが表示されます。 プロパティは 、SetFieldValidation 関数を使用して設定されます。

Dim strTblName As String, strFldName As String 
Dim strValidRule As String 
Dim strValidText As String, intX As Integer 
 
strTblName = "Customers" 
strFldName = "Age" 
strValidRule = ">= 65" 
strValidText = "Enter a number greater than or equal to 65." 
intX = SetFieldValidation(strTblName, strFldName, _ 
 strValidRule, strValidText) 
 
Function SetFieldValidation(strTblName As String, _ 
 strFldName As String, strValidRule As String, _ 
 strValidText As String) As Integer 
 
 Dim dbs As Database, tdf As TableDef, fld As Field 
 
 Set dbs = CurrentDb 
 Set tdf = dbs.TableDefs(strTblName) 
 Set fld = tdf.Fields(strFldName) 
 fld.ValidationRule = strValidRule 
 fld.ValidationText = strValidText 
End Function

次の例では 、SetTableValidation 関数を使用してレコード レベルの検証を設定し、 EndDate フィールドの値が StartDate フィールドの値の後に確実に含まれるようにします。

Dim strTblName As String, strValidRule As String 
Dim strValidText As String 
Dim intX As Integer 
 
strTblName = "Employees" 
strValidRule = "EndDate > StartDate" 
strValidText = "Enter an EndDate that is later than the StartDate." 
intX = SetTableValidation(strTblName, strValidRule, strValidText) 
 
Function SetTableValidation(strTblName As String, _ 
 strValidRule As String, strValidText As String) _ 
 As Integer 
 
 Dim dbs As Database, tdf As TableDef 
 
 Set dbs = CurrentDb 
 Set tdf = dbs.TableDefs(strTblName) 
 tdf.ValidationRule = strValidRule 
 tdf.ValidationText = strValidText 
End Function

サポートとフィードバック

Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。