Foxtable(狐表)用户栏目专家坐堂 → 关于动态加载 请教


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

主题:关于动态加载 请教

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


加好友 发短信
等级:九尾狐 帖子:2482 积分:22932 威望:0 精华:0 注册:2011/3/29 17:14:00
关于动态加载 请教  发帖心情 Post By:2020/4/27 12:04:00 [显示全部帖子]

新建一张 权限表 有窗口 主表  关联表 三列  
我通过目录树  选择对应的窗口 打开主表 然后同时也加载关联表
系统默认是不加载任何表和数据 点击目录树时从后台获取加载条件
数据源是 sql  2019 


图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20200427120416.png
图片点击可在新窗口打开查看



原来的做法是将窗口和主表同名,现在想修改下。
 
If e.Node.Level = 1 Then
    If Forms(e.Node.Text).TableName <> "" Then '不是模式,独立窗口        
        If DataTables.Contains(Forms(e.Node.Text).TableName) = False Then '如果表C没有加载
            DataTables.Load(Forms(e.Node.Text).TableName) '加载表C
        End If        
        Forms(e.Node.Text).show
        MainTable = Tables(Forms(e.Node.Text).TableName)
    Else
        Forms(e.Node.Text).show
    End If
Else
    msgbox( e.node.text & "  正在测试 中尚未开放")
