Office中国论坛/Access中国论坛

标题: 求助:录入窗体某字段值重复时(允许重复字段),如何判断并弹出提示 [打印本页]

作者: tzh1600    时间: 2009-1-15 15:09
标题: 求助:录入窗体某字段值重复时(允许重复字段),如何判断并弹出提示
求助:录入窗体字段值重复时(允许重复字段),如何判断并弹出提示?

一个简单的人员档案表,ID是唯一的,但是"姓名"字段记录是允许重复的,
如何在录入"姓名"时,自动判断表中已有记录中有否相同的姓名值,如果有则弹出提示,并显示同名的记录(有可能多条),让操作员判断是否是同一个人,如果无则继续正常添加记录?

先谢谢了
作者: 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

End Sub




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3