Office中国论坛/Access中国论坛

标题: 如何避免身份证号码重复输入,请海狸先生帮助 [打印本页]

作者: chen9981    时间: 2005-5-21 03:44
标题: 如何避免身份证号码重复输入,请海狸先生帮助
如何避免身份证号码重复输入?谢谢

[此贴子已经被海狸先生于2005-6-2 19:30:02编辑过]


作者: 海狸先生    时间: 2005-5-21 03:56
该字段设为主键,就可以了
作者: chen9981    时间: 2005-5-21 06:51
谢谢!但是不理想,是不是能出现一段文字"数据库内已有该身份证号码"?
作者: 木图天    时间: 2005-5-21 07:02
海狸提供的是最简单的方法,但数据过多时对速度有影响

不妨设该字段为索引-是(无重复),可有效避免输入重复
作者: 海狸先生    时间: 2005-5-21 19:10
以下是引用chen9981在2005-5-20 22:51:00的发言:

谢谢!但是不理想,是不是能出现一段文字"数据库内已有该身份证号码"?

请参考有效性规则
作者: chen9981    时间: 2005-5-23 01:23
没有解决我的实际问题因为我是初学
作者: 海狸先生    时间: 2005-5-23 01:40
根据这个表用向导建立一个窗体

在显示身份证的文本框的有效性规则中写(这个文本框名叫txt身份证)

DLookup("身份证", "表", "身份证 =txt身份证") Is Null

在有效性文本中写

"不允许重复"



[此贴子已经被作者于2005-5-22 17:44:06编辑过]


作者: 海狸先生    时间: 2005-5-23 01:45
给你做了一个例子[attach]10602[/attach]


作者: chen9981    时间: 2005-5-26 05:10
刚出差回来,谢谢海狸先生的热情。真的很笨,是否能请你直接在我的软件上修改一下?非常感谢!
作者: 海狸先生    时间: 2005-5-26 05:41
你的软件呢?
作者: chen9981    时间: 2005-5-27 04:01
如何发给你?谢谢了!
作者: 海狸先生    时间: 2005-5-27 04:15
直接发在这里不可以?难道很大?
作者: chen9981    时间: 2005-5-27 04:36
1M !   是不是“上传”
作者: 海狸先生    时间: 2005-5-27 16:18
你发我emailmhaibo163@163.com
作者: chen9981    时间: 2005-5-31 03:37
谢谢了[attach]10850[/attach]


作者: chen9981    时间: 2005-5-31 03:39
请帮我设置一下,谢谢了
作者: 海狸先生    时间: 2005-5-31 16:16
[attach]10856[/attach]

这样
作者: chen9981    时间: 2005-6-1 03:08
谢谢!

但是重复提示后只有关闭数据库后重新打开数据库才能输入其他内容,不太方便!

请继续提供帮助.盼望!
作者: 海狸先生    时间: 2005-6-1 04:20
不懂你的意思,按确定后,把重复值改一下就可以了,为何要关闭数据库?
作者: chen9981    时间: 2005-6-1 04:48
不行啊!
作者: 海狸先生    时间: 2005-6-1 05:51
把显示身份证的控件名改成  txt身份证号码然后把有效性规则改成 DLookUp("身份证号码","员工资料","身份证号码 =txt身份证号码") Is Null
作者: chen9981    时间: 2005-6-1 07:04
谢谢谢谢!今后还请多多帮助!祝好人一生平安!
作者: chen9981    时间: 2005-6-2 05:37
可是无法"条件查询"了。

另外是否能把删除的资料自动保存在其它什么地方以便将来查询用?而这种阻止“身份证号码”的重复又包含删除的资料。又要谢谢了!
作者: chen9981    时间: 2005-6-2 05:39
[attach]10920[/attach]


作者: 海狸先生    时间: 2005-6-2 16:09
我是说把控件名称改成txt身份证,不是说把控件来源改成txt身份证。。。。。。
作者: chen9981    时间: 2005-6-3 02:55
不好意思我太粗心了。再次谢谢!另外请继续帮助我

是否能把删除的资料自动保存在其它什么地方以便将来查询用?而这种阻止“身份证号码”的重复又包含删除的资料。又要谢谢了![attach]10947[/attach]


作者: 海狸先生    时间: 2005-6-3 03:32
那你不要删除就是了,增加一个标记就是了
作者: chen9981    时间: 2005-6-3 03:53
确实是一个思路!但是这会牵涉到统计数字的真实性了?
作者: 海狸先生    时间: 2005-6-3 04:20
统计时不要统计有标记的数据就行了
作者: chen9981    时间: 2005-6-3 14:26
谢谢!很有启发。我想在“离厂时间”栏中填入一个数据时“部门”栏中的数据就自动消失。这样既保留着原有资料又不参加根据“部门”为基础的统计。这样可以吗?是否请帮我设置一下!
作者: chen9981    时间: 2005-6-3 14:28
[attach]10956[/attach]


