Foxtable(狐表)用户栏目专家坐堂 → [求助]不加载原始数据的情况下,如何使用表达式列


  共有2844人关注过本帖树形打印复制链接

主题:[求助]不加载原始数据的情况下,如何使用表达式列

帅哥哟,离线,有人找我吗?
chnfo
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2247 积分:18514 威望:0 精华:0 注册:2011/11/26 20:21:00
[求助]不加载原始数据的情况下,如何使用表达式列  发帖心情 Post By:2019/4/2 21:44:00 [只看该作者]

使用外部数据源。
表A和表B设置关联,表B作为表A的子表。
表A中有编号、名称、规格型号、单位这4列。
表B中有AID是数据列,然后有编号、名称、规格型号、单位这四列都是表达式列。

如果不加载表A的数据,如何在表中展示选定的AID对应的编号、名称、规格型号、单位这四列的信息呢?

主要是不想在表B中冗余过多的列,一是数据量大的时候保存耗时长,二是无谓导致数据库大很多
[此贴子已经被作者于2019/4/2 21:50:05编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111393 积分:567029 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/4/2 21:56:00 [只看该作者]

要么加载表A的数据,要么使用数据列。

或者改为临时列,然后在datacolchanged中从后台数据库查询数据赋值,不过这样效率也不高。

个人认为
1、关联的数据一般都加载
2、适当的冗余是可以的

 回到顶部
帅哥哟,离线,有人找我吗?
chnfo
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2247 积分:18514 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2019/4/2 22:07:00 [只看该作者]

不同的项目,有不同的采购清单。

但公司在审核多个项目的采购计划的时候,总不能审A项目的采购计划之前,还把A项目的采购清单加载进来;再审B项目的,又把B项目的采购清单加进来啊

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111393 积分:567029 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/4/2 22:23:00 [只看该作者]

很正常啊。不都是这样做的吗。动态加载,按需加载嘛

 回到顶部
帅哥哟,离线,有人找我吗?
chnfo
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2247 积分:18514 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2019/4/2 22:25:00 [只看该作者]

图片点击可在新窗口打开查看为了审10行物资的采购计划,还要把采购清单的几千上万行先加载进来,这个……

当然,也不排除一次审的采购计划会有几千行的情况

[此贴子已经被作者于2019/4/2 22:25:19编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111393 积分:567029 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/4/2 22:57:00 [只看该作者]

假设1楼所说的表B就是物资的采购计划,只有10行。那么这10行的对应的编号、名称、规格型号、单位这四列的信息需要从其它表的几千行才能获取吗?!就算是需要从其它表的几千行中取得这些数据,那也可以做个查询表,或者统计表,只返回这10行需要的数据不就行了。

具体情况具体分析,不如做个实例看看
[此贴子已经被作者于2019/4/2 22:59:38编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
chnfo
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2247 积分:18514 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By: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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/4/3 11:27:00 [只看该作者]

 

根据你的物资id,合成加载条件,把你A中的数据加载出来即可。

 


 回到顶部
帅哥哟,离线,有人找我吗?
chnfo
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2247 积分:18514 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By: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过长的时候,运行时报错:
加载[采购目录]失败!
详细错误信息:
查询过于复杂。


如何正确使用加载条件呢?

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/4/3 11:47:00 [只看该作者]

用这种方法,如

 

DataTables("采购目录").LoadFilter = "项目 = 'A项目' and 物资ID in (select id from 采购明细 where 项目 = 'A项目' and 采购单号 = 'CG001')"


 回到顶部
总数 12 1 2 下一页