以文本方式查看主题
- Foxtable(狐表) (http://foxtable.net/bbs/index.asp)
-- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2)
---- 组合多表数据 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=88752)
|
-- 作者:fubblyc
-- 发布时间:2016/8/8 23:18:00
-- 组合多表数据
红袍老师还没休息啊。问一个问题:
想实现:
在一个窗口里,有两个表,如下图:
此主题相关图片如下:qq截图20160808231046.png
想实现右边也显示左边的同样的会员卡号的所有的行。
现在只是选中行,要显示左边同样的行。
我知道中文怎么做,就是 左边的表加载后,将左边表的 所有【会员卡号】做为右边表【会员卡号】的加载条件。
另外,就是两个表同样会员卡号行的位置要一样。即使排序之后。为了看起来就像一张表。
为什么想这样做:这样的话就可以不用组合多个表加载、统计,而是都是加载或者统计单个表,而在窗口放在了一起。这样也许能提高加载效率。
|
-- 作者:fubblyc
-- 发布时间:2016/8/8 23:18:00
--
不知道能不能实现。。。
|
-- 作者:Hyphen
-- 发布时间:2016/8/9 8:40:00
--
加载:如果加载条件是通用的,这样:Tables("表B").Filter = Tables("表A").Filter如果不通用,这样 Tables("表B").Filter = "会员卡号 in (\'" & DataTables("表A").GetComboListString("会员卡号",Tables("表A").Filter).Replace("|","\',\'") & "\')"
排序必须要有相同的排序字段,否则没有办法一样,简单就这样 Tables("表B").Sort = Tables("表A").Sort
|
-- 作者:fubblyc
-- 发布时间:2016/8/9 9:01:00
--
谢谢 Hyphen 老师,比如左表排序之后,行的位置就改变了。想要右表也的行也随着变化。两个表都有【会员卡号】的字段。
不知道有没有
Tables("表B").col("会员卡号").Position = Tables("表A").col("会员卡号").Position
类似的功能。右表【会员卡号】字段各个行的位置= 左表【会员卡号】字段各个行的位置。
两个表的排序字段不一样。
[此贴子已经被作者于2016/8/9 9:03:37编辑过]
|
-- 作者:Hyphen
-- 发布时间:2016/8/9 9:26:00
--
没有这种用法
排序字段必须一致,否则没有办法比较顺序
|
-- 作者:fubblyc
-- 发布时间:2016/8/9 9:37:00
--
第一步按照老师的方法可以实现了:
此主题相关图片如下:1.png
[此贴子已经被作者于2016/8/9 9:42:11编辑过]
|
-- 作者:fubblyc
-- 发布时间:2016/8/9 9:41:00
--
哦。或者说将这两个表不可见,另外做一个显示表。将这两个表的数据合并在一起。
因为已经是加载好的表了。相比用加载、统计效率是不是应该会更高一点。
这样可行吗?
[此贴子已经被作者于2016/8/9 9:41:53编辑过]
|
-- 作者:大红袍
-- 发布时间:2016/8/9 9:45:00
--
循环左表的每一行,去右表查询对应的行,修改sortkey值为相同的值,即可。
|
-- 作者:fubblyc
-- 发布时间:2016/8/9 9:50:00
--
恩恩。谢谢 红袍老师,刚发现用两个表来显示不好,因为有滚动条,一个表往下拉的时候,没有代码可以让另一个表同时往下拉吧?哈哈。
所以我想另外做一个显示表,将两个表的数据都放在这个显示表。
这样就不存在排序、拖动滚动条 不同步 的问题。
FT的特色功能不熟悉。。。不知道怎么弄。。。
|
-- 作者:大红袍
-- 发布时间:2016/8/9 10:05:00
--
AfterScroll
If Forms("窗口1").Opened Then Dim tbl As Table = Tables("窗口1_Table2") If e.Table.TopVisibleRow <> tbl.TopVisibleRow Then tbl.TopVisibleRow = e.Table.TopVisibleRow e.Table.TopVisibleRow = e.Table.TopVisibleRow \'此行不可少,确保第一个可见行完整显示 End If End If
|