Foxtable(狐表)用户栏目专家坐堂 → 动态加载代码优化请教


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

主题:动态加载代码优化请教

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


加好友 发短信
等级:五尾狐 帖子:1133 积分:8227 威望:0 精华:0 注册:2013/11/3 19:00:00
动态加载代码优化请教  发帖心情 Post By:2020/3/2 9:36:00 [显示全部帖子]

Dim ModuleName As String = Args(0)  '单据名称
Dim correlationTable As String      '关联表
'------获取窗体发布的Datatable-----
Dim ModuleListCmd As New SQLCommand
Dim ModuleListTable As DataTable
ModuleListCmd.ConnectionName = DataSource
ModuleListCmd.CommandText="Select * F rom {窗体发布}"
ModuleListTable = ModuleListCmd.ExecuteReader()
'-----------------------------------------------------
Dim dr As DataRow
dr = ModuleListTable.Find("单据 = '" & ModuleName & "'")
If dr IsNot Nothing Then
    If dr.Isnull("关联表") Then
        correlationTable = dr("主表")
    Else
        correlationTable = dr("关联表")
    End If
    LockBaseMainForm() '锁定主界面
    '如果要动态加载的表包含关联表
    If correlationTable.Contains("|") Then
        For Each TableName As String In correlationTable.Split("|")
            If DataTables.Contains(TableName) = False Then
                DataTables.Load(TableName)
            End If
            Dim r As DataRow
            r = ModuleListTable.Find("主表 = '" & TableName & "'")
            If r IsNot Nothing Then
                If r("单据")<>ModuleName Then
                    If forms.Contains(r("单据")) = True AndAlso Forms(r("单据")).Opened = False Then
                        Tables(TableName).Visible = False
                    ElseIf forms.Contains(r("单据")) = False And Tables(TableName).DataTable.Type = 3 Then
                        Tables(TableName).Visible = False
                    End If
                End If
            End If
        Next
    Else
        '如果要动态加载的表不包含关联表
        If DataTables.Contains(correlationTable) = False Then
            DataTables.Load(correlationTable)
        End If
    End If
    UnLockBaseMainForm() '解锁主界面
End If

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


加好友 发短信
等级:五尾狐 帖子:1133 积分:8227 威望:0 精华:0 注册:2013/11/3 19:00:00
  发帖心情 Post By:2020/3/2 9:41:00 [显示全部帖子]

老师,我做了个动态加载表的函数,因为想用狐表的关联表功能,所以在一张表里建了一个字段叫关联表,
加载表时,会去检查关联表里是否有关联内容:比如:A表|B表|C表,如果有就把这三张表都同时加载进来,
这个代码我是放在导航窗口的click事件里的(Functions.Execute("动态加载表","窗口名"),但有个问题就是,
打开窗体加载表后,当前窗体绑定的表是和窗体一起展示,没有问题(比如表A)。但其他两个表(表B和表C)也
会同时显示出来,只能又通过代码去隐藏,这样打开窗体会有点慢。是否有可以优化的方法?谢谢。
[此贴子已经被作者于2020/3/2 9:49:45编辑过]

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


加好友 发短信
等级:五尾狐 帖子:1133 积分:8227 威望:0 精华:0 注册:2013/11/3 19:00:00
  发帖心情 Post By:2020/3/2 10:17:00 [显示全部帖子]

但加载进来,如果其窗体没有打开,会显示一个没有窗体的表出来,有点难看,
有没有加载进来不显示的方法?谢谢

因为我这个是在打开窗口前就加载的,所以一直在用,也没啥问题,就是有点慢
[此贴子已经被作者于2020/3/2 10:20:49编辑过]

 回到顶部