Office中国论坛/Access中国论坛

标题: 在窗体录入时,已经用OUTLOOK函授发现有重复数据,怎么把重复的数据显示出来? [打印本页]

作者: vont    时间: 2006-9-3 05:09
标题: 在窗体录入时,已经用OUTLOOK函授发现有重复数据,怎么把重复的数据显示出来?
一个公司有三个门市部,每个门市部都有单独的顾客名单及购买明细,同一个顾客可能在三个地方都有记录.

现在要统计客户资料, 主窗体录入为

CUSTOMER NUMBER (自动生成)

姓名

地址

EMAIL

电话

对应的子窗体录入

购买产品,金额,购买日期,购买地点(用下拉菜单,在三个地点选一个)



在主窗口录入姓名那栏时,用下面方法提醒如果有重复输入

Private Sub name_AfterUpdate()
If Not IsNull(DLookup("[name]", "[customer]", "[name]='" & Forms![customer]![name] & "'")) Then
MsgBox "ossible redundant data!"
End If

End Sub

问题时姓名虽然提醒有重复了,但是这个有两个可能:一个是和前面输入的是名字相同的同一个人,也有可能不是同一个人,所以需要把前面的数据显示出来,以判断是不是同一个,如果是,就直接在子窗体输入购买明细,如果不是同一个人,那么就在主窗体添加记录.

所以,如何显示重复的数据呢?






作者: andymark    时间: 2006-9-3 07:03
文本框,子窗体,列表框,msgbox等等 都可以显示相关的重复数据
作者: vont    时间: 2006-9-3 17:28
以下是引用andymark在2006-9-2 23:03:00的发言:


文本框,子窗体,列表框,msgbox等等 都可以显示相关的重复数据

谢谢回复,子窗体已经是购买明细了,应该不能再显示客户的资料了,如果要在文本框中显示,应该用什么语句呢?



因为有下载权利了,刚才在坛子里搜了一下,找到了一个可以用MSGBOX显示重复记录的例子

http://www.office-cn.net/forum.php?mod=viewthread&tid=35681&replyID=179381&skin=1

多谢各位了.

[此贴子已经被作者于2006-9-3 9:35:34编辑过]


作者: vont    时间: 2006-9-7 22:12
新问题来了,我已经用MSGBOX提示可能重复的数据了,可是MSGBOX弹出的对话框中只能显示一个数据,比如我输入张三,如果前面有张三了,弹出对话框显示这个张三的编号,名字,地址等等.问题是如果前面有两个张三,提示框只能显示后一个张三的数据,请问怎么用列表框或是其他什么办法显示前面所有张三的数据呢?
作者: andymark    时间: 2006-9-7 22:39
以下是引用vont在2006-9-7 14:12:00的发言:
新问题来了,我已经用MSGBOX提示可能重复的数据了,可是MSGBOX弹出的对话框中只能显示一个数据,比如我输入张三,如果前面有张三了,弹出对话框显示这个张三的编号,名字,地址等等.问题是如果前面有两个张三,提示框只能显示后一个张三的数据,请问怎么用列表框或是其他什么办法显示前面所有张三的数据呢?

     在MSGBOX显示所有重复数据可参考这个写法

     http://www.office-cn.net/forum.php?mod=viewthread&tid=44687&replyID=&skin=1
作者: leo_sunshengwei    时间: 2006-9-7 23:12
^_^!!!
作者: vont    时间: 2006-9-8 04:06
以下是引用andymark在2006-9-7 14:39:00的发言:



     在MSGBOX显示所有重复数据可参考这个写法


     http://www.office-cn.net/forum.php?mod=viewthread&tid=44687&replyID=&skin=1

非常非常感谢.

仔细研究了半天,(不好意思,俺刚开始学),发现例子里显示重复数据的方法是把找到的数据用FIELDS把那列显示出来,我现在需要把那一行都显示出来,该用什么呢?

Rs.Open "SELECT * FROM [customer] where [customer]![name]='" & Forms![customer]![name] & "'", SysConn, adOpenDynamic, adLockOptimistic ' (这个已经把我要找的数据全放在RS里面了)

Do While Not Rs.EOF
       If Not IsNull(DLookup("[name]", "[customer]", "[name]='" & Forms![customer]![name] & "'")) Then

            cName = cName & (Rs.Fields("name")) & "     "
            cAddress = cAddress & (Rs.Fields("address")) & Chr(13)


        End If
   
        Rs.MoveNext
Loop
    If Len(cName) > 0 Then
    Tsxx = "Customer with the same names:" & Chr(13) & Chr(13) & cName & Chr(13) & cAddress & Chr(13) & "      Would you like to continue?"
  
        MsgBox Tsxx
    End If

这样显示的是按列排的,我想显示出RS里面所有的数据,但是按行排,有什么函数吗?
作者: vont    时间: 2006-9-9 01:18
以下是引用vont在2006-9-7 20:06:00的发言:



非常非常感谢.


仔细研究了半天,(不好意思,俺刚开始学),发现例子里显示重复数据的方法是把找到的数据用FIELDS把那列显示出来,我现在需要把那一行都显示出来,该用什么呢?


Rs.Open "SELECT * FROM [customer] where [customer]![name]='" & Forms![customer]![name] & "'", SysConn, adOpenDynamic, adLockOptimistic ' (这个已经把我要找的数据全放在RS里面了)


Do While Not Rs.EOF
       If Not IsNull(DLookup("[name]", "[customer]", "[name]='" & Forms![customer]![name] & "'")) Then


            cName = cName & (Rs.Fields("name")) & "     "
            cAddress = cAddress & (Rs.Fields("address")) & Chr(13)


        End If
   
        Rs.MoveNext
Loop
    If Len(cName) > 0 Then
    Tsxx = "Customer with the same names:" & Chr(13) & Chr(13) & cName & Chr(13) & cAddress & Chr(13) & "      Would you like to continue?"
  
        MsgBox Tsxx
    End If


这样显示的是按列排的,我想显示出RS里面所有的数据,但是按行排,有什么函数吗?

自己订




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