以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  查找后增加的一个怪问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=117562)

--  作者:刘林
--  发布时间:2018/4/14 17:45:00
--  查找后增加的一个怪问题
Dim c7 As String =  trim(e.Form.Controls("combobox7").text)
Dim njdm1 As String = "初中20" & trim(str(val(c7.Substring(0,2))-2)) & "级"
Dim njdm2 As String = "初中20" & trim(str(val(c7.Substring(0,2))-3)) & "级"
DataTables("学生信息").loadfilter = "(年级 = \'" & njdm1 & "\' or 年级 = \'" & njdm2 & "\') And 学校名称 = \'" & _usergroup & "\'"
DataTables("学生信息").load
If js.Contains("教务主任") Then
    Dim dt As Table = Tables("中考报名_table5")
    If dt.Rows.count>0
        Dim dr As DataRow
        dr = DataTables("学校信息").sqlFind("单位全称 = \'" & _usergroup & "\'and 学段 = \'初中\'" )
        If dr IsNot Nothing
            Dim bydm As String = left(dr("毕业学校代码"),8)
            Dim jm As String = dr("学校班级用简称")
            Dim p As WinForm.ProgressBar
            p = e.Form.Controls("ProgressBar1")
            p.Maximum = dt.Rows.Count \'设置最大值
            p.Minimum = 0 \'设置最小值
            p.Value = 0 \'设置当前值
            Dim dwmc As String = _usergroup
            If  c7 > ""
                Dim Cols1() As String = {"学校名称","学生姓名","班级","年级","身份证件号","学籍号","性别","班级"}
                Dim Cols2() As String = {"学校名称","姓名","班级","年级","身份证号","学籍号","性别","级"}
                Dim su As Integer = 0
                Dim dr2 As DataRow
                Dim p1 As Integer = 0
                For Each dr1 As Row In dt.Rows
                    If DataTables("生地报名库").Find("身份证号 = \'" & dr1("身份证件号") & "\' or  学籍号 = \'" & dr1("学籍号") & "\'") Is Nothing AndAlso DataTables("生地报名库").sqlFind("身份证号 = \'" & dr1("身份证件号") & "\' or  学籍号 = \'" & dr1("学籍号") & "\'") Is Nothing Then                        
                        dr2 = DataTables("生地报名库").AddNew()
                    End If
                    For i As Integer = 0 To Cols1.Length -1
                        Select Case i
                            Case 0,1,5,4,6,7
                                dr2(Cols2(i)) = trim(dr1(Cols1(i)))
                            Case 2
                                Dim c() As Char = {"级", "班"}
                                Dim str As String = dr1(Cols1(i))
                                Dim s1() As String = str.Split(c)
                                dr2(Cols2(i)) = s1(1)
                            Case 3
                                Dim year As String = c7.Substring(0,2)
                                Dim v As Integer = cint(year)
                                Dim ji As String = c7.Substring(2,1)
                                Dim j As Integer
                                If ji = "春"
                                    j = 0
                                End If
                                If ji = "秋"
                                    j = 1
                                End If
                                dr2(Cols2(i)) = trim(str(v - val(dr1(Cols1(i)).Substring(4,2)) + j +6))
                                If dr2(Cols2(i)) = "9"
                                    dr2("备注") ="补考"
                                End If
                        End Select
                        dr2("考试名称") = c7
                        P1 =P1+1
                        P.VALUE = P1
                        dr2("学校班级") = jm & dr2("年级") & "." & dr2("班级")
                    Next
                Next
                If messagebox.show("是否进行重复情况查询","提示",MessageBoxButtons.YesNo) =DialogResult.Yes
                    Dim xcf As Integer = 0
                    For Each r As Row In Tables("中考报名_table4")
                        Dim dr4 As DataRow = DataTables("生地报名库").Find("(身份证号 = \'" & r("身份证号") & "\' Or 学籍号 = \'" & r("学籍号") & "\')  and _Identify <> \'" & r("_Identify") & "\' and 考试名称 =\'" & c7 &"\'")
                        If dr4 IsNot Nothing Then
                            r("重复情况") = "与" &  dr4("学校班级") & dr4("姓名") & "重复"
                            xcf = xcf+1
                        Else
                            r("重复情况") = "无重复"
                        End If
                    Next
                    For Each r As Row In Tables("中考报名_table4")
                        Dim dr4 As DataRow = DataTables("生地报名库").sqlFind("(身份证号 = \'" & r("身份证号") & "\' Or 学籍号 = \'" & r("学籍号") & "\') and _Identify <> \'" & r("_Identify") & "\' and 考试名称 =\'" & c7 &"\'")
                        If dr4 IsNot Nothing Then
                            r("重复情况") = "与" &  dr4("学校班级") & dr4("姓名") & "重复"
                            xcf = xcf+1
                        Else
                            r("重复情况") = "无重复"
                        End If
                    Next
                    If xcf >0
                        messagebox.show("请注意重复报名记录:" & xcf & "条","提示")
                    End If
                End If
                p.value=0
            End If
        Else
            messagebox.show("请选择勾选8年级和9年级在校学生","提示",MessageBoxButtons.OK)
        End If
    End If
End If
Tables("中考报名_table4").sort = "学校班级,备注"



请问老师一个奇怪问题:实际测试出有几个学生的身份证在生地报名库明有,但增加了记录,反复比对其身份证号是一样的?是什么原因

--  作者:有点蓝
--  发布时间:2018/4/14 17:52:00
--  
窗口表或者数据库表的身份证号有多余的空格、换行符或者其它符号,如果有字母,看看大小写是否一致。

把有问题的身份证号单元格清除,重新手工录入身份证号,再测试