2012-12-02 40 views
2

在Access 2007年,我有一个表格到一个新的联系人添加到一个表:的MessageBox如果记录更新成功

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. 因为
      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" 
    

    我知道这个代码是错误的,显然是行不通的,但它只是给你的,我有什么想法试图实现。感谢您提前提供的所有帮助。

  • 回答

    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输出I构建strCriteria时犯了一个错误。

    此处的意图是通过仅尝试添加不存在的联系人来避免重复错误情况。所以错误不应该发生,任何错误将由错误处理程序处理。