End If
[此贴子已经被作者于2020/4/27 12:08:35编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2482 积分:22932 威望:0 精华:0 注册:2011/3/29 17:14:00
  发帖心情 Post By:2020/4/27 18:36:00 [显示全部帖子]

If e.Node.Level = 1 Then
    If Forms(e.Node.Text).TableName <> "" Then '不是模式,独立窗口        
        If DataTables.Contains(Forms(e.Node.Text).TableName) = False Then '如果表C没有加载
            DataTables.Load(Forms(e.Node.Text).TableName) '加载表C
        End If        
        Forms(e.Node.Text).show
        MainTable = Tables(Forms(e.Node.Text).TableName)
    Else
        Forms(e.Node.Text).show
    End If
Else
    msgbox( e.node.text & "  正在测试 中尚未开放")
End If


在这个代码基础上 我想实现
当我点击节点时通过节点名在权限表里面的窗口列找到窗口名,同时打开主表列对应的主表和关联列对应的关联表  关联表的间隔符号是 | 
不会写。求助老师

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


加好友 发短信
等级:九尾狐 帖子:2482 积分:22932 威望:0 精华:0 注册:2011/3/29 17:14:00
  发帖心情 Post By:2020/4/28 0:39:00 [显示全部帖子]

Dim cmd As New SQLCommand
Dim dt As DataTable
cmd.Co nnecti
cmd.Co mmandText = "SELE CT DISTINCT 子菜单,权限,用户 From {菜单目录}"
dt = cmd.ExecuteReader( )
DataTables("菜单目录").LoadFilter = ""
DataTables("菜单目录").Load
Dim tr As WinForm.TreeView = e.Form.Controls("TreeView1")
tr.BuildTree("菜单目录", "子菜单|权限","[用户] Like '%" & User.Name & "%'", "_sortkey, _Identify")

上面的代码在 菜单目录 不被加载时应该是可以建立目录树的  不知哪里设计错误不能 建立目录树。

希望后台数据建立目录树 ,不需要加载数据或表,可行吗?还是必须加载表才能执行目录树

---------------------------
提示
---------------------------
不存在名称为"菜单目录"的DataTable!
---------------------------
确定   
---------------------------


[此贴子已经被作者于2020/4/28 0:41:36编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2482 积分:22932 威望:0 精华:0 注册:2011/3/29 17:14:00
  发帖心情 Post By:2020/4/28 1:11:00 [显示全部帖子]

这个先后顺序有问题哦,流程是先打开打开窗口,然后打开对应表  最后打开关联表,还需要麻烦老师

If e.Node.Level = 1 Then
    If Forms(e.Node.Text).TableName <> "" Then '不是模式,独立窗口
        If DataTables.Contains(Forms(e.Node.Text).TableName) = False Then '如果表C没有加载
            Dim dr As DataRow = DataTables("菜单目录").find("权限='" & e.node.text & "'")
            If dr IsNot Nothing Then
                DataTables.Load(dr("对应表") & "|" & dr("关联表")) '加载表C
            End If

下面需要直接打开窗口 通知切换到对用的表

            Forms(e.Node.Text).show    定位到 权限='" & e.node.text   
            MainTable = Tables(Forms(e.Node.Text).TableName)   定位到 对应表
        Else
            Forms(e.Node.Text).show
        End If
    End If
Else
    msgbox( e.node.text & "  正在测试 中尚未开放")
    
End If

[此贴子已经被作者于2020/4/28 2:49:40编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2482 积分:22932 威望:0 精华:0 注册:2011/3/29 17:14:00
  发帖心情 Post By:2020/4/28 11:40:00 [显示全部帖子]

If e.Col.Name = "加载" Then
    Dim dr As DataRow
    'If DataTables.Contains("主表") = False Then
    If DataTables.Contains(dr("主表")) = False Then '如果表C没有加载        
        DataTables.Load(dr("主表") & "|" & dr("关联表"))
    End If
End If


上面的代码想实现单机加载列  在同行获取主表和 关联表加载进来

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


加好友 发短信
等级:九尾狐 帖子:2482 积分:22932 威望:0 精华:0 注册:2011/3/29 17:14:00
  发帖心情 Post By:2020/5/5 2:06:00 [显示全部帖子]

If e.Node.Level = 1 Then
    If Forms(e.Node.Text).TableName <> "" Then '不是模式,独立窗口

        Dim cmd As New SQLCom mand
        Dim dt As DataTable
        cmd.Con necti
        cmd.Com mandText = "SELE CT DISTINCT 子菜单,权限 From {菜单目录} where [主表] Like '%" & e.node.text & "%'"
        dt = cmd.ExecuteReader( )
        
        If DataTables.Contains(Forms(e.Node.Text).TableName) = False Then '如果表C没有加载
            Dim dr As DataRow = DataTables("菜单目录").find("权限='" & e.node.text & "'")            
            
            If dr IsNot Nothing Then
                DataTables.Load(dr("主表")) '加载表C
                'DataTables.Load(dr("主表") & "|" & dr("关联表")) '加载表C
            End If           
            
            Forms(e.Node.Text).show
            MainTable = Tables(Forms(e.Node.Text).TableName)
        Else
            Forms(e.Node.Text).show
        End If
    End If
Else
    msgbox( e.node.text & "  正在测试 中尚未开放")
End If



加载了数据还是有错误

---------------------------
提示
---------------------------
不存在名称为"菜单目录"的DataTable!
---------------------------
确定   
---------------------------


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


加好友 发短信
等级:九尾狐 帖子:2482 积分:22932 威望:0 精华:0 注册:2011/3/29 17:14:00
  发帖心情 Post By:2020/5/5 9:04:00 [显示全部帖子]

If e.Col.Name = "卸载" Then
    Dim dr As DataRow
    'If DataTables.Contains("主表") = False Then
    If DataTables.Contains(e.Row("主表")) Then '如果表C没有加载
        DataTables.Unload(e.Row("主表") & "|" & e.Row("关联表"))   如果表以加载可以正常操作,如果有一部分表没有加载,卸载时就会报错,求助如何做好判断不报错的卸载呢
    End If
End If

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


加好友 发短信
等级:九尾狐 帖子:2482 积分:22932 威望:0 精华:0 注册:2011/3/29 17:14:00
  发帖心情 Post By:2020/5/7 13:45:00 [显示全部帖子]

 If Forms(e.Node.Text).TableName <> "" Then '不是模式,独立窗口
        
        
        If DataTables.Contains(Forms(e.Node.Text).TableName) = False Then '如果表C没有加载
            Dim dr As DataRow = dt.find("权限='" & e.node.text & "'")
            If dr IsNot Nothing Then
                DataTables.Load(dr("主表")) '加载表C
                DataTables.Load(dr("主表") & "|" & dr("关联表")) '加载表C   这段加入后不能打开关联表的数据
            End If
            Forms(e.Node.Text).show
            MainTable = Tables(Forms(e.Node.Text).TableName)
        Else
            Forms(e.Node.Text).show
        End If
    End If

在表属性内使用正常

If e.Col.Name = "加载" Then
    Dim dr As DataRow
    'If DataTables.Contains("主表") = False Then
    If DataTables.Contains(e.Row("主表")) = False Then '如果表C没有加载
        DataTables.Load(e.Row("主表") & "|" & e.Row("关联表"))
    End If
End If

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


加好友 发短信
等级:九尾狐 帖子:2482 积分:22932 威望:0 精华:0 注册:2011/3/29 17:14:00
  发帖心情 Post By:2020/5/7 20:03:00 [显示全部帖子]

老师你好  我需要的加载关联表,跟主表同时加载进来到系统。然后才能打开窗口,

需要实现下面的代码一样的功能,不过我现在是在目录树里设计

If e.Col.Name = "加载" Then
    Dim dr As DataRow
    'If DataTables.Contains("主表") = False Then
    If DataTables.Contains(e.Row("主表")) = False Then '如果表C没有加载
        DataTables.Load(e.Row("主表") & "|" & e.Row("关联表"))
    End If
End If

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


加好友 发短信
等级:九尾狐 帖子:2482 积分:22932 威望:0 精华:0 注册:2011/3/29 17:14:00
  发帖心情 Post By:2020/5/7 21:30:00 [显示全部帖子]

报错 列“关联表”不属于表 。
图片点击可在新窗口打开查看此主题相关图片如下:企业微信截图_20200507213023.png
图片点击可在新窗口打开查看

[此贴子已经被作者于2020/5/7 21:30:53编辑过]

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