以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]不加载原始数据的情况下,如何使用表达式列 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=132952) |
-- 作者:chnfo -- 发布时间:2019/4/2 21:44:00 -- [求助]不加载原始数据的情况下,如何使用表达式列 使用外部数据源。 表A和表B设置关联,表B作为表A的子表。 表A中有编号、名称、规格型号、单位这4列。 表B中有AID是数据列,然后有编号、名称、规格型号、单位这四列都是表达式列。 如果不加载表A的数据,如何在表中展示选定的AID对应的编号、名称、规格型号、单位这四列的信息呢? 主要是不想在表B中冗余过多的列,一是数据量大的时候保存耗时长,二是无谓导致数据库大很多
[此贴子已经被作者于2019/4/2 21:50:05编辑过]
|
-- 作者:有点蓝 -- 发布时间:2019/4/2 21:56:00 -- 要么加载表A的数据,要么使用数据列。 或者改为临时列,然后在datacolchanged中从后台数据库查询数据赋值,不过这样效率也不高。 个人认为 1、关联的数据一般都加载 2、适当的冗余是可以的
|
-- 作者:chnfo -- 发布时间:2019/4/2 22:07:00 -- 不同的项目,有不同的采购清单。 但公司在审核多个项目的采购计划的时候,总不能审A项目的采购计划之前,还把A项目的采购清单加载进来;再审B项目的,又把B项目的采购清单加进来啊
|
-- 作者:有点蓝 -- 发布时间:2019/4/2 22:23:00 -- 很正常啊。不都是这样做的吗。动态加载,按需加载嘛 |
-- 作者:chnfo -- 发布时间:2019/4/2 22:25:00 -- 为了审10行物资的采购计划,还要把采购清单的几千上万行先加载进来,这个…… 当然,也不排除一次审的采购计划会有几千行的情况
[此贴子已经被作者于2019/4/2 22:25:19编辑过]
|
-- 作者:有点蓝 -- 发布时间:2019/4/2 22:57:00 -- 假设1楼所说的表B就是物资的采购计划,只有10行。那么这10行的对应的编号、名称、规格型号、单位这四列的信息需要从其它表的几千行才能获取吗?!就算是需要从其它表的几千行中取得这些数据,那也可以做个查询表,或者统计表,只返回这10行需要的数据不就行了。 具体情况具体分析,不如做个实例看看
[此贴子已经被作者于2019/4/2 22:59:38编辑过]
|
-- 作者:chnfo -- 发布时间:2019/4/3 10:55:00 -- 不是这个意思。 每个项目有一个物资采购目录A(它的明细行数很多,非常多),即:项目名称、物资编号、名称、规格、单位 采购计划是一个主子表结构。 主表X是项目名称、计划编号、编制日期 子表Y是XID、物资ID、采购数量、单价、金额。 这里物资ID就是从A中取的。 每次的计划明细都要从A中选择过来,然后填写数量、单价等信息。 公司可能一天要审多个项目的采购计划。 要么是审A项目的时候,把A项目的物资目录A加载进来,然后计划明细中的物资ID对应的编号、名称、规格、单位都用表达式列(因为采购目录行数多,加载耗时),而且公司不仅要审多个项目的,在不同项目间切换时,就要不断加载不同项目的采购目录,比较耗时 要么是审A项目的时候,子表Y用临时列,查找相应的物资ID,给编号、名称、规格、单位列赋值(如果有的计划明细项很多,多列赋值效率就比较低) 或者在加载物资目录的时候,增加一个条件,只加载某一个计划明细所包含的物资目录,这样行数会少很多。
[此贴子已经被作者于2019/4/3 11:02:19编辑过]
|
-- 作者:有点甜 -- 发布时间:2019/4/3 11:27:00 --
根据你的物资id,合成加载条件,把你A中的数据加载出来即可。
|
-- 作者:chnfo -- 发布时间:2019/4/3 11:41:00 -- Dim x As String = DataTables("采购明细").SQLGetComboListString("ID","项目 = \'A项目\' and 采购单号 = \'CG001\'") Dim y As String = "\'" & x.Replace("|","\',\'") & "\'" DataTables("采购目录").LoadFilter = "项目 = \'A项目\' and 物资ID in (" & y & ")" DataTables("采购目录").Load 当y过长的时候,运行时报错: 加载[采购目录]失败! 详细错误信息: 查询过于复杂。 如何正确使用加载条件呢? |
-- 作者:有点甜 -- 发布时间:2019/4/3 11:47:00 -- 用这种方法,如
DataTables("采购目录").LoadFilter = "项目 = \'A项目\' and 物资ID in (select id from 采购明细 where 项目 = \'A项目\' and 采购单号 = \'CG001\')" |