アプリ版:「スタンプのみでお礼する」機能のリリースについて

 ダブリ入力を防止したいのです。一作業で大量に入力するので、ダブリ入力をしたらその場でダブったことを知らせる警告文を表示させたいと思っています。
 入力はフォームのデータシートビューのコントロール(テキストボックス)に入力させてます。このフォームのレコードソースはテーブルです。

 コントロール(テキストボックス)の更新後処理としてやっているのですが、うまくいきません。
 重複クエリ・ウィザードでレコードソースであるテーブルそのものを参照して、Dcountで2以上を返したら警告文を表示、としましたが、うまくいきません。クエリ結果とDcountの数がなぜか一致しません。

 いま行き詰まってます。よろしくご教授ねがいます。

A 回答 (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以上でエラーにすべきだと思います。
    • good
    • 1
この回答へのお礼

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

うまくいきました。

お礼日時:2007/02/14 16:01

テーブルでユニークになるようにキー設定すればいいのでは?


テーブルで重複不可なら、更新した時点でエラーメッセージが出ますけど...

上記が出来ない場合でも重複クエリをカウントでなく、
元のテーブルでDCOUNTで件数が1以上ならメッセージにすればいいのでは?
    • good
    • 0

一番単純な方法です。


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

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

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


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