以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  跨表引用问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=114174)

--  作者:swagger
--  发布时间:2018/1/30 22:18:00
--  跨表引用问题
1. 两个表:订单1, 订单2, 1个订单窗口。订单窗口的新建订单按钮代码:

Tables("订单").AddNew()

Dim fl As Row = Tables("订单2").AddNew
fl("订单id") = Tables("订单").Current("订单id")  


当新建订单时候,表订单2自动输入和表订单1的订单id


2. 跨表引用,在订单2的datacolchanged  输入代码

If e.DataCol.Name = "订单id" Then
    If e.NewValue Is Nothing Then
        e.DataRow("客户名称") = Nothing
    Else
        Dim dr As DataRow
        dr = DataTables("订单").Find("[订单id] = \'" & e.NewValue & "\'")
        If dr IsNot Nothing 
            e.DataRow("客户名称") = dr("客户名称")
        End If
    End If
End If


3.问题: 订单2的“”客户名称“”不会自动引用订单1的“客户名称“,怎么解决?

--  作者:有点蓝
--  发布时间:2018/1/30 22:25:00
--  
代码没有问题。可能订单id对应不上,或者客户名称没有数据
--  作者:swagger
--  发布时间:2018/1/30 22:31:00
--  
表订单1是有客户名称的,不过你这么一问,我就刚才试了一下,猜测是因为表订单1和表订单2的同时输入订单号,然后订单1才输入客户名称,所以表订单2就没法引用客户名称了。这个应该怎么弄?
--  作者:有点蓝
--  发布时间:2018/1/30 22:57:00
--  
订单1的datacolchanged  

If e.DataCol.Name = "客户名称" Then
    If e.NewValue > "" Then
        Dim dr As DataRow
        dr = DataTables("订单2").Find("[订单id] = \'" & e.DataRow("订单id") & "\'")
        If dr IsNot Nothing 
            dr ("客户名称") = e.NewValue
        End If
    End If
End If