2

在 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"

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

4

1 回答 1

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

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

于 2012-12-02T17:01:12.770 回答