以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]已知关联表,如果用代码找出该关联表对应的子表 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=168966) |
-- 作者:昱飞哥 -- 发布时间:2021/5/28 18:14:00 -- [求助]已知关联表,如果用代码找出该关联表对应的子表 首先,因为我每个主表都保存了视图,视图的名称就是表的名称。 我想一键让所有的关联表都按照对应的视图打开。比如Tables(“客户信息表.客户联系人信息表”)按照视图“客户联系人信息表”打开。 于是我有了下面的代码: For Each t As Table In Tables If t.IsRelation Then \'如果是关联表 Dim s As String = t. \'关联表的子表的名称 这行代码不会写 t.OpenView(s) End If Next
|
-- 作者:有点蓝 -- 发布时间:2021/5/29 8:46:00 -- 参考:http://www.foxtable.com/webhelp/topics/1941.htm For Each re As Relation In Relations tables(Re.ChildTable.Name).OpenView(Re.ParentTable.Name) Next
|
-- 作者:昱飞哥 -- 发布时间:2021/5/29 12:45:00 -- 感谢老师,已经成功。贴出代码分享给狐友们: For Each t As Table In Tables If t.IsRelation Then \'如果是关联表 For Each re As Relation In Relations t.OpenView(Re.ChildTable.Name) \'打开视图名称是表t的子表名称的视图 Next Else \'如果不是关联表 t.OpenView(t.Name) \'则打开视图名称是表t的名称的视图 End If Next 提示: 1、首先我是每个建每个主表的时候都保存了表视图,表视图的名称填写的是该主表的名字; 2、因为当主表的列的排列顺序发生改变之后,如果窗口中有该主表的副本表,那么当窗口运行的时候,副本表的列的排列顺序就跟主表不一样了 3、为了解决该问题,实现当窗口运行的时候,副本表的列的排列顺序始终和主表一样。于是有了上述代码。 4、将上述代码写进每个含有副本表的窗口的AfterLoad事件。免去了需要给各个副本表写.openview代码的繁琐。 5、这个方法有2件麻烦事:一是每个主表都有保存表视图,且每次调整列顺序都要手动保存表视图;二是要在每个含有副本表的窗口的AfterLoad事件都写入上述代码。 6、如果有狐友有更好的办法,麻烦赐教,谢谢。 |