以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  从多个表中提取数据的问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=91010)

--  作者:jwt
--  发布时间:2016/9/27 15:41:00
--  从多个表中提取数据的问题
问题简述:设计了个校招系统,内含四个表 “录用人员” 、“备选人员”、“淘汰人员”、“测评记录”,这四个表中都有共同列“姓名”、“学校”、“身份证号”;其中,“测评记录”为笔试成绩记录表,三个  人员表  分别与  测评记录表  以身份证号列设置了关联,初步设定的是,在测评记录中新增行,只要输入身份证号码,则自动从三个表中匹配数据,“测评记录”表中的“姓名”、“学校”自动输入。我在“测评记录”表中的datacolchanged时间中写了如下代码,但仅适用于“录用人员”表中提取数据。求大神给思路,或帮忙优化下代码。

If e.DataCol.Name = "身份证号" Then
    If e.NewValue Is Nothing Then
        e.DataRow("学校") = Nothing
        e.DataRow("姓名") = Nothing
    Else
        Dim dr As DataRow
        Dim dr1 As DataRow
        Dim dr2 As DataRow
        dr = e.DataRow.GetParentRow("录用人员")
        If dr IsNot Nothing
            e.DataRow("学校") = dr("学校")
            e.DataRow("姓名") = dr("姓名")
        Else
            dr1 = e.DataRow.GetParentRow("备选人员")
            If dr1 IsNot Nothing
                e.DataRow("学校") = dr1("学校")
                e.DataRow("姓名") = dr1("姓名")
            Else
                dr2 = e.DataRow.GetParentRow("淘汰人员")
                If dr2 IsNot Nothing
                    e.DataRow("学校") = dr2("学校")
                    e.DataRow("姓名") = dr2("姓名")
                End If
            End If 
        End If
    End If
End If

[此贴子已经被作者于2016/9/27 16:00:56编辑过]

--  作者:jwt
--  发布时间:2016/9/27 16:06:00
--  
已解决,代码没问题,不晓得咋回事。
--  作者:有点蓝
--  发布时间:2016/9/27 16:07:00
--  
If e.DataCol.Name = "身份证号" Then
    If e.NewValue Is Nothing Then
        e.DataRow("学校") = Nothing
        e.DataRow("姓名") = Nothing
    Else
        Dim dr As DataRow
        dr = e.DataRow.GetParentRow("录用人员")
        If dr IsNot Nothing
            e.DataRow("学校") = dr("学校")
            e.DataRow("姓名") = dr("姓名")
        Else
            dr = e.DataRow.GetParentRow("备选人员")
            If dr IsNot Nothing
                e.DataRow("学校") = dr("学校")
                e.DataRow("姓名") = dr("姓名")
            Else
                dr = e.DataRow.GetParentRow("淘汰人员")
                If dr IsNot Nothing
                    e.DataRow("学校") = dr("学校")
                    e.DataRow("姓名") = dr("姓名")
                End If
            End If
        End If
    End If
End If