我希望這是一個簡單的問題的人。我有這種方法使用兩個表單字段來檢查我的表中是否存在記錄,並添加記錄或什麼都不做。因此,如果patient_id是100,visit_number是1,那麼如果它尚不存在,我將只添加一條新記錄。訪問,VBA:查找首先不能正常工作
因此,如果rst.NoMatch爲真 - 添加一條新記錄。但是,我無法讓它識別重複。這裏是代碼:
Private Sub add_record_button_Click()
Dim rst As DAO.Recordset
Set rst = Me.RecordsetClone
Dim dbs As DAO.Database
Set dbs = CurrentDb
If IsNull(Form.patient_id) Or IsNull(Form.visit_number) = True Then
MsgBox "Please fill in both fields."
Else
rst.FindFirst "[patient_id] = " & Form.patient_id & " And [visit_number] = " & Form.visit_number
If rst.NoMatch Then
Set rst = dbs.OpenRecordset("Visits")
rst.AddNew
rst!patient_id = Form.patient_id
rst!visit_number = Form.visit_number
rst.Update
MsgBox "New patient visit has been added to the database."
Else
MsgBox "That visit already exists."
End If
rst.Close
End If
End Sub
我相信我的FindFirst行不正確。在數據庫中,變量名爲patient_id和visit_number。在形式上,他們被命名爲相同。
任何幫助,將不勝感激,謝謝。
編輯。
從下面的評論,我能夠得到我的邏輯工作,但使用不同的比較功能,Dlookup。
IsNull(DLookup("[patient_id]", "MyTable", "[patient_id] = " & Forms("MyForm").patient_id & " AND [visit_number] = " & Forms("MyForm").visit_number)
FINAL EDIT。
如果我直接使用表單,但是如果我將表單放入導航表單 - 它停止工作,上面的行使所有工作都成功。從導航表單中最終得到它的字符串看起來像這樣:
If IsNull(DLookup("[patient_id]", "Visits", "[patient_id] = " & Me!patient_id.Value & " AND [visit_number] = " & Me!visit_number.Value)) = True Then
謝謝大家的幫助。
在DB patient_id數字字段? –
@ A.S.H是的,我把它設置爲「數字」 –
我沒有發現你的代碼有什麼問題。你的RecordsetClone是一個「表」記錄集嗎? –