• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:access ダブリ登録を防止したい)

ダブリ登録を防止する方法とは?

このQ&Aのポイント
  • ダブリ入力を防止したい場合、フォームのデータシートビューのコントロールに警告文を表示させる方法があります。
  • 重複クエリ・ウィザードを使用し、テーブルのレコードを参照し、Dcountで重複する行数を確認し、2以上の場合に警告文を表示することができます。
  • しかし、現在問題が発生しているようで、クエリ結果とDcountの数が一致しないようです。

質問者が選んだベストアンサー

  • ベストアンサー
  • venzou
  • ベストアンサー率71% (311/435)
回答No.3

インデックスの設定で解決していれば蛇足ですが・・・ インデックスを指定した場合、エラーが出るのはコントロールの入力時ではなく、レコードの登録時になります。 入力時に、即メッセージを表示したいなら、コントロールで処理すべきだと思います。 例:入力規則を設定 コントロールのプロパティ、データ→入力規則 DCount("*","テーブル名","フィールド名='" & [Forms]![フォーム名]![フィールド名] & "'")=0 現在のレコードはまだ保存されていないので、=0 です。 例:イベントで処理 Private Sub フィールド名_BeforeUpdate(Cancel As Integer) If DCount("*", "テーブル名", "フィールド名='" & Me![フィールド名] & "'") >=1 Then MsgBox "重複しています。" Cancel = True End If End Sub 現在のレコードはまだ保存されていないので、>=1 です。 更新後処理ではなく、更新前処理の方が適しています(キャンセルできるので)。 >Dcountで2以上を返したら警告文を表示、としましたが、うまくいきません。 現在のレコードはまだ保存されていませんので、1以上でエラーにすべきだと思います。

PearlJam69
質問者

お礼

遅くなりましたが、ありがとうございました。 うまくいきました。

その他の回答 (2)

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

テーブルでユニークになるようにキー設定すればいいのでは? テーブルで重複不可なら、更新した時点でエラーメッセージが出ますけど... 上記が出来ない場合でも重複クエリをカウントでなく、 元のテーブルでDCOUNTで件数が1以上ならメッセージにすればいいのでは?

回答No.1

一番単純な方法です。 テーブル設計時にダブって入力させたくないフィールドのプロパティで インデックスの欄に はい(重複無し)を設定すればそのレコードは 保存されません。

関連するQ&A

専門家に質問してみよう