【问题标题】:MessageBox if Recordset Update is Successful记录集更新成功时的消息框
【发布时间】:2012-11-20 05:13:51
【问题描述】:

在 Access 2007 中,我有一个向表格添加新联系人的表单:

RecSet.AddNew
RecSet![Code_Personal] = Me.txtCodePersonal.Value
RecSet![FName] = Me.TxtFName.Value
RecSet![LName] = Me.txtLName.Value
RecSet![Tel Natel] = Me.txtNatTel.Value
RecSet![Tel Home] = Me.txtHomeTel.Value
RecSet![Email] = Me.txtEmail.Value
RecSet.Update

到目前为止,这已经奏效,并且已成功添加联系人。但是我有两个问题:

  1. 我想显示一个消息框告诉用户联系人已成功添加
  2. 如果未成功添加联系人,因为
    1. 已存在同名的联系人
    2. 另一个问题
      然后分别显示“联系人已存在”或“发生错误”消息框。

我这样做的想法是:

If recSet.Update = true Then
MsgBox "Paolo Bernasconi was successfully added"
Else if RecSet![FName] & RecSet![LName] 'already exist in table
MsgBox "Contact already exists"
Else 
MsgBox "An unknown error occured"

我知道这段代码是错误的,而且显然不起作用,但这只是为了让您了解我想要实现的目标。提前感谢您的所有帮助。

【问题讨论】:

    标签: validation vba ms-access ms-access-2007 recordset


    【解决方案1】:

    将错误处理程序添加到您的过程中。

    On Error GoTo ErrorHandler
    

    然后在更新记录集后立即向用户显示“成功”通知。

    RecSet.Update
    MsgBox RecSet![FName] & " " & RecSet![FName] & _
        " was successfully added"
    

    如果更新尝试失败,流控制将传递到ErrorHandler 部分。

    ErrorHandler:
        MsgBox "Oops!"
    

    毫无疑问,您想要比“糟糕!”更精致的东西。信息。一种巧妙的方法是使用Select Case 块根据错误号自定义响应。

    在尝试添加之前确定联系人是否已经存在。

    strCriteria = "Fname = '" & RecSet![FName] & "' AND LName = '" & _
        RecSet![LName] & "'"
    Debug.Print strCriteria
    If DCount("*", "YourTable", strCriteria) > 0 Then
        ' do not attempt to add it again
        MsgBox "Contact already exists"
    Else
        RecSet.AddNew
        ' and so forth
    End If
    

    检查Debug.Print 输出以防我在构建strCriteria 时出错。

    这里的目的是避免重复错误情况...仅尝试添加不存在的联系人。所以该错误不应该发生,任何other错误都将由错误处理程序处理。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-09-20
      • 1970-01-01
      • 1970-01-01
      • 2021-10-26
      • 1970-01-01
      • 1970-01-01
      • 2014-06-18
      相关资源
      最近更新 更多