2013-02-12 44 views
3

在這一段時間,現在的工作和我得到的運行時錯誤2501ACCESS 2003:檢查,看是否存在記錄BEFORE UPDATE,然後顯示消息,然後打開現有的記錄

我試圖後拉了一項紀錄。出現消息框,指出已找到重複項,並在單擊「確定」後拉起記錄。

我一直在修補DoCmd.FindRecord,DoCmd.GoToRecord和DoCmd.OpenForm方法無濟於事。

任何幫助將不勝感激。

在此先感謝。

Private Sub MRN_BeforeUpdate(Cancel As Integer) 
Dim Answer As Variant 
Answer = DLookup("[MRN]", "Requests Processed", "[MRN] = '" & Me.MRN & "'") 
If Not IsNull(Answer) Then 
MsgBox "Existing MRN found" & ": " & MRN.Text & vbCrLf & vbCrLf & "Please SEARCH and EDIT on EXISTING Record.", vbCritical + vbOKOnly + vbDefaultButton1, "EXISTING MRN FOUND" 
Cancel = True 
Me.MRN.Undo 
Else: 
End If 
DoCmd.OpenForm "Requests Processed", , , Answer 
End Sub 

回答

2

從幫助主題,該OpenForm方法的WhereCondition選項是 「字符串表達式,這是一個有效的SQL WHERE子句無字WHERE。

嘗試OpenForm這樣...

DoCmd.OpenForm "Requests Processed", , , "[MRN] = '" & Answer & "'" 

它看起來像我可以工作。不過看起來你可以使用相同的字符串來處理你的DLookup標準選項和你的OpenFormWhereCondition。如果這是真的創建一個字符串變量(例如strWhere)並在兩個地方使用它。

+0

剛剛嘗試過,邏輯上它應該可以運行,但遇到運行時錯誤2501:OpenForm操作被取消。 再次感謝您添加的任何指針。 – 2013-02-12 19:24:58

+1

這種形式是否可以打開?如果您僅通過「DoCmd.OpenForm」請求處理「'而沒有其他選項」,則表單可能已損壞。 – HansUp 2013-02-12 19:28:43

+0

重新編碼DoCmd.OpenForm「處理請求」沒有選項打開窗體沒有錯誤。表單的當前模式處於「創建新記錄」狀態。 – 2013-02-12 19:38:30

相關問題