Foxtable(狐表)用户栏目专家坐堂 → [求助]已知关联表,如果用代码找出该关联表对应的子表


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

主题:[求助]已知关联表,如果用代码找出该关联表对应的子表

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


加好友 发短信
等级:小狐 帖子:328 积分:2529 威望:0 精华:0 注册:2020/3/2 23:15:00
[求助]已知关联表,如果用代码找出该关联表对应的子表  发帖心情 Post By: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

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


加好友 发短信
等级:超级版主 帖子:110669 积分:563259 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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

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


加好友 发短信
等级:小狐 帖子:328 积分:2529 威望:0 精华:0 注册:2020/3/2 23:15:00
  发帖心情 Post By: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、如果有狐友有更好的办法,麻烦赐教,谢谢。

 回到顶部