以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  老师代码最终改为以下代码实现了我需要的功能,但不知道是为什么?请指教,谢谢!  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=107190)

--  作者:wky10652008
--  发布时间:2017/9/22 21:29:00
--  老师代码最终改为以下代码实现了我需要的功能,但不知道是为什么?请指教,谢谢!

\'多表数据同步增加,修改
If e.DataCol.Name="身份证号码" Then    \'判断发生变化的是不是 "身份证号码 "列,如果是,则:
    If e.OldValue Is Nothing And e.NewValue IsNot Nothing  Then    \'如果"身份证号码"列旧值为空,新值不为空,则:
        DataTables("基本信息管理").Save \'先保存 基本信息表,得到一个永久的序号
        For Each  dt As DataTable In DataTables    \'定义一个"DataTable"类型,并进行循环
            Select Case   dt.Name
                Case "证书管理","职称管理","岗位管理","学历管理","人员状态管理","合同管理"    \'判断表名
                    Dim dr As DataRow=DataTables(dt.name).AddNew()    \'给"DataTables(dt.name)"增加一行
                    dr("序号")=e.DataRow("序号")    \'给"DataTables(dt.name)"中增加的行的"序号"列赋值
                    dr("单位名称")=e.DataRow("单位名称")    \'给"DataTables(dt.name)"中增加的行的"单位名称"列赋值
                    dr("姓名")=e.DataRow("姓名")    \'给"DataTables(dt.name)"中增加的行的"序号"列赋值
                    dr("身份证号码")=e.DataRow("身份证号码")    \'给"DataTables(dt.name)"中增加的行的"身份证号码"列赋值
                    DataTables(dt.name).Save   \'保存表
            End Select
        Next
    ElseIf e.OldValue IsNot Nothing And e.NewValue IsNot Nothing  Then    \'如果"身份证号码"列旧值不为空,新值不为空,则:          
        For Each  dt1 As DataTable In DataTables    \'定义一个"DataTable"类型,并进行循环
            Select Case   dt1.Name
                Case "证书管理","职称管理","学历管理","人员状态管理","合同管理"
                    Dim dr As DataRow=DataTables(dt1.name).find("身份证号码=\'" & e.OldValue &"\'")   \'在"DataTables(dt.name)"中进行查找
                    If dr IsNot Nothing Then    \'如果找到
                        dr("序号")=e.DataRow("序号")    \'修改"DataTables(dt.name)"中"序号"的值
                        dr("单位名称")=e.DataRow("单位名称")     \'修改"DataTables(dt.name)"中"单位名称"的值
                        dr("姓名")=e.DataRow("姓名")     \'修改"DataTables(dt.name)"中"姓名"的值
                        dr("身份证号码")=e.DataRow("身份证号码")     \'修改"DataTables(dt.name)"中"身份证号码"的值
                        DataTables(dt1.name).Save   \'保存表
                    End If
            End Select
        Next
    End If
End If

\'单独修改 "岗位管理" 表的数据
If e.DataCol.Name="身份证号码" Then    \'判断发生变化的是不是 "身份证号码 "列,如果是,则
    If e.OldValue IsNot Nothing And e.NewValue IsNot Nothing  Then    \'如果"身份证号码"列旧值不为空,新值不为空,则:                      
        Dim dr As DataRow=DataTables("岗位管理").find("身份证号码=\'" & e.NewValue &"\'")       \'在"DataTables(dt.name)"中进行查找
        If dr IsNot Nothing Then       \'如果找到
            dr("序号")=e.DataRow("序号")    \'修改"DataTables(dt.name)"中"序号"的值
            dr("单位名称")=e.DataRow("单位名称")     \'修改"DataTables(dt.name)"中"单位名称"的值
            dr("姓名")=e.DataRow("姓名")     \'修改"DataTables(dt.name)"中"姓名"的值
            dr("身份证号码")=e.DataRow("身份证号码")     \'修改"DataTables(dt.name)"中"身份证号码"的值
        End If
    End If
End If

\'============================================================================以上代码还需要完善

[此贴子已经被作者于2017/9/23 10:25:26编辑过]

--  作者:有点蓝
--  发布时间:2017/9/22 21:39:00
--  
Dim dr As DataRow=DataTables(dt.name).find("身份证号码=\'" & e.OldValue &"\'")
--  作者:wky10652008
--  发布时间:2017/9/22 22:05:00
--  
Dim dr As DataRow=DataTables(dt.name).find("身份证号码=\'" & e.OldValue &"\'")

老师我重新更新了代码,这个地方我改了还是不行,请你帮我重新看一下代码,谢谢
--  作者:有点蓝
--  发布时间:2017/9/22 23:22:00
--  
上传实例测试