作者: 海狸先生    时间: 2005-6-3 16:58
你用筛选不就行了,建一个组合框 显示正职、显示不在职
作者: chen9981    时间: 2005-6-4 04:11
不理想啊!
作者: 海狸先生    时间: 2005-6-4 04:48
为什么不理想?
作者: Threaten    时间: 2005-6-5 06:35
可以请问一下,关于DLookUp("身份证","表1","身份证 = txt身份证") Is Null最后的IS NULL有什么用?这句我看不太懂,能否讲解一下,对我也很有用,谢谢了
作者: 海狸先生    时间: 2005-6-5 16:30
DLookUp如果找不到值,返回NULL
作者: Threaten    时间: 2005-6-5 17:46
哦!那如果找到了呢?是不是找到值的话,就说明有重复,会把已重复的值放入有效性规则呢?......如果是这样,为什么已重复的值放入有效性规则就会触犯有效性规则呢?本人才学疏浅,只有在这不耻下问了~~~~谢谢指教[em04]
作者: 海狸先生    时间: 2005-6-5 18:38
如果找到话,说明当前输入的是已有的数据
作者: Threaten    时间: 2005-6-5 21:07
哎~~~还是不明白,能详细一点吗?
作者: 海狸先生    时间: 2005-6-5 23:09
DLookUp("身份证","表1","身份证 = txt身份证") Is Null的意思是 当输入的身份证号码时执行Dlookup操作返回值必须是NULL
作者: Threaten    时间: 2005-6-6 02:43
谢谢,我能理解了,太感谢你了海狸先生
作者: Threaten    时间: 2005-6-6 02:49
那请海狸先生帮我看看我的这个文件里的Card Number怎么可以不让它重复呢,我按你刚才的操作去做了,可是总是报错

在"Sales Record"这个窗体中

不知为什么?为什么总是这样啊~~~,快失望了呢~~~_|¯|O[attach]11004[/attach]


作者: chen9981    时间: 2005-6-6 04:10
海狸先生帮人帮到底麻烦你再给我设置一下吧! 谢谢了!

我想在“离厂时间”栏中填入一个数据时“部门”栏中的数据就自动消失。这样既保留着原有资料又不参加根据“部门”为基础的统计。这样可以吗?是否请帮我设置一下!
作者: 海狸先生    时间: 2005-6-6 04:36
Private Sub 文本68_AfterUpdate()

部门.Visible = Nz(文本68) <> "离开"

End Sub

Private Sub Form_Current()

部门.Visible = Nz(文本68) <> "离开"

End Sub
作者: 海狸先生    时间: 2005-6-6 04:42
以下是引用Threaten在2005-6-5 18:49:00的发言:



那请海狸先生帮我看看我的这个文件里的Card Number怎么可以不让它重复呢,我按你刚才的操作去做了,可是总是报错

在"Sales Record"这个窗体中

不知为什么?为什么总是这样啊~~~,快失望了呢~~~_|&macr;|O[attach]11004[/attach]

请把下面这句放进,注,不要加=

DLookUp("[Card Number]","[Westin Society Card Sales Record]","[Card Number]=[Card Number TextBox]") Is Null

另外你的数据库设计的非常糟糕,因为你的表或控件大量采用了空格,在处理中非常容易引起错误
作者: chen9981    时间: 2005-6-6 05:46
我刚学没有一点基础帮我写上去吧!万分感谢!
作者: chen9981    时间: 2005-6-6 05:52
[attach]11012[/attach]


作者: 海狸先生    时间: 2005-6-6 05:52
[attach]11011[/attach]

输入 离开 部门就会消失
作者: Threaten    时间: 2005-6-6 06:03
哎~~~没有办法呀,老板买了软件公司的半套产品,没有买卡销售记录系统,只买了卡使用记录系统.让我用Execl做一个销售记录系统,可是考虑到这个卡是永久销售下去的,所以今后的数据量一定很大,那么用Execl的话速度会很慢,于是就自己去买了Access的书回来自学,才做了这套东西的~~~_|&macr;|O (真是失败啊)顺带问一句:为什么您的就不用加[ ]也可以使用,而我的就必须加呢?给您添了那么多的麻烦,实在不好意思了~~~(不知有无机会可以约您出来吃顿饭......真诚的~~~)[em04]
作者: Threaten    时间: 2005-6-6 06:05
还有就是外面还有我的几个帖子能否一并回答?感激不尽~~~
作者: 海狸先生    时间: 2005-6-6 06:06
以下是引用Threaten在2005-6-5 22:03:00的发言:



