2017-04-04 7 views
0

私はVBAで初めてのコーダーです。私はPsych Labでデータ入力用のデータベースを作成しています。現在データベースが作成されていますが、重複したエントリがデータベースに格納されないようにしたいのです(つまり、参加者番号が入力された直後に参加者番号を調べることによって)。私はかなり長い間、このコードを修正しようとしており、私は最近壁にヒットしました。参加者番号を入力すると正しいエラーメッセージが表示されますが、すべての番号が既に入力されていると表示されます(実際には入力していなくても)。コードは次のとおりです。Accessデータベースに重複するエントリを防止するにはどうすればよいですか?

Private Sub Participant_Number_BeforeUpdate(Cancel As Integer) 

    Dim Participant_Number As Integer 

    Dim StLinkCriteria As Integer 

    If (Not IsNull(DLookup("[Participant_Number]", "Entry Log", "[Participant_Number] ='" & Me.Participant_Number.Value & "'"))) Then 
     MsgBox "Participant Number has already been entered in the database." 
    Cancel = True 
    Me.Participant_Number.Undo 
    End If 

End Sub 

何か助けていただければ幸いです。私は以前はVBAを使ったことが一度もありませんでした。私はコード作成の方法を自習しています。

答えて

1

あなたのParticipant_Numberフィールドはnumberだと思います。条件を一重引用符で囲むべきではありません'、これらはtextタイプのフィールドと共に使用されます。あなたはVBAを使用していない場合は、デザインビューでテーブルを開くことによって、これを実行しようも

"[Participant_Number] = " & Me.Participant_Number.Value))) Then 
+0

提案ありがとうございますが、これは問題を解決しませんでした。エラーメッセージが表示されることがありますが、すでに入力されているかどうかにかかわらず、入力するすべての番号に表示されます。 –

+0

@BreannaWallbaumこの構文は正しいです。あなたはあなたのデータをチェックしてください(数字が*すでに入力されていることを確かめてください)?フィールド名とテーブル名もチェックしてください。 –

+0

フィールド名とテーブル名が正しいと私は肯定的です。私はすでにそれらをチェックしました。数字はまだ入力されておらず、それが問題です。私は、データベースをテストするために任意のデータを入力し、2セットのデータしか入力しなかったので、わかります。 –

0

"[Participant_Number] ='" & Me.Participant_Number.Value & "'"))) Then

から基準フィールドを変更してみてください。この方法は簡単で良い選択です。あなたはここで見ているかもしれません:https://support.office.com/en-us/article/Prevent-duplicate-values-in-a-field-b5eaace7-6161-4edc-bb90-39d1a1bc5576?ui=en-US&rs=en-US&ad=US&fromAR=1

+0

私は既にそれを行っていますが、ユーザーにはすでに入力済みであるというエラーメッセージが必要です。また、エントリーのためにデータベースを設定する方法では、評価者は画面上部のリボンにアクセスできません。彼らが行うのは、Enterキーを押して次のフォームに移動するだけです(インデックスオプションは機能しません)。しかし、助けてくれてありがとう。 –

+0

は、評価者が次のボタンを押すとエラーメッセージが表示される方法はありますか? –

関連する問題