以文本方式查看主题 - 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 -- 那就不要一次性加载太多的数据,或者分页加载 |