Microsoft Access 掲示板

重複チェックの方法、タイミングなど / 1

3 コメント
views
4 フォロー
1
hatena 2024/02/08 (木) 18:42:00 修正

口座番号の選択時を狙って、更新前処理で下記を設定したところ、重複関係なく全ての口座番号でエラーメッセージ
が出力されてしまいました。

VBA内でDCount関数を使用するときは、参照するコントロールは文字列の外にだす必要があります。""内にいれたら単なる文字列ですのでコントロールを参照できません。下記のようにしてください。

DCount("口座番号", "T_機械設定", "[口座番号]='" & Me.cmb_口座番号 & "'")=0

作業者が、現在作業中の機械設定を登録しようとした時、設定が既に登録されていた場合を想定して
重複エラーのメッセージを入力工程の ”なる早" で出したいと思い、

ご希望のことは、
「F_機械設定入力」の「cmb_口座番号」には、「T_機械設定」にすでに存在している口座番号は入力できないようにしたい。
ということですよね。

ならば、メッセージを出すより、最初から「cmb_口座番号」のドロップダウンリストからすでに存在している口座番号を除いておいて選択できないようにするのがいいでしょう。

「cmb_口座番号」の値集合ソースに下記のSQLを設定。

SELECT T_ORDER.* 
FROM T_ORDER LEFT JOIN T_機械設定
 ON T_ORDER.口座番号 = T_機械設定.口座番号
WHERE T_機械設定.口座番号 Is Null;

「cmb_口座番号」のフォーカス取得時のイベントプロシージャを下記のように記述。

Private Sub cmb_口座番号_Enter()
    Me.cmb_口座番号.Requery
End Sub

これで「T_機械設定」に既に存在する口座番号はリストに表示されないので選択できません。

リストから選択せずにテキストボックス部に直接入力した場合に備えて、
「cmb_口座番号」の「入力チェック」プロパティを「はい」に設定して、
リスト外入力時のイベントプロシージャを下記のように記述します。

Private Sub コンボ7_NotInList(NewData As String, Response As Integer)
    MsgBox NewData & "は既に存在するために入力できません。"
    Response = acDataErrContinue '既定のメッセージをユーザーに表示しない
End Sub
通報 ...