以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  关于动态加载表的问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=192100)

--  作者:scofields
--  发布时间:2024/5/29 0:36:00
--  关于动态加载表的问题
这个动态加载问题,经我检测会检测加载顺序,所以进行了改良,有没更简便的方式,我有个环节有20个表,照这样的写法,简直会累死啊。求版主给个简便的方式

Select Case e.Link.Name
            Case "资金入账"
                If DataTables.Contains("T_资金表") = False AndAlso DataTables.Contains("T_客户表") = False AndAlso DataTables.Contains("T_付款方式") = False Then
                    DataTables.Load("T_资金表|T_客户表|T_付款方式")
                    ElseIf DataTables.Contains("T_资金表") = False AndAlso DataTables.Contains("T_付款方式") = false Then
                    DataTables.Load("T_资金表|T_付款方式")
                    ElseIf DataTables.Contains("T_资金表") = False
                     DataTables.Load("T_资金表")
                    ElseIf DataTables.Contains("T_付款方式") = False
                     DataTables.Load("T_付款方式")
                End If
                MainTable = Tables("T_资金表")
                Forms("资金入账").Open()
       

--  作者:y2287958
--  发布时间:2024/5/29 8:31:00
--  
Dim 表名组 As String() = "T_资金表|T_客户表|T_付款方式".Split ("|")
For Each 表名 As String In 表名组
    If DataTables.Contains(表名) = False Then
        DataTables.Load(表名)
    End If 
Next 
[此贴子已经被作者于2024/5/29 8:31:17编辑过]

--  作者:cd_tdh
--  发布时间:2024/5/29 9:05:00
--  
Dim Value As String = "T_资金表|T_客户表|T_付款方式"
Dim sps() As Char = {"|"}
Dim Names() As String = Value.Split(sps)
For Each name As String In Names
    If DataTables.Contains(name) = False Then
        DataTables.Load(name)
    End If 
Next


--  作者:scofields
--  发布时间:2024/5/29 12:57:00
--  
感谢老师给予指导。按照你这个格式,我套用卸载,发现有问题,其中订单表与订单明细表是关联表,如何改进?
Select Case e.Page.Name
    Case  "系统刷新"
        Select Case e.Link.Name
            Case "系统刷新"
                Dim Value1 As String = "T_销售方式|T_订单表|T_订单明细|T_发货单|T_交货地点|T_资金表|T_付款方式|......"省去后面30个表
                Dim sps3() As Char = {"|"}
                Dim Names() As String = Value1.Split(sps3)
                For Each name As String In Names
                    If DataTables.Contains(name) = True Then
                        DataTables.UnLoad(name)
                    End If
                Next
                Forms("主界面窗口").open()
                MainTable=Tables("Maintables")

--  作者:cd_tdh
--  发布时间:2024/5/29 13:12:00
--  
关联表就没法这样一个一个弄了,建议:
1、常规逻辑是加载了的表就不要卸载了,卸载了在加载有需要时间;
2、一次需要同时加载30个表吗?既然是加载,就不要一次加载那么多表,用到那几个表就加载那几个表就行了。

--  作者:y2287958
--  发布时间:2024/5/29 14:17:00
--  
加载主表的同时加载关联表即可
--  作者:scofields
--  发布时间:2024/5/29 14:22:00
--  
嗯!感谢楼主指点,我还是选择既然加载了就不要卸载了吧
--  作者:scofields
--  发布时间:2024/5/29 14:22:00
--  
这个没用,你看我上面同时主表、子表都卸载(并且是在两个表同时加载的情况下)
--  作者:y2287958
--  发布时间:2024/5/29 14:40:00
--  
无语