先谢谢了作者: Henry D. Sy 时间: 2009-1-15 15:17
在姓名控件更新前判断作者: tzh1600 时间: 2009-1-15 15:25
版主在啊,先谢谢了
一直没理解应该是更新前还是更新后
判断的代码应该怎么写呢?
麻烦版主给个代码示例,需要我传例子也行作者: Henry D. Sy 时间: 2009-1-15 15:33
一直没理解应该是更新前还是更新后
应该是更新前,如果是更新后记录已经保存了。
你把例子传上来作者: WDLRCZT 时间: 2009-1-15 16:33
更新前事件,用DLookup来判断
if IsNull(DLookup("[ID]", "人员档案表", "[姓名] = '" & me.姓名 & "'")=False then
msgbox "有重复"
end作者: 01ymym 时间: 2009-1-15 16:56
上面的好像还出错呢。系统报是语法错误。
[ 本帖最后由 01ymym 于 2009-1-15 17:04 编辑 ]作者: WDLRCZT 时间: 2009-1-15 17:50
if IsNull(DLookup("[ID]", "人员档案表", "[姓名] = '" & me.姓名 & "'"))=False then
msgbox "有重复"
end
[ 本帖最后由 WDLRCZT 于 2009-1-15 17:52 编辑 ]作者: Henry D. Sy 时间: 2009-1-15 20:34
用dcount性能相对要好点作者: tzh1600 时间: 2009-1-16 15:07
不好意思,年前比较忙,昨天发完帖子临时有事情忙得没时间上来。
根据版主和WDLRCZT的提示,做了个例子
存在的问题:
1、ID是自动编号的,姓名字段也绑定,一旦输入姓名则记录自动保存
则调出人员同名记录后即使判断出和以前的记录是同一个人,这条错误的记录也已经保存了;
2、调出的人员子窗体好象不能筛选
3、个人感觉版主的DCOUNT也可以,只是不知道代码该怎么写,版主有心请帮我用DCOUNT写段代码,学习学习
请版主和高手更正下例子中的错误,谢谢作者: Henry D. Sy 时间: 2009-1-16 19:57
Private Sub 姓名_BeforeUpdate(Cancel As Integer)
Dim Response
If DCount("[人员ID]", "人员", "[姓名] = '" & Me.姓名 & "'") > 0 Then
DoCmd.OpenForm "人员子窗体", acFormDS, , "[姓名] ='" & Me.姓名 & "'"
Response = MsgBox("已经有名叫" & Me.姓名 & "的人员" & vbCrLf & "保存按OK,不保存按Cancel", _
vbOKCancel, "重复提示")
If Response = vbCancel Then
Cancel = True
Me.姓名.Undo
End If
DoCmd.Close acForm, "人员子窗体"
End If
End Sub作者: lingjiang 时间: 2009-1-16 22:53
[:33] [:33]作者: linag516 时间: 2009-2-27 10:58 作者: chaojianan 时间: 2009-2-27 14:56
10#代码学习了。作者: tz-chf 时间: 2009-2-27 15:38
我的:
Private Sub 编号_AfterUpdate()
Dim var As Variant
If Not IsNull(Me.编号) Then
var = DLookup("药名", "药品表", "编号='" & Me.编号 & "' and 药品ID<>" & Me.药品ID)
If Not IsNull(var) Then
MsgBox "此编号重复,不能保存记录!" & vbCrLf & vbCrLf & "重复的药名:" & var, vbExclamation, "请修改"
End If
End If