以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  老师,窗口table中修改父表内容,子表对应内容未能同时修改  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=159333)

--  作者:lsjt_1979
--  发布时间:2020/12/22 15:51:00
--  老师,窗口table中修改父表内容,子表对应内容未能同时修改
您好:

我在窗口中上半部分添加一个table,然后在下半部分添加一个三个标签页tabcontrol,每个标签页添加一个table,四个table分别为  销售订单,销售明细  销售应收 销售应付,其中销售订单和销售明细做关联,销售订单作为父表,销售明细分别和销售应收和销售应付做关联,销售明细作为父表。 数据同步修改,删除。已实现四个table联动,但是修改销售明细的关联内容时,销售应收和销售应付两个子表相应内容未能同时修改,不知是什么原因



--  作者:有点蓝
--  发布时间:2020/12/22 15:56:00
--  
三个标签页里的table改为绑定关联表,而不是子表
--  作者:lsjt_1979
--  发布时间:2020/12/22 16:19:00
--  用的SQLtable,之前用的关联表也是不行
用的SQLtable,之前用的关联表也是不行
--  作者:有点蓝
--  发布时间:2020/12/22 16:24:00
--  
SQLtable加载进来的表和父表是没有什么关联关系的,是一个独立的表,要自己写代码更改。

关联表肯定可以的

--  作者:lsjt_1979
--  发布时间:2020/12/22 17:09:00
--  好的,那我再试试关联表,感谢
好的,那我再试试关联表,感谢
--  作者:lsjt_1979
--  发布时间:2020/12/23 10:06:00
--  关联表不能做副表吧,需要在多个窗口同时打开,是不是不行
关联表不能做副表吧,需要在多个窗口同时打开,是不是不行
--  作者:有点蓝
--  发布时间:2020/12/23 10:20:00
--  
如果需要在多个窗口同时打开,确实不行。

这种情况只能是绑定子表,然后使用代码更改子表相应内容了,类似:http://www.foxtable.com/webhelp/topics/2490.htm

--  作者:lsjt_1979
--  发布时间:2020/12/24 11:12:00
--  同一窗口中table数据不能同步
各位好:
我在窗口中上半部分添加一个table,然后在下半部分添加一个三个标签页tabcontrol,每个标签页添加一个table,四个table分别为  销售订单,销售明细  销售应收 销售应付,其中销售订单和销售明细做关联,销售订单作为父表,销售明细分别和销售应收和销售应付做关联,销售明细作为父表。 数据同步修改,删除。已实现四个table联动,但是修改销售明细的关联内容时,销售应收和销售应付两个子表相应内容未能同时修改, 关联表的同步数据选项取消勾选,不仅如此窗口,单纯在数据表中增加和修改数据,可以通过代码同步,进入窗口后不能实现。窗口table数据表绑定类型是 sqltable,在销售明细表的datacolchanged事件中写入代码如下:

Select Case e.DataCol.name
    
    Case "箱号"
        Dim dr As  DataRow
        dr = DataTables("销售应收").Find("订单编号 = \'" & e.DataRow("订单编号") & "\'"  )
        If dr Is Nothing Then
            \' messagebox.show(e.oldvalue & 1)
            dr = DataTables("销售应收").AddNew()
            dr("订单编号") = e.DataRow("订单编号")
            dr("箱型") = e.DataRow("箱型")
            dr("箱号") = e.DataRow("箱号")
            
        Else
            dr=  DataTables("销售应收").Find("箱号 = \'" & e.OldValue & "\'"  )
            
            If dr Is Nothing Then
                \' messagebox.show(e.oldvalue & 2)
                dr = DataTables("销售应收").AddNew()
                dr("订单编号") = e.DataRow("订单编号")
                dr("箱型") = e.DataRow("箱型")
                dr("箱号") = e.DataRow("箱号")
            Else
                \' messagebox.show(e.oldvalue & 3)
                dr("订单编号") = e.DataRow("订单编号")
                dr("箱型") = e.DataRow("箱型")
                dr("箱号") = e.DataRow("箱号")
            End If
        End If
        
        dr = DataTables("销售应付").Find("订单编号 = \'" & e.DataRow("订单编号") & "\'"  )
        If dr Is Nothing Then
            \' messagebox.show(e.oldvalue & 1)
            dr = DataTables("销售应付").AddNew()
            dr("订单编号") = e.DataRow("订单编号")
            dr("箱型") = e.DataRow("箱型")
            dr("箱号") = e.DataRow("箱号")
            
        Else
            dr=  DataTables("销售应付").Find("箱号 = \'" & e.OldValue & "\'"  )
            
            If dr Is Nothing Then
                \'messagebox.show(e.oldvalue & 2)
                dr = DataTables("销售应付").AddNew()
                dr("订单编号") = e.DataRow("订单编号")
                dr("箱型") = e.DataRow("箱型")
                dr("箱号") = e.DataRow("箱号")
            Else
                \'messagebox.show(e.oldvalue & 3)
                dr("订单编号") = e.DataRow("订单编号")
                dr("箱型") = e.DataRow("箱型")
                dr("箱号") = e.DataRow("箱号")
            End If
        End If
End Select


--  作者:有点蓝
--  发布时间:2020/12/24 11:24:00
--  
1、每个表都单独处理,不要使用if else 分支,否则if符合条件,else里面的代码是肯定不会执行的
2、sqltable有独立的表名,不是使用主表名称:http://www.foxtable.com/webhelp/topics/1907.htm