以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助] 优先下载速度 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=178560) |
-- 作者:sanny -- 发布时间:2022/7/9 21:35:00 -- [求助] 优先下载速度 老师,以下这个BOM有几百万行,用以下代码太慢了,如何用Dim sql As String 来实现 ? 是不是会更快些 ?谢谢。 Dim cmd As New SQLCommand Dim dt As DataTable DataTables("BOM").datarows.clear DataTables("BOM").save cmd.C Dim Cols1() As String = {"BomId","SortSeq","ComponentId","BaseQtyN","BaseQtyD","ParentId","Version","cInvName","VersionDesc","cInvCode"} Dim Cols2() As String = {"BomId","SortSeq","ComponentId","BaseQtyN","BaseQtyD","ParentId","Version","cInvName","VersionDesc","cInvCode"} cmd.CommandText ="Sel ect {bom_opcomponent}.BomId,SortSeq,ComponentId,BaseQtyN,BaseQtyD,ParentId,Version,cInvName,VersionDesc,cInvCode From (((({bom_opcomponent} Left JOIN {bom_parent} ON {bom_parent}.[BomId] = {bom_opcomponent}.[BomId]) Left JOIN {bom_bom} ON {bom_bom}.[BomId] = {bom_opcomponent}.[BomId]) Inner JOIN {bas_part} ON {bas_part}.[PartId] = {bom_opcomponent}.[ComponentId]) Inner JOIN {Inventory} ON {Inventory}.[cInvCode] = {bas_part}.[InvCode]) Where Status <> 4" dt = cmd.ExecuteReader() For Each dr1 As DataRow In dt.DataRows Dim dr2 As DataRow = DataTables("BOm").AddNew() For i As Integer = 0 To Cols1.Length -1 dr2(Cols2(i)) = dr1(Cols1(i)) Next Next Tables("BOM").ResumeRedraw() |
-- 作者:有点蓝 -- 发布时间:2022/7/10 20:44:00 -- 如果说要使用sql直接加载为适合bom的结构,比较难。 如果只是合并加载几个表的数据,几百万行一次性全部加载出来的话,不管使用什么方法都快不了。 可以考虑换种方式,使用这种动态目录树:http://www.foxtable.com/webhelp/topics/3308.htm,展开的时候才加载子bom数据,然后点击树节点的时候再加载和这个节点有关的数据
|