私が参加し、テーブルを持って、2つのテーブルからのFKを構成されています。これらの2つのフィールドは複合ユニークキーインデックス用に設定されており、可能であればDlookUpで重複をチェックする必要があります。ここに私が試みたものがあります:アクセスVBA - 重複をチェックするためのDLookup(複合一意キー)
Nz(DLookup("PK_JoinTable", "JoinTable", "FK_FirstTable = " & Me.FK_FirstTable & "AND FK_SecondTable= " & Me.FK_SecondTable & _
" AND PK_JoinTable <> " & Nz(Me.PK_JoinTable, 0)), 0)
このケースではDLookUpを使用できますか?
編集:ここに私の表のデザインです...
JoinTable
PK_JoinTable
FK_FirstTable
FK_SecondTable
これらの外部キーテーブルのフィールドが一意のインデックスを持っています。私は、コンボボックスを介して両方のテーブルに参加するデータを入力するフォームを持っています。そして、私は重複したエントリを防ぐ必要があります。 Before_Updateイベントと「Save」ボタンのClickイベントの両方で。
Dim Duplicates As Long
Duplicates = Nz(DLookup("PK_JoinTable", "JoinTable", "FK_FirstTable = " & Me.FK_FirstTable & "AND FK_SecondTable= " & Me.FK_SecondTable & _
" AND PK_JoinTable <> " & Nz(Me.PK_JoinTable, 0)), 0)
If Duplicates > 0 Then
Cancel = True
MsgBox "Duplicate entry. This record will not be saved !, vbCritical
DoCmd.RunCommand acCmdUndo
Exit Sub
Else
' nothing
End If
ことは可能ですが、それは私に従っ良い方法はありません。 Dlookupは1つの値のみを返し、1つのテーブルのみを照会できます。純粋なSQLとレコードセットを使用するか、クエリを作成する方がよいでしょう。これに助けが必要な場合は、質問を編集してtableS構造体とデータサンプル –
@ ThomasGを追加してください。私の編集した質問をご覧ください。少し明確ですが、間違って何か明らかにあります – LuckyLuke82
:あなた 'Dlookup'では、あなたは' PK_JoinTable'という名前の列に取り組み、私はあなたのテーブル構造体で説明し、この列は表示されません。だから、まだ混乱している。 –