哎~~~没有办法呀,老板买了软件公司的半套产品,没有买卡销售记录系统,只买了卡使用记录系统.让我用Execl做一个销售记录系统,可是考虑到这个卡是永久销售下去的,所以今后的数据量一定很大,那么用Execl的话速度会很慢,于是就自己去买了Access的书回来自学,才做了这套东西的~~~_|&macr;|O (真是失败啊)

顺带问一句:为什么您的就不用加[ ]也可以使用,而我的就必须加呢?

给您添了那么多的麻烦,实在不好意思了~~~(不知有无机会可以约您出来吃顿饭......真诚的~~~)[em04]



变量或控件或字段....中间有空格的话在引用时会引起出错。

所以设计名字时不要用带有空格的

例如 Card Number,你可以写成 Card_Number
作者: 海狸先生    时间: 2005-6-6 06:09
以下是引用Threaten在2005-6-5 22:03:00的发言:



给您添了那么多的麻烦,实在不好意思了~~~(不知有无机会可以约您出来吃顿饭......真诚的~~~)[em04]

呵呵,只要是我能帮的,并且不是很复杂的,我会尽量帮的。
作者: chen9981    时间: 2005-6-6 06:48
我觉得如果"离开"改字作具体离厂时间这样更好!

你真好!
作者: chen9981    时间: 2005-6-6 14:24
还有"部门"的内容仅仅是在窗体中消失但在表格仍然存在,这样影响了在职人员数量的真实性了.

谢谢不厌其繁的指教!
作者: 海狸先生    时间: 2005-6-6 15:54
以下是引用chen9981在2005-6-5 22:48:00的发言:



我觉得如果"离开"改字作具体离厂时间这样更好!

你真好!

你是说如果这个字段有内容,部门就可以消失了?
作者: 海狸先生    时间: 2005-6-6 15:55
以下是引用chen9981在2005-6-6 6:24:00的发言:



还有"部门"的内容仅仅是在窗体中消失但在表格仍然存在,这样影响了在职人员数量的真实性了.

谢谢不厌其繁的指教!



所以我说让你建一个字段,判断是否在职,

或者你通过离开这个字段有无内容来判断也可以,

但是你想在一张表中,离开的人有12个字段,在职的人有13个字段。。。这个可能吗??
作者: chen9981    时间: 2005-6-7 01:43
天哪!脑子里一片浆糊。“或者你通过离开这个字段有无内容来判断也可以”具体怎么做?再次请求你的帮助!
作者: 海狸先生    时间: 2005-6-7 03:08
找到以下代码

Private Sub 文本68_AfterUpdate()

部门.Visible = Nz(文本68) <> "离开"

End Sub



Private Sub Form_Current()

部门.Visible = Nz(文本68) <> "离开"

End Sub

改成

Private Sub 文本68_AfterUpdate()

部门.Visible = len(trim(Nz(文本68)))=0

End Sub



Private Sub Form_Current()

部门.Visible = len(trim(Nz(文本68)))=0

End Sub

[此贴子已经被作者于2005-6-6 19:17:45编辑过]


作者: chen9981    时间: 2005-6-7 03:54
真不好意思,我还没有真正接触过代码。数据库做的这样基本是照书抄的。所以要我写代码确实是脑子里一片浆糊。其实也差不多了只不过想更加完美点所以冒昧地请求你帮我最后一次忙直接写在我的数据库里。谢谢
作者: chen9981    时间: 2005-6-7 03:57
[attach]11035[/attach]


作者: 海狸先生    时间: 2005-6-7 04:13
[attach]11036[/attach]


