以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  优化代码  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=23285)

--  作者:nblwar
--  发布时间:2012/9/7 19:10:00
--  优化代码

Select Case e.DataCol.Name      \'自动填数据
    Case "熔铸编号"
      Dim nms() As String = {"合金","坯料规格","当前规格","库位","流程","完成情况"}
      Dim dr As DataRow = DataTables("生产").Find("[熔铸编号] = \'" & e.NewValue & "\'")
       For Each nm As String In nms
           If dr IsNot Nothing
              e.DataRow(nm) = dr(nm)
           Else
              e.DataRow(nm) = Nothing
           End If
       Next

    Case "当前规格","库位","流程","完成情况"   \'物料总表同步修改
    DataTables("生产").ReplaceFor(e.DataCol.Name, e.NewValue, "[熔铸编号] = \'" & e.DataRow("熔铸编号") & "\'")
End Select

这个代码很好用,只是执行起来相当慢,有没有快点的代码啊

 

修改后的代码还是很慢

[此贴子已经被作者于2012-9-8 20:22:23编辑过]

--  作者:jspta
--  发布时间:2012/9/7 19:28:00
--  

从代码上看,删除或添加一次才执行,不可能很慢,你代码加入这两句试试

e.DataTable.StopRedraw

代码

e.DataTable.ResumeRedraw


--  作者:nblwar
--  发布时间:2012/9/7 19:44:00
--  

直接连表都没了???


--  作者:lin_hailun
--  发布时间:2012/9/7 19:47:00
--  
 同感不会太慢,生产表数据多少行?执行时间多少秒?
--  作者:nblwar
--  发布时间:2012/9/7 19:49:00
--  

一般几百行的数据就会要10几秒


--  作者:nblwar
--  发布时间:2012/9/7 19:50:00
--  
感觉狐表在双核机器上运行速度较快,但是单核的机器速度慢的要死啊
--  作者:程兴刚
--  发布时间:2012/9/7 20:06:00
--  

这样试试:

 

If e.DataCol.Name = "熔铸编号" Then
    Dim nms() As String = {"合同号","生产批号","客户","合金","状态","分卷A","分卷B","分卷C","分卷D"}
    Dim dr As DataRow
    dr = DataTables("生产").Find("[熔铸编号] = \'" & e.NewValue & "\'")
    For Each nm As String In nms
        If dr IsNot Nothing
            e.DataRow(nm) = dr(nm)
        Else
            e.DataRow(nm) = Nothing
        End If
    Next
End If

[此贴子已经被作者于2012-9-7 20:08:08编辑过]

--  作者:lin_hailun
--  发布时间:2012/9/7 20:10:00
--  
 十几秒感觉太离谱了。做个例子放上瞧瞧。
--  作者:nblwar
--  发布时间:2012/9/7 20:20:00
--  
谢谢程兴刚,代码还要明天拿到公司的古董上试过以后才能知道效果
--  作者:jspta
--  发布时间:2012/9/7 20:27:00
--  
以下是引用nblwar在2012-9-7 19:44:00的发言:

直接连表都没了???

这两句,一句放在你代码最前面,一句放在最后面。程版代码跟你原来没有什么区别,效果应该差不多。可能是你机器的原因吧。顺便说下,据个人测试,狐表对多核心支持不好,不能调用多核。