土曜の昼、学校帰りの昼メシの思い出

Access初心者です。

フォームで入力時に重複データを入力した場合
エラーメッセージとして受け付けないようにしたいのですが、もっとも簡単な方法を教えてください。
よろしくお願いします。

A 回答 (4件)

No.3です。



> このときにエラーメッセージを出すのは難しいのですかね?

テーブルでの入力・編集には対応できなくなりますが、フォームからの入力・編集に
限定してよいのでしたら、対応法は幾つかあると思います。

No.1の方の回答にあるように、更新前イベントにチェック機能を組み込むのも手ですが、
「マクロやVBAはちょっと・・・」と思われるのでしたら、『入力規則』を設定してやるのが
簡単だと思います。
(但し、複数フィールドの組み合わせで重複チェックを行う場合は、ややこしくなります;
 従って、今回はそちらの説明は割愛させていただきます)

○『入力規則』と『エラーメッセージ』の設定方法;
 1)フォームをデザインビューで開く
 2)重複チェックを行うコントロール(テキストボックス等)をダブルクリックして、
  そのコントロールのプロパティシートを開く
 3)プロパティシートの『データ』タブをクリック
 4)『入力規則』欄に「Dcount("*","テーブル1","[ID]=[TB_ID]")=0」と入力
 5)『エラーメッセージ』欄に、出させたいメッセージを入力
  (改行を入れて複数行にしたい場合は、Shift+Enterキーを押します)
 6)フォームを保存
・・・以上です。

なお、
 ・重複チェックを行うテーブル=「テーブル1」
 ・重複チェックを行いたいフィールドの名前=「ID」
 ・「ID」を表示させるためのテキストボックス=「TB_ID」
  (「TB_ID」テキストボックスの『コントロールソース』=「ID」)
として説明しています。
実際のテーブル名・フィールド名・コントロール名に合わせて、「テーブル1」
「ID」、「TB_ID」の部分を変更して下さい。


上記の設定をすると、重複データを入力した場合にはメッセージが表示され、
重複しないデータを入力し直すか、Escキーを押して入力を取り消さない限り、
他のコントロールに移動したりデータを保存したりすることができなくなります。
    • good
    • 3

もし、1フィールドでの重複を判定したいということでしたら、No.1,2の方が回答されている


『インデックス』ダイアログボックスを表示させなくても、設定は可能です。
(「複数フィールドの組み合わせで判定したい」「設定したインデックスを一覧的に確認したい」
 という場合は、同ダイアログを表示させた方が便利ですが)


○1フィールドで重複したデータを受け付けないようにしたい場合;
 1)テーブルをデザインビューで開く
 2)重複させたくないフィールドにカーソルを移動
 3)画面左下の『インデックス』を、「はい(重複なし)」に設定
 4)テーブルを保存
 ・・・以上です。
 なお、すぐ上の『値要求』を使えば、『インデックス』とは無関係に、空白(Null)を許可
 するかどうかを設定できます。

○2つ以上のフィールドの組み合わせでの重複を避けたい場合;
  (「ID」と「サブID」の組み合わせでデータを管理する場合など)
 1)テーブルをデザインビューで開く
 2)メニューで「表示(V)→インデックス(I)」を選択
 3)『インデックス:○○』ダイアログボックスの『インデックス名』欄に
  適当な名前を入力し、組み合わせの対象となるフィールド群を
  『フィールド名』欄に設定
 4)『インデックス名』を入力した行にカーソルを移動
 5)ダイアログボックスの左下にある『固有』欄に「はい」を設定
 6)テーブルを保存
 ・・・以上です。
 『Null無視』により、上と同様、空白(Null)を許可するかどうかを、『固有』の設定に
 関係なく指定できます。
    • good
    • 0
この回答へのお礼

ありがとうございます。
早速やってみましたら入力はでき、レコード保存時に
リレーションシップなんたらというメッセージで
重複を防いでいるのですね。
このときにエラーメッセージを出すのは難しいのですかね?
何も知らなくてすみません。
よろしくお願いいたします。

お礼日時:2006/11/08 18:06

#1です。


ツールバーの主キー(鍵型のアイコン)の隣に
インデックス(稲妻のアイコン)があります。
これで主キー以外に固有のインデックスが作れます。
    • good
    • 1
この回答へのお礼

ありがとうございます。
早速試しましたら、#3さんと同じメッセージが出るのですね。
やはり”同じ名前は入力できません”エラーメッセージを出すのはむずかしいのでしょうか?
VBAとかいうのを使うのでしょうか?

お礼日時:2006/11/08 18:10

元のテーブルで、固有のキーとして登録すれば重複の登録は出来ませんが...


ただ、上記の指定をした場合、空白は許されなくなりますので注意してください。

上記以外だと、そのフィールドの更新前イベントで
DCOUNT関数を使って、結果が0でなければメッセージを表示させて元の値に戻すとか?
    • good
    • 0
この回答へのお礼

ありがとうございます。
"固有のキー"というのは、主キーのことですか?
主キーは、他のフィールドにしているので
具体的にはどうすればよいでしょうか?
初心者過ぎてすみませんが教えてください。

お礼日時:2006/11/08 12:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A