作者: chen9981    时间: 2005-6-7 04:51
啊!也许我的意思没有表达清楚。我的本意是当我在该员工“离厂时间”一拦里填入内容(时间)后,该员工只在“离厂员工”中有备案而不会在“在职员工”的各类统计中出现。比如:概况浏览,部门概况,条件查询中不会出现该员工的资料。对你的不厌其繁助人为乐精神表示深深的敬意,谢谢!
作者: 海狸先生    时间: 2005-6-7 17:36
所以我说你加个字段就可以了,是否离开以后统计时加一个条件select * from 表 where 是否离开=false and .......
作者: chen9981    时间: 2005-6-8 03:44
是不是能请你直接在我的软件上修改一下?我实在是搞不清楚啊!
作者: 海狸先生    时间: 2005-6-8 04:26
晕,这个只是一个思路,要改起来,要全面了解你的设计思路,不好意思了。其实你可以慢慢来,不必一步到位的,一边学习,一边修改
作者: chen9981    时间: 2005-6-8 05:09
不好意思!又要打扰你了。我发现当我在窗体中直接消除某一位员工“部门”的内容后,他的其它资料仍然在“员工资料”表里但是他已经不在查询的范围里了,也就是说我是依据“部门”作查询的。只要在我“离厂时间”里填入“时间”的同时删除“部门”里的内容,我的目的就达到了。而先生指教的只是在窗体中不显示“部门”里的内容而没有在“员工资料”表中删除“部门”里的内容。请先生再指教!
作者: 海狸先生    时间: 2005-6-8 05:24
把部门内容清除掉,变成空值,是这样吗?
作者: chen9981    时间: 2005-6-8 05:39
是!谢谢!
作者: 海狸先生    时间: 2005-6-8 16:37
[attach]11058[/attach]


作者: chen9981    时间: 2005-6-9 03:01
为什么和我的不一样?我用手工删除“部门”的内容后,该员工不参加“概况浏览”的计算。用先生的方法则该员工的资料仍然参加计算只是归类到无“部门”一拦中这样就会影响“总人数”的计算。怎么办?
作者: 海狸先生    时间: 2005-6-9 03:18
[attach]11078[/attach]

改好了,增加了一些功能

当部门或离厂时间及原因改变时会相应的对离厂时间及原因或部门进行自动修改
作者: chen9981    时间: 2005-6-9 04:35
待写什么意思?
作者: 海狸先生    时间: 2005-6-9 04:36
晕,因为如果你手工删除了离厂时间及原因,我也不知道你要写什么部门,所以写了一个待写
作者: chen9981    时间: 2005-6-9 04:38
增加了一个部门?
作者: chen9981    时间: 2005-6-9 04:42
不要写部门,因为没有部门就不参加计算.
作者: chen9981    时间: 2005-6-9 04:49
我的本意是当我在"离厂时间及原因"中填入内容时"部门"内容就自动消失.因为没有"部门"内容所以就不能参加计算实际在职员工数量的计算了.谢谢!
作者: hi-wzj    时间: 2005-6-9 07:31
我的本意是当我在"离厂时间及原因"中填入内容时"部门"内容就自动消失.没必要。因为在查询中筛选掉,离厂时间及原因"中填入内容的记录就行了。
作者: chen9981    时间: 2005-6-9 14:25
不理解
作者: 海狸先生    时间: 2005-6-9 16:06
以下是引用chen9981在2005-6-9 6:25:00的发言:



不理解



其实也不知道这样帮你是帮了你呢,还是害了你呢。。。建议你还是用点心去access吧
作者: chen9981    时间: 2005-6-10 01:19
我以为是很简单的问题!
作者: 海狸先生    时间: 2005-6-10 03:28
以下是引用chen9981在2005-6-9 17:19:00的发言:



我以为是很简单的问题!



简单是简单,但是因为你对access不理解,就变得复杂了
作者: chen9981    时间: 2005-6-10 04:31
但是先生也不愿意帮助我啊!可是对我来说"难上青天"啊!算了!求人难啊!手工删除也不复杂!
作者: 海狸先生    时间: 2005-6-10 04:32
以下是引用chen9981在2005-6-9 20:31:00的发言:



但是先生也不愿意帮助我啊!

可是对我来说"难上青天"啊!算了!求人难啊!手工删除也不复杂!



这句话说的有点伤人心了吧,唉。。。算了,随你怎么想吧
作者: EvilSpirit    时间: 2005-7-11 19:37
以下是引用chen9981在2005-6-9 20:31:00的发言:



但是先生也不愿意帮助我啊!

可是对我来说"难上青天"啊!算了!求人难啊!手工删除也不复杂!

楼主,你什么意思啊,这东西到底是你做还是人家做啊,人家为你做了那么多东西,你不但不感谢人家,还说出这样的话,多让人伤心啊.

人家不愿意帮助你,能把这个帖子一直回复到9页之多吗?

既然你已经说出这样的话了,你就自己做吧,我想你要是一直这样评论人家的话,以后没有人会再帮助你了

好自为之吧,楼主~
作者: 静儿    时间: 2005-7-11 19:56
就是,我们的海斑竹这么耐心的给您解答,我都感动了。您不应该抱怨人家。access是个关系型的数据库,当然比excel的操作复杂一些。它需要您掌握了它的基本操作后,然后去规划您的表。因为您没有什么基础,因此斑竹教您您只剩下照抄,却不理解了。不能怪斑竹!
作者: yelang771    时间: 2005-7-11 23:17
这个帖子 是我在office-cn中见到的 最长的问题贴了。有个如此耐心的 海狸先生 帮 楼主你解答问题。你自己却因为对 access的不了解,最后说些伤人的话。。。。自己先了解点知识先吧!~
作者: hi-wzj    时间: 2005-7-12 04:41
chen9981没关系,慢慢来,别着急。不懂的找书去解决,不懂就大胆问。但因为版主也不是专职的,有自己的工作,因此问题不一定都能够及时来解答您也别心急。另外您在大家未回答您问题时,也要找书找资料来补充自己啊。就象海版主指导您的,您不懂就要去看书去掌握啊,因为这里希望售出的是“渔”而不是“鱼”。
作者: hi-wzj    时间: 2005-7-12 04:47
hen9981因为您不了解acc的运作模式,比如表的作用,查询的功能,窗体的实现,所以您觉得很难。其实,微软的办公软件比其他的程序容易上手的多。当然acc毕竟是个数据库,比excel还是稍复杂了一些。先将基础做扎实了。
作者: eyewitnes    时间: 2005-7-12 19:12
哈哈,这话中,授之予渔
作者: chrissrong    时间: 2005-7-14 03:34
我认为chen9981应该勇敢地站出来,说声“对不起”。
作者: hi-wzj    时间: 2005-7-14 03:53
以下是引用chrissrong在2005-7-13 19:34:00的发言:



我认为chen9981应该勇敢地站出来,说声“对不起”。

其实用不着,有时候遇到困难,难免会发点牢骚,会叹息,这是很正常的现象。只要不是恶意中伤他人,我觉得海狸付总斑竹也不是什么器量小的人是吗?大家有缘在本站相遇就是缘分,珍惜这缘分,通过良好的交流使大家都有所得,我想这也是站长建立这网站的目的吧。

chen9981 只要别不好意思,弄得不敢再提问题就行了。
作者: fekin    时间: 2005-7-14 20:48
好久没来,发现新来的“海狸先生”确实不错!
作者: LucasLynn    时间: 2005-7-14 22:33
以下是引用海狸先生在2005-6-9 8:06:00的发言:





其实也不知道这样帮你是帮了你呢,还是害了你呢。。。建议你还是用点心去access吧





我一直都是这么想的,实在没说出口……

很想建议您每次帮人的时候多给些提示性的或者方法性的回复,而不是每次都亲自代劳,否则你会累死,而别人也只是解决了某个问题,却没有掌握解决问题的方法。

看着这么高的楼,版主,辛苦了……
作者: hi-wzj    时间: 2005-7-15 02:46
我觉得各位网友不要有太多的依赖心理,广撒问题贴,然后坐等版主来回答。这种思想不好。因为本站的限制,版主也是用工作之余的时间来解答,不可能是版主专职手把手的去教,只能是点拨性质的。如果您以积蓄了许多势能在那里,稍一点拨,自是融会贯通。
作者: 轻风    时间: 2005-7-15 03:10
对呀,我一般遇到一个问题后都是自己研究[em08],如果解决了就会很有成就感[em01],如果解决不了再提问。当然因为我是兴趣才学的[em20],有的人是因为有任务所以遇到解决不了的问题心急呀[em19],自然不能慢慢究研了。
作者: 海狸先生    时间: 2005-7-15 04:50
以下是引用LucasLynn在2005-7-14 14:33:00的发言:







我一直都是这么想的,实在没说出口……

很想建议您每次帮人的时候多给些提示性的或者方法性的回复,而不是每次都亲自代劳,否则你会累死,而别人也只是解决了某个问题,却没有掌握解决问题的方法。

看着这么高的楼,版主,辛苦了……



呵呵,我也想给提示或者方法性的回复啊,可是有很多时候网友并不满足这一步...
作者: LucasLynn    时间: 2005-7-15 16:26
以下是引用海狸先生在2005-7-14 20:50:00的发言:





呵呵,我也想给提示或者方法性的回复啊,可是有很多时候网友并不满足这一步...

唉,叫站长找微软要客服代理费去,顺便改善版主的待遇……[em05]
作者: 海狸先生    时间: 2005-7-15 16:28
哈哈,这个主意不错,我要美元
作者: LucasLynn    时间: 2005-7-15 16:31
以下是引用海狸先生在2005-7-15 8:28:00的发言:

哈哈,这个主意不错,我要美元



倒,人民币升值已成定势,你…你…你……居然!
作者: eyewitnes    时间: 2005-7-15 19:37
还在顶?决定过100?俺可不想被封[em07]




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