Accessのフォームで受付番号を入力するように作成しています。
受付番号を入力したときに、既に入力済みの番号であればメッセージウィンドウを表示して、重複した番号の入力を防ぐ方法を解説します。
参考ここでは[ドキュメントウィンドウオプション]で[ウィンドウを重ねて表示する]を選択しています。[ウィンドウを重ねて表示する]と[タブ付きドキュメント]の違いについては、以下の記事で解説しています。
-
[タブ付きドキュメント]と[ウィンドウを重ねて表示する]の違い
Access2007以降、オブジェクトを表示すると、タブ付きウィンドウで表示されるようになっています。 昔からAccessを使用している方に ...
テーブルについて
テーブル[T_申込]で[ID]は[オートナンバー型]、[受付番号]の[インデックス]は[はい(重複なし)]の設定にしています。
テーブルで[受付番号]の[インデックス]は[はい(重複なし)]の設定にしているので重複は避けられるのですが、この場合、重複した番号があれば、レコードを保存するときにAccessのメッセージが表示されます。
インデックス、主キー、またはリレーションシップで重複する値が生成されるため、テーブルを変更できませんでした。重複する値のあるフィールドの値を変更するか、インデックスを削除してください。または重複する値を使用できるように再定義してください。
上記のシステムのメッセージではなく、フォームのエラーメッセージで分かりやすい簡潔なメッセージに変更します。
また、テキストボックス[受付番号]の入力規則で設定すると、レコードの保存時でなく、[受付番号]を入力して次のテキストボックスに移動するときに表示されるので、重複に早く気づくことができます。
フォームの確認
テーブル[T_申込]を基にフォームを作成します。
ここでは、[受付番号]のテキストボックスの名前を[txt受付番号]にしています。テーブルの[受付番号]とフォームの[受付番号]を識別するためです。
テキストボックスの[入力規則]へ入力
テキストボックス[txt受付番号]のプロパティを表示します。
参考プロパティシートは、[F4]キーで表示/非表示の切り替えができます。
[txt受付番号]のプロパティの[データ]タブにある[入力規則]に以下のように書き込みます。
DCount("*","T_申込","[受付番号]=[txt受付番号]")=0
[T_申込]はテーブル名です。
[エラーメッセージ]には、メッセージウィンドウに表示したい文字列を入力します。
ここでは、以下のように入力しています。
登録済みの番号です。受付番号を確認してください。
条件を追加したい場合
条件を追加したい場合は、And 演算子を使用して組み合わせて指定します。検査式にフィールド名を使用する場合は、半角カッコ[[]]で囲みます。Andの左右は半角スペースを入力します。
例えば、[申込者様名]の入力規則に以下のように入力します。
前提として、フォームのコントロール[申込者様名]の名前を[txt申込者様名]に変更し、テーブルの[受付番号]と[申込者様名]のインデックスは[いいえ](または[はい(重複あり)])に変更している場合です。
テーブルで2つのフィールドに[主キー]を設定しているような場合に設定するといいと思います。
DCount("*","T_申込","[受付番号]=[txt受付番号] And [申込者様名]=[txt申込者様名]")=0
参考以下は、Microsoftのヘルプページです。簡単な例も記載されているので分かりやすいと思います。
入力規則を使ってデータ入力を制限する - Access(Microsoft)
[入力規則]プロパティについては、以下の記事でも解説しています。
-
[入力規則]プロパティでフィールドの文字数を制限する
Accessでテキストボックスに入力できる文字数を制限する方法です。テーブルのフィールドサイズで文字数を制限できますが、[入力規則]プロパテ ...
フォームビューで確認
フォームビューに切り替えて確認します。
フォームの[受付番号]に重複したデータを入力して、次のテキストボックスに移動しようとすると、以下のようにエラーメッセージが表示されるようになります。
メッセージの内容は、プロパティの[エラーメッセージ]に入力した内容です。
参考Excelでも入力規則を使って、重複データの入力を防ぐことができます。
-
重複データが入力されたらメッセージを表示して規制するには
Excelで1つの列に重複した値を入力できないように規制する方法を紹介します。 Excel2013で解説しますが、他のバージョンも同じ方法で ...
DCount関数について
DCount関数は条件に一致するレコードの件数を求めることができます。
DCount("対象フィールド", "テーブル/クエリ", "条件")
以下は、MicrosoftのDCount関数に関する解説です。
DCount 関数 - Access(Microsoft)
参考レコード検索時に該当するレコードがない場合にメッセージを表示する方法は、以下の記事で解説しています。
-
レコード検索時に該当するレコードがない場合はメッセージを表示する
フォームに検索ボックス(テキストボックス)を設置して、管理番号を入力したら該当のレコードを抽出する仕組みを作ります。 その時、検索ボックスに ...
以下も、DCount関数に関する記事です。
-
テーブル/クエリにレコードが1件もない時にメッセージを表示する
Accessのテーブル/クエリでレコードが1件もない時、そのテーブルを基にして作成したフォームを開こうとする場合は、[データがありません]と ...
-
0を除く平均値を求めるには(Sum関数とDCount関数)
Accessでアンケート集計を作成することになりました。 各質問に[0から5]の5段階の評価をつけもらうことにしました。 ただし、[0]は、 ...
-
重複しないデータの個数とレコードの抽出件数をテキストボックスに自動表示
Accessのフォームに重複しないデータの個数を表示する方法を紹介します。 下のようにフォームヘッダーのテキストボックスに部署数の重複しない ...
-
フィールドの同じ値の数をカウントするにはクエリでグループ化
クエリのグループ化は、グループごとに集計できる便利な機能です。 たとえば、1つのフィールド内の同じデータをグループ化して、合計やカウント、平 ...
-
オートナンバー型を使わずに[数値型]を使って自動的に連番を入力する
Accessのテーブルでコードなどに、オートナンバー型を使っているとなにかと不便を感じることもあります。 番号に欠番が生じた場合、再度、番号 ...