以文本方式查看主题

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

--  作者:qaz17909
--  发布时间:2024/3/7 10:53:00
--  sqltable跨表引用
外部表中产品表和订单表都有一个产品编号列,在订单编辑窗口设计时,在afterload里用DataCols.Add可以增加一个临时列:规格型号,现在这个临时列想引用产品表的“规格型号”这个字段数据,可以datacolchanged事件中设置先按照产品编号查找产品表然后赋值,在afterload中用RaiseDataColChanged触发。这种做法是不是不够好因为在加载记录数比较多的时候好像会很慢,还有其他的方法吗,比如表达式或者直接select语句?
我尝试用表达式的方法,代码如下
Dim t As Table = e.Form.Controls("Table1").Table   \'当前窗口的sqltable是订单表
Dim dt As DataTable = e.Form.Controls("Table1").Table.DataTable
Relations.Add("po", DataTables("产品表").DataCols("产品编号"), dt.DataCols("产品编号"))
dt.DataCols.Add("po", GetType(String), "Parent.规格型号")
但是无效因为DataTables("产品表")没有加载数据所以也无法提供关联的字段信息

--  作者:有点蓝
--  发布时间:2024/3/7 11:02:00
--  
关联表仅适用已经加载的数据。

改为到datacolchanged事件写代码引用:http://www.foxtable.com/webhelp/topics/1451.htm

--  作者:qaz17909
--  发布时间:2024/3/7 11:10:00
--  
datacolchanged就是我前面提到的方法,这种在数据加载量很大的时候,会很卡
--  作者:有点蓝
--  发布时间:2024/3/7 11:42:00
--  
那就不要一次性加载太多的数据,或者分页加载