以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]非关联表间的同步更新数据  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=67878)

--  作者:JK362223
--  发布时间:2015/5/5 15:29:00
--  [求助]非关联表间的同步更新数据
有一个编辑窗口,父表为报销名单,子表为病案首页,出院记录,再入院记录,现改变报销名单中年龄一列数值,然后已新增一行的子表中年龄一列随之改变,照帮助上代码所写如下:
报销名单DataColChanged
Select Case e.DataCol.name
    Case "身份证号","报销起日"
        Dim dr As DataRow = DataTables("病案首页").sqlFind("身份证号 = \'" & e.OldValue & "报销起日 = \'"& e.OldValue & "\'")
        Dim dr4 As DataRow = DataTables("出院记录").sqlFind("身份证号 = \'" & e.OldValue & "报销起日 = \'"& e.OldValue & "\'")
        Dim dr6 As DataRow = DataTables("再入院记录").sqlFind("身份证号 = \'" & e.OldValue & "报销起日 = \'"& e.OldValue & "\'")
        If dr Is Nothing Then 
            dr = DataTables("病案首页").AddNew()
            dr4 = DataTables("出院记录").AddNew()
            dr6 = DataTables("再入院记录").AddNew()
            dr("身份证号") = e.DataRow("身份证号")
            dr("报销起日") = e.DataRow("报销起日")
            dr("年龄") = e.DataRow("年龄")
            dr("床号") = e.DataRow("床号")
            dr("住院号") = e.DataRow("住院号")
        Else
            dr("身份证号") = e.DataRow("身份证号")
            dr("报销起日") = e.DataRow("报销起日")
        End If
    Case "年龄","床号","住院号"
        Dim dr As DataRow = DataTables("病案首页").sqlFind("身份证号 = \'" & e.DataRow("身份证号") & "报销起日 =\'" & e.DataRow("报销起日") & "\'" )
        
        Dim dr4 As DataRow = DataTables("出院记录").sqlFind("身份证号 = \'" & e.DataRow("身份证号") & "报销起日 =\'" & e.DataRow("报销起日") & "\'" )
       
        Dim dr6 As DataRow = DataTables("再入院记录").sqlFind("身份证号 = \'" & e.DataRow("身份证号") & "报销起日 =\'" & e.DataRow("报销起日") & "\'" )
        If dr IsNot Nothing Then
            dr(e.DataCol.Name) = e.DataRow(e.DataCol.Name)
        End If
End Select


2、报销名单DataColChanging
Dim dr As DataRow = DataTables("病案首页").sqlFind("身份证号 = \'" & e.DataRow("身份证号") & "报销起日 = \'" & e.DataRow("报销起日") & "\'")
Dim dr4 As DataRow = DataTables("出院记录").sqlFind("身份证号 = \'" & e.DataRow("身份证号") & "报销起日 = \'" & e.DataRow("报销起日") & "\'")
Dim dr6 As DataRow = DataTables("再入院记录").sqlFind("身份证号 = \'" & e.DataRow("身份证号") & "报销起日 = \'" & e.DataRow("报销起日") & "\'")
If dr IsNot Nothing Then
    dr.Delete()
End If

求助如何修改?

--  作者:jk362223
--  发布时间:2015/5/5 15:55:00
--  
急!求教老师指正修改!
--  作者:大红袍01
--  发布时间:2015/5/5 16:01:00
--  

就是把代码拷贝几份也不写么?

 

Select Case e.DataCol.name
    Case "身份证号","报销起日"
        Dim dr As DataRow = DataTables("病案首页").sqlFind("身份证号 = \'" & e.OldValue & "报销起日 = \'"& e.OldValue & "\'")
        Dim dr4 As DataRow = DataTables("出院记录").sqlFind("身份证号 = \'" & e.OldValue & "报销起日 = \'"& e.OldValue & "\'")
        Dim dr6 As DataRow = DataTables("再入院记录").sqlFind("身份证号 = \'" & e.OldValue & "报销起日 = \'"& e.OldValue & "\'")
        If dr Is Nothing Then
            dr = DataTables("病案首页").AddNew()
            dr("身份证号") = e.DataRow("身份证号")
            dr("报销起日") = e.DataRow("报销起日")
            dr("年龄") = e.DataRow("年龄")
            dr("床号") = e.DataRow("床号")
            dr("住院号") = e.DataRow("住院号")
           
        Else
            dr("身份证号") = e.DataRow("身份证号")
            dr("报销起日") = e.DataRow("报销起日")
        End If
        If dr4 Is Nothing Then
            dr4 = DataTables("出院记录").AddNew()
            dr4("身份证号") = e.DataRow("身份证号")
            dr4("报销起日") = e.DataRow("报销起日")
            dr4("年龄") = e.DataRow("年龄")
            dr4("床号") = e.DataRow("床号")
            dr4("住院号") = e.DataRow("住院号")
        Else
            dr4("身份证号") = e.DataRow("身份证号")
            dr4("报销起日") = e.DataRow("报销起日")
        End If
        If dr6 Is Nothing Then
            dr6 = DataTables("再入院记录").AddNew()
            dr6("身份证号") = e.DataRow("身份证号")
            dr6("报销起日") = e.DataRow("报销起日")
            dr6("年龄") = e.DataRow("年龄")
            dr6("床号") = e.DataRow("床号")
            dr6("住院号") = e.DataRow("住院号")
        Else
            dr6("身份证号") = e.DataRow("身份证号")
            dr6("报销起日") = e.DataRow("报销起日")
        End If
    Case "年龄","床号","住院号"
        Dim dr As DataRow = DataTables("病案首页").sqlFind("身份证号 = \'" & e.DataRow("身份证号") & "报销起日 =\'" & e.DataRow("报销起日") & "\'" )
       
        Dim dr4 As DataRow = DataTables("出院记录").sqlFind("身份证号 = \'" & e.DataRow("身份证号") & "报销起日 =\'" & e.DataRow("报销起日") & "\'" )
       
        Dim dr6 As DataRow = DataTables("再入院记录").sqlFind("身份证号 = \'" & e.DataRow("身份证号") & "报销起日 =\'" & e.DataRow("报销起日") & "\'" )
        If dr IsNot Nothing Then
            dr(e.DataCol.Name) = e.DataRow(e.DataCol.Name)
        End If
        If dr4 IsNot Nothing Then
            dr4(e.DataCol.Name) = e.DataRow(e.DataCol.Name)
        End If
        If dr6 IsNot Nothing Then
            dr6(e.DataCol.Name) = e.DataRow(e.DataCol.Name)
        End If
End Select

 

------------

 

Dim dr As DataRow = DataTables("病案首页").sqlFind("身份证号 = \'" & e.DataRow("身份证号") & "报销起日 = \'" & e.DataRow("报销起日") & "\'")
Dim dr4 As DataRow = DataTables("出院记录").sqlFind("身份证号 = \'" & e.DataRow("身份证号") & "报销起日 = \'" & e.DataRow("报销起日") & "\'")
Dim dr6 As DataRow = DataTables("再入院记录").sqlFind("身份证号 = \'" & e.DataRow("身份证号") & "报销起日 = \'" & e.DataRow("报销起日") & "\'")
If dr IsNot Nothing Then
    dr.Delete()
End If
If dr4 IsNot Nothing Then
    dr4.Delete()
End If
If dr6 IsNot Nothing Then
    dr6.Delete()
End If


--  作者:JK362223
--  发布时间:2015/5/5 16:26:00
--  
不是,就是照此写了一直处于报错状态
--  作者:大红袍01
--  发布时间:2015/5/5 16:27:00
--  
以下是引用JK362223在2015/5/5 16:26:00的发言:
不是,就是照此写了一直处于报错状态

 

报什么错?关键是你要理解代码啊,灵活变通啊。