Dcountを複数条件で、変数を使ってカウントしたい
お世話になります。
[装置管理マスタ]というテーブルを使ったフォームに、[受注Noフル_テキスト]というテキストボックスがあります。
そのテキストボックスのコントロールソースは[受注Noフル]というフィールドです。
同じテーブルに[削除日時]というフィールドがあります。
このテキストボックスに過去のデータと重複がないか確認したいです。
[受注Noフル_テキスト]のExitイベントに以下のコードを記述しました。
Dcountを使って、削除日時フィールドが空白、かつ現在のレコード以外で、受注Noフルのフィールドが重複しているものがあるかカウントしたいです。
ところが
varCheck = DCount("*", "装置管理マスタ", "受注Noフル ='" & varNo & "'and 削除日時 Is Null and ID <> crid")
の部分がエラーになってしまいます。
いろいろ修正してみましたが、解決しません。
” や ’ の位置がおかしいのかな?と思い修正してみましたが、だめでした。
これ以外の方法で、Requeyや、クエリをつかってやってみたんですが、フォームが分割フォームのためか、自分自身をカウントしてしまい、レコードの修正時と新規レコードの入力時でカウント数が変わってしまうため、諦めました。
何をどうしたらよいのか、ご教授下さい。
Private Sub 重複確認()
'受注No重複確認マクロ
Dim varNo As String '受注Noを入れる変数
Dim varCheck As String '既登録分を調べた結果を入れる変数
Dim crid As Integer '自分自身のIDを取得する変数
crid = Me.ID'現在のレコードのID(主キー)
If IsNull(Me.受注Noフル_テキスト) = False Then
varNo = Me.受注Noフル_テキスト ' 入力した受注Noを変数に代入
Else
MsgBox "受注Noが未入力のため、登録できません。"
End
End If
'現在のデータをカウント対象からはずして、現在のレコードと同じ受注Noがあるかカウント
varCheck = DCount("*", "装置管理マスタ", "受注Noフル ='" & varNo & "'and 削除日時 Is Null and ID <> crid")
'重複条件チェック
If varCheck = 0 Then
'MsgBox "重複なし"
Else
MsgBox "受注Noが重複しています。登録できません。"
Me.受注Noフル_テキスト.SetFocus
End
End If
End Sub
varCheck = DCount("*", "装置管理マスタ", "受注Noフル ='" & varNo & "'and 削除日時 Is Null")
の場合はコード自体はうまくいくのですが、自分自身をカウントし、結果が0にならない場合があります。
変数は""の外に出す必要があります。""ないだと単なる文字列です。
IDフィールドが数値型かオートナンバー型なら、下記でどうでしょう。
早々のご回答ありがとうございます!
できました!
いつも " や ' の位置に悩まされ、よくわからなくなってしまいます。
これからもっと勉強します。
ありがとうございました。