以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]列标题不同的跨表引用及更新  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=105730)

--  作者:jyh7081
--  发布时间:2017/8/25 9:46:00
--  [求助]列标题不同的跨表引用及更新

数据表(总表)与事务总表(分表)的部分列的内容相同,但是列名不同,对应关系是:
    数据表:   对象、      日期、                          时间、                          地点、            
    事务总表:案号、      开庭排期_开庭日期、      开庭排期_开庭时间、      开庭排期_开庭地点
我在事务总表的DataColChanged事件写下了跨表引用的代码:

If e.DataCol.Name = "对象" Then
    If e.NewValue Is Nothing Then
        e.DataRow("日期") = Nothing
        e.DataRow("时间") = Nothing
        e.DataRow("地点") = Nothing
    Else
        Dim dr As DataRow
        dr = DataTables("数据表").Find("[案号] = \'" & e.NewValue & "\'")
        If dr IsNot Nothing
            e.DataRow("日期") = dr("开庭排期_开庭日期")
            e.DataRow("时间") = dr("开庭排期_开庭时间")
            e.DataRow("地点") = dr("开庭排期_开庭地点")
        End If
    End If
End If

上述代码在增加新行时可以引用,我想通过两个表的[对象]、[案号]列建立关联,互相引用、更新(只要其中一个表的值发生变动,另一个表跟随变动),应该怎样改动代码。

谢谢!

 

附件:

 

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:表关联 - 副本.table


--  作者:有点甜
--  发布时间:2017/8/25 9:58:00
--  

Select Case e.DataCol.name
    Case "对象"
        Dim dr As DataRow
        If e.OldValue = Nothing Then
            dr = DataTables("数据表").Find("[案号] = \'" & e.NewValue & "\'")
        Else
            dr = DataTables("数据表").Find("[案号] = \'" & e.oldvalue & "\'")
        End If
        If dr Is Nothing Then dr = DataTables("数据表").AddNew
        dr("案号") = e.DataRow("对象")
        dr("开庭排期_开庭日期") = e.DataRow("日期")
        dr("开庭排期_开庭时间") = e.DataRow("时间")
        dr("开庭排期_开庭地点") = e.DataRow("地点")
       
       
    Case "地点","日期","时间"
       
        Dim dr = DataTables("数据表").Find("[案号] = \'" & e.DataRow("对象") & "\'")
       
        If dr IsNot Nothing Then
            dr("案号") = e.DataRow("对象")
            dr("开庭排期_开庭日期") = e.DataRow("日期")
            dr("开庭排期_开庭时间") = e.DataRow("时间")
            dr("开庭排期_开庭地点") = e.DataRow("地点")
        End If
End Select

 

[此贴子已经被作者于2017/8/25 14:41:55编辑过]

--  作者:jyh7081
--  发布时间:2017/8/25 13:23:00
--  

由于数据表是主表,当在数据表的现有行编辑时,如果事务表里没有对应的案号,就新增一行与之对应。请版主指教!

谢谢!

 

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:表关联 - 副本.table


--  作者:有点甜
--  发布时间:2017/8/25 14:42:00
--  

Select Case e.DataCol.name
    Case "案号"
        Dim dr As DataRow
        If e.OldValue = Nothing Then
            dr = DataTables("事务主表").Find("[对象] = \'" & e.NewValue & "\'")
        Else
            dr = DataTables("事务主表").Find("[对象] = \'" & e.oldvalue & "\'")
        End If
        If dr Is Nothing Then dr = DataTables("事务主表").AddNew
        dr("对象") = e.DataRow("案号")
        dr("日期") = e.DataRow("开庭排期_开庭日期")
        dr("时间") = e.DataRow("开庭排期_开庭时间")
        dr("地点") = e.DataRow("开庭排期_开庭地点")
       
    Case "开庭排期_开庭日期","开庭排期_开庭时间","开庭排期_开庭地点"
        Dim dr = DataTables("事务主表").Find("[对象] = \'" & e.DataRow("案号") & "\'")
        If dr Is Nothing Then
            dr = DataTables("事务主表").AddNew
            dr("对象") = e.DataRow("案号")
        End If

        dr("对象") = e.DataRow("案号")
        dr("日期") = e.DataRow("开庭排期_开庭日期")
        dr("时间") = e.DataRow("开庭排期_开庭时间")
        dr("地点") = e.DataRow("开庭排期_开庭地点")
       
End Select