【问题标题】:MS Access Error TrappingMS 访问错误捕获
【发布时间】:2013-12-26 11:45:12
【问题描述】:

拜托,我对此的逻辑能力有限。

搜索条件的文本框和“搜索”按钮位于主表单上,而搜索结果位于弹出式表单上。

如果提供的条件与数据库中的任何记录都不匹配,我不希望打开详细信息表单。相反,我希望弹出错误消息“抱歉,没有搜索条件”,但在我当前的状态下,当没有匹配的结果/没有条件时,详细信息表单仍会打开,其中包含一些记录以及错误消息。

这是搜索按钮后面的代码:

Private Sub btnSearch_Click()
On Error GoTo Err_Msg

If Not IsNull(Me.Form) Then

    DoCmd.OpenForm "f_search"
    ' Update the record source
    Forms.f_search!f_search_sub.Form.RecordSource = "SELECT * FROM q_vehicles " & BuildFilter

    Me.Requery
Else

Exit_btnSearch_Click:
Exit Sub

Err_Msg:
MsgBox "Sorry, no search criteria.", vbInformation, "MV Clearance"
End If
End Sub

【问题讨论】:

  • 错误处理需要改进,对象需要关闭——详情请参阅 J. Bones 的回答。

标签: ms-access


【解决方案1】:

您可以轻松地进行搜索,然后仅当搜索返回结果时才打开表单:

Private Sub btnSearch_Click()
Dim rec as Recordset
Dim db as Database
On Error GoTo Err_Msg

Set db = CurrentDB

If Not IsNull(Me.Form) Then
    'First open the recordset
    Set rec = db.OpenRecordset("SELECT * FROM q_vehicles " & BuildFilter & "")

    'Check to make sure the recordset isn't empty.  If it is, exit the sub
    If rec.EOF = true then
        GoTo Err_Msg
    EndIf

    DoCmd.OpenForm "f_search"
    ' Update the record source
    Forms.f_search!f_search_sub.Form.RecordSource = "SELECT * FROM q_vehicles " & BuildFilter

    Me.Requery
Else

Exit_btnSearch_Click:
    Set db = Nothing
    Set rec = Nothing
Exit Sub

Err_Msg:
MsgBox "Sorry, no search criteria.", vbInformation, "MV Clearance"
End If
GoTo Exit_btnSearch_Click
End Sub

【讨论】:

  • 这是一个很好的答案,但我强烈建议您关闭 recdb 对象。最好在Exit Sub 之前完成……在消息之后使用Resume 将有助于实现这一点。
  • 很好,@Smandoli。我通常会这样做但错过了,我已经相应地编辑了代码。
  • 看起来不错。 +1。可能需要rec.Close
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-02-29
  • 2014-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-28
  • 1970-01-01
相关资源
最近更新 更多