以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]子表同步加载能否多线程加载  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=185972)

--  作者:沪上游客
--  发布时间:2023/3/29 10:57:00
--  [求助]子表同步加载能否多线程加载
老师,我的主表“工程合同基础数据”事件AfterLoad中有如下代码,用于在主表只加载一条记录时,同时加载关联子表数据。因为有的记录子表记录多较多,运行时间太长,还会假死机,请问在事件中可不可以多线程(客户端)?代码应该怎么写?  图片点击可在新窗口打开查看
谢谢老师指导!

Tables("工程合同基础数据").Sort = "财务编号"
If Forms("单项合同各项数据查询").Opened Then
    Dim btn As WinForm.Button = Forms("单项合同各项数据查询").Controls("刷新概况")
    btn.PerformClick()
ElseIf Forms("项目清算").Opened Then
    zhtbjzgl = True
Else
    Dim t As Table = Tables("工程合同基础数据")
    Dim n As Integer = t.Rows.count
    If n = 1 Then
        zhtbjzgl = False \'加载主合同时不加载所有关联表(主要用于项目清算窗口打开时选择项目合同编号)
    Else
        zhtbjzgl = True
    End If
End If
e.DataTable.LoadChildren("支出合同研发成本")
e.DataTable.LoadChildren("资金调整")
If zhtbjzgl = False Then
    e.DataTable.LoadChildren("增值税发票开票登记")
    e.DataTable.LoadChildren("补充合同或决算数据")
    e.DataTable.LoadChildren("应收款收入数据")
    e.DataTable.LoadChildren("其他成本费用")
    e.DataTable.LoadChildren("工资表")
    e.DataTable.LoadChildren("总部申报")
    If DataTables.Contains("固定资产明细") = True
        e.DataTable.LoadChildren("固定资产明细")
    End If
    e.DataTable.LoadChildren("收入合同移交记录")
    e.DataTable.LoadChildren("项目借款数据")
    e.DataTable.LoadChildren("项目资金管理")
End If

--  作者:有点蓝
--  发布时间:2023/3/29 11:16:00
--  
没有办法使用多线程,考虑使用模拟关联和分页加载
--  作者:沪上游客
--  发布时间:2023/3/29 13:44:00
--  
老师,没有其他办法了吗?现在最长的一条记录需要17秒。
--  作者:有点蓝
--  发布时间:2023/3/29 13:47:00
--  
没有其它办法