MS Access Tips/Sample and VBA and Blog customize etc...

テーブルでの入力チェック、入力規制

入力チェック、入力規制をする場合、フォーム上で、入力規則プロパティ、更新前処理でVBAでのチェックなどで、可能です。 しかし、テーブルでの設定で可能なことが多くあります。テーブルで可能なことは、テーブルで行う、というのが基本ではないかと思います。

テーブルで設定しておけば、複数のフォームでテーブルを共有する場合でも、一ヶ所の設定ですみます。また、テーブルを直接開いて編集した場合でも規定外のデータが入力されるのを防ぐことができます。

今回は、テーブル上で可能な入力チェックについて、いくつか設定例を紹介ます。

TblValidationRule.png

難易度:

■桁数を規制する。

テキスト型の場合は、「フィールドサイズ」で設定します。ただし全角でも半角でも1文字と計算します。

半角1バイト全角2バイトの計算でバイト単位で制限したい場合は、「入力規則」で下記のように設定します。

入力規則  LenB(StrConv([フィールド名],128))<=5
エラーメッセージ  5バイト以下で入力してください。

■重複チェック、登録済みのデータの登録禁止

「インデックス」プロパティを「はい(重複なし)」にする。ただし、エラーメッセージを独自のものにする場合、フォーム上での設定も合わせて必要。

フォーム上のテキストボックスのプロパティを下記のように設定。

入力規則  DLookUp("フィールド名","テーブル1","フィールド名='" & [フィールド名] & "'") Is Null
エラーメッセージ 重複してます。

テーブルの 入力規則では、DLookupは使えない仕様です。

■入力必須、Null や 空文字列を許可しない。

テキスト型、メモ型の場合は、

値要求  はい
空文字列の許可  いいえ

上記以外の型は、値要求のみ設定でOKです。

独自メッセージを表示させたい場合は、

値要求  いいえ
入力規則  Is Not Null And <> ""
エラーメッセージ  入力してください。

■半角のみ許可

IME入力モードを「オフ」まはた「使用不可」にする。

■ちょっと複雑なチェック

アルファベットと数字のみ入力許可

入力規則  Not Like "*[!0-9A-Z]*"
エラーメッセージ  アルファベットと数字以外は入力できません。

Like演算子をうまく使うとかなり複雑な入力チェックも可能になります。

例えば、電話番号フィールドなら

入力規則  Like "(###)###-####" Or Like "(##)####-####" Or Like "(####)##-####"

■複数のフィールドが関係する入力チェック

この場合はフィールドプロパティの「入力規則」ではチェックできないので、テーブルプロパティの「入力規則」を使います。

例えば、

入力規則  [開始日] < [終了日]
エラーメッセージ  「終了日」は「開始日」より後しかダメ


入力規則  IsNull([郵便番号]) Eqv IsNull([住所])
エラーメッセージ  郵便番号と住所は、両方とも入力するか、両方とも未入力にしてください。

このように工夫次第で、テーブルでもかなり複雑に入力チェックは可能です。また、テーブルで設定可能なチェックはテーブルに設定しておいた方が、規定外のデータが格納されるのをより強固に排除できます。

ただし、チェックに引っかかったフィールドへフォーカスを移動させるとか、間違いを指摘する、自動で書きかえるなどのユーザーインタフェイスでの細かい誘導はできませんので、そちらを実現したい場合は、フォームで、VBAを利用した処理を追加することになります。


拍手する

Leave a reply






Trackbacks

trackback URL
http://hatenachips.blog34.fc2.com/tb.php/114-e69cd6dc
該当の記事は見つかりませんでした。