• 締切済み

accessで重複を防ぎたい

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

みんなの回答

  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.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キーを押して入力を取り消さない限り、 他のコントロールに移動したりデータを保存したりすることができなくなります。

  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.3

もし、1フィールドでの重複を判定したいということでしたら、No.1,2の方が回答されている 『インデックス』ダイアログボックスを表示させなくても、設定は可能です。 (「複数フィールドの組み合わせで判定したい」「設定したインデックスを一覧的に確認したい」  という場合は、同ダイアログを表示させた方が便利ですが) ○1フィールドで重複したデータを受け付けないようにしたい場合;  1)テーブルをデザインビューで開く  2)重複させたくないフィールドにカーソルを移動  3)画面左下の『インデックス』を、「はい(重複なし)」に設定  4)テーブルを保存  ・・・以上です。  なお、すぐ上の『値要求』を使えば、『インデックス』とは無関係に、空白(Null)を許可  するかどうかを設定できます。 ○2つ以上のフィールドの組み合わせでの重複を避けたい場合;   (「ID」と「サブID」の組み合わせでデータを管理する場合など)  1)テーブルをデザインビューで開く  2)メニューで「表示(V)→インデックス(I)」を選択  3)『インデックス:○○』ダイアログボックスの『インデックス名』欄に   適当な名前を入力し、組み合わせの対象となるフィールド群を   『フィールド名』欄に設定  4)『インデックス名』を入力した行にカーソルを移動  5)ダイアログボックスの左下にある『固有』欄に「はい」を設定  6)テーブルを保存  ・・・以上です。  『Null無視』により、上と同様、空白(Null)を許可するかどうかを、『固有』の設定に  関係なく指定できます。

fujiko2006
質問者

お礼

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

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.2

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

fujiko2006
質問者

お礼

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

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

元のテーブルで、固有のキーとして登録すれば重複の登録は出来ませんが... ただ、上記の指定をした場合、空白は許されなくなりますので注意してください。 上記以外だと、そのフィールドの更新前イベントで DCOUNT関数を使って、結果が0でなければメッセージを表示させて元の値に戻すとか?

fujiko2006
質問者

お礼

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

関連するQ&A