2017-04-04 136 views
0

我是第一次使用VBA進行編碼,我正在創建一個數據庫,用於在我工作的心理實驗室進行數據錄入。目前數據庫已創建,但我想防止將重複條目放入數據庫(即通過讓代碼在輸入後立即查找參與者編號)。我一直在努力修復這段代碼很長一段時間,而我最近剛剛遇到了一堵牆。當我輸入參與者號碼時,它會顯示正確的錯誤信息,但它表示每個號碼都已輸入(儘管實際上沒有)。這裏是代碼:如何防止我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類型的字段一起使用。嘗試從

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

改變條件字段爲

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

謝謝你的建議,但這並沒有解決問題。我可以顯示錯誤消息,但是無論是否已經輸入,我都會輸入每個號碼。 –

+0

@BreannaWallbaum這句話是正確的。你應該檢查你的數據(你確定這些數字已經被輸入了嗎?),還要檢查字段名稱和表名。 –

+0

我認爲字段名稱和表名是正確的。我已經檢查過他們。數字還沒有輸入,這就是問題所在。我會知道,因爲我剛剛輸入了任意數據來測試數據庫,並且只輸入了2組數據。 –

0

如果你還沒有使用VBA您可以嘗試通過在設計視圖中打開表做到這一點。這種方法很容易,也是一個不錯的選擇。你可以看看這裏: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

我已經這樣做了,但是我需要用戶得到一條錯誤消息,表明它已經被輸入。另外,我設置數據庫的方式不會讓評估者訪問屏幕頂部的功能區。他們所要做的就是點擊進入下一個表單(所以索引選項將不起作用)。不過謝謝您的幫助。 –

+0

有沒有一種方法可以在評估者擊中下一個按鈕時顯示錯誤消息? –