以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  如何后台跨表引用  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=166084)

--  作者:lal021962
--  发布时间:2021/5/17 19:41:00
--  如何后台跨表引用
If e.DataCol.Name = "品名" Then \'如果内容发生变动的是品名列
    If e.NewValue Is Nothing Then \'如果新值是空白,也就是品名列的内容为空
        e.
DataRow("单价") = Nothing \'那么清空此行单价列的内容
   
Else
        Dim
dr As DataRow
       
\'否则在产品表查找同名的产品行,将找到的行赋值给变量dr
        dr =
DataTables("产品").Find("[品名] = \'" & e.NewValue & "\'")
        If
dr IsNot Nothing Then \'如果找到了同名的产品行,也就是dr不是Nothing
            e.
DataRow("单价") = dr("单价")
        End
If
    End
If
End
If

以上为跨表引用的代码。但是此代码生效前提为"产品"表的所有行已加载,若要跨表引用未加载行的数据则无法实现。请问如何从后台所有数据中跨表引用

--  作者:有点蓝
--  发布时间:2021/5/17 20:36:00
--  
dr = DataTables("产品").SQLFind("[品名] = \'" & e.NewValue & "\'")


--  作者:lal021962
--  发布时间:2021/5/18 10:53:00
--  
谢谢,那请问如果是跨表引用的自动更新呢
If e.DataCol.Name = "单价"
   
Dim Filter As String = "[品名] = \'" & e.DataRow("品名") & "\'"
   
Dim drs As List(Of DataRow) = DataTables("订单").Select(Filter)
   
For Each dr As DataRow In drs
       
dr("单价") = e.DataRow("单价")
    Next

End
If

我改成了DataTables("订单").sqlSelect(Filter)后并没有效果

--  作者:有点蓝
--  发布时间:2021/5/18 11:03:00
--  
处理后台数据这章的内容都全部看看呗:http://www.foxtable.com/webhelp/topics/2901.htm