以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]表A录入 人员信息时如何Select 表B身份证号相同人员? (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=128174) |
-- 作者:tkxffb -- 发布时间:2018/11/30 13:36:00 -- [求助]表A录入 人员信息时如何Select 表B身份证号相同人员? 各位老师,人事类项目中有两个 表,分别是《在职人员信息表》和《离职人员信息表》,现在向《在职人员信息表》录入人员信息时,为了避免重复录入,我参照开发指南写了下面的两段代码,代码写在录入窗口身份证号控件Leave事件下,第一段代码能用,第二段代码不能用,请老师看看错在哪里,改一下。谢谢!!! \'-----以下是从在职人员表查找身份证号重复的行 Dim drs As List(of DataRow) = DataTables("在职人员信息表").Select("", "身份证号") For i As Integer = drs.count - 1 To 1 Step - 1 If drs(i)("身份证号") = drs(i-1)("身份证号") Then Forms("重复录入提示窗口之一").open End If Next \'-----以下是从离职人员表查找身份证号重复的行 Dim drs As List(of DataRow) = Tables("在职人员信息表").filter = "身份证号 in (\'" & DataTables("离职人员信息表").GetComboListString("身份证号") & "\')" For i As Integer = drs.count - 1 To 1 Step - 1 If drs(i)("身份证号") = drs(i-1)("身份证号") Then Forms("重复录入提示窗口之二").open End If Next |
-- 作者:2900819580 -- 发布时间:2018/11/30 13:57:00 -- 为什么要这样做,其实《在职人员信息表》和《离职人员信息表》 可以做成一个表, 只在你增加一列来判断他们是不是在职就可以了。 |
-- 作者:tkxffb -- 发布时间:2018/11/30 14:43:00 -- 其实在这项目一开始就是把在职的和离职的做成一个表了,但由于涉及奖惩、履历等另外 的表,后来又分开了 |
-- 作者:有点甜 -- 发布时间:2018/11/30 15:31:00 -- 改成
Dim drs As List(of DataRow) = Tables("在职人员信息表").filter = "身份证号 in (\'" & DataTables("离职人员信息表").GetComboListString("身份证号").replace("|", "\',\'") & "\')" |
-- 作者:tkxffb -- 发布时间:2018/11/30 18:00:00 -- |
-- 作者:有点甜 -- 发布时间:2018/11/30 18:23:00 -- 改成
Dim drs As List(of DataRow) = DataTables("在职人员信息表").Select("身份证号 in (\'" & DataTables("离职人员信息表").GetComboListString("身份证号").replace("|", "\',\'") & "\')")
|
-- 作者:tkxffb -- 发布时间:2018/11/30 18:38:00 -- 以下是引用有点甜在2018/11/30 18:23:00的发言:
改成
Dim drs As List(of DataRow) = DataTables("在职人员信息表").Select("身份证号 in (\'" & DataTables("离职人员信息表").GetComboListString("身份证号").replace("|", "\',\'") & "\')")
我试了一下,输入与离职人员表身份证号重复的人员,提示窗口没有打开。谢谢有点甜老师,麻烦您了。 [此贴子已经被作者于2018/11/30 18:38:09编辑过]
|
-- 作者:tkxffb -- 发布时间:2018/11/30 18:40:00 -- 是不是可以不用GetComboListString,改用其他方法? |
-- 作者:有点甜 -- 发布时间:2018/11/30 18:49:00 -- \'-----以下是从在职人员表查找身份证号重复的行
Dim drs As List(of DataRow) = DataTables("在职人员信息表").Select("", "身份证号")
For i As Integer = drs.count - 1 To 1 Step - 1
If drs(i)("身份证号") = drs(i-1)("身份证号") Then
Forms("重复录入提示窗口之一").open
End If
Next
\'-----以下是从离职人员表查找身份证号重复的行
Dim drs As List(of DataRow) = DataTables("在职人员信息表").Select("身份证号 in (\'" & DataTables("离职人员信息表").GetComboListString("身份证号").replace("|", "\',\'") & "\')")
For i As Integer = drs.count - 1 To 1 Step - 1
Forms("重复录入提示窗口之二").open
Next |
-- 作者:tkxffb -- 发布时间:2018/12/1 10:20:00 -- 感谢老师在线指导。上面的代码第二部分经测试仍然不可用,捣鼓半天,改成下面的这样,也算达到目的了 \'---以下是使用Filter筛选法,在离职人员表筛选该人员,若筛选出,则给出提示 Dim Filter As String With e.Form.Controls("TextBox2") If .Value IsNot Nothing Then Filter = Filter & "身份证号 = \'" & .Value & "\'" End If End With If Filter > "" Then Tables("离职人员信息表").Filter = Filter End If Dim t As Table = Tables("离职人员信息表") If t.rows.count = 0 Then \'----如果行数等于0 \'---无代码,即不执行任何动作 Else \'---否则 Forms("在职人员录入时与离职人员重复提示窗口").open End If 窗口关闭时执行一下:Tables("离职人员信息表").Filter = "" 不知道这段代码会不会对其他部分造成干扰,试用之后看效果吧 [此贴子已经被作者于2018/12/1 10:20:40编辑过]
|