在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
到目前为止,这已经成功,联系已经成功。但我有两个问题:
我这样做的想法是:
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"
我知道这段代码是错的,显然不起作用,但它只是让你知道我想要实现的目标。提前感谢你的帮助。
答案 0 :(得分: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
时出错。
这里的目的是避免重复错误条件...仅尝试添加不存在的联系人。因此错误不应该发生,任何其他错误都将由错误处理程序处理。