2013-02-12 56 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

相关问题