Foxtable(狐表)用户栏目专家坐堂 → 优化代码


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

主题:优化代码

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


加好友 发短信
等级:四尾狐 帖子:977 积分:6806 威望:0 精华:1 注册:2012/8/7 22:03:00
优化代码  发帖心情 Post By: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编辑过]

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


加好友 发短信
等级:四尾狐 帖子:977 积分:6806 威望:0 精华:1 注册:2012/8/7 22:03:00
  发帖心情 Post By:2012/9/7 19:44:00 [显示全部帖子]

直接连表都没了???


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


加好友 发短信
等级:四尾狐 帖子:977 积分:6806 威望:0 精华:1 注册:2012/8/7 22:03:00
  发帖心情 Post By:2012/9/7 19:49:00 [显示全部帖子]

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


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


加好友 发短信
等级:四尾狐 帖子:977 积分:6806 威望:0 精华:1 注册:2012/8/7 22:03:00
  发帖心情 Post By:2012/9/7 19:50:00 [显示全部帖子]

感觉狐表在双核机器上运行速度较快,但是单核的机器速度慢的要死啊

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


加好友 发短信
等级:四尾狐 帖子:977 积分:6806 威望:0 精华:1 注册:2012/8/7 22:03:00
  发帖心情 Post By:2012/9/7 20:20:00 [显示全部帖子]

谢谢程兴刚,代码还要明天拿到公司的古董上试过以后才能知道效果

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


加好友 发短信
等级:四尾狐 帖子:977 积分:6806 威望:0 精华:1 注册:2012/8/7 22:03:00
  发帖心情 Post By:2012/9/7 20:29:00 [显示全部帖子]

例子非常简单,就是两个结构一样的表,一个表输入熔铸编号,就会自动引用另一个表该熔铸编号的相关记录,两个表的代码也只有这个代码,在我自己电脑上没什么问题,可是在公司古董上面运行就超慢


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


加好友 发短信
等级:四尾狐 帖子:977 积分:6806 威望:0 精华:1 注册:2012/8/7 22:03:00
  发帖心情 Post By:2012/9/7 20:32:00 [显示全部帖子]

好歹也是2G内存的电脑,虽然是单核,不至于这么慢吧


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


加好友 发短信
等级:四尾狐 帖子:977 积分:6806 威望:0 精华:1 注册:2012/8/7 22:03:00
  发帖心情 Post By:2012/9/7 20:34:00 [显示全部帖子]

我在公司多台机器上面装了狐表,发现单核的每次启动都要好几分钟,双核就没多少问题

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


加好友 发短信
等级:四尾狐 帖子:977 积分:6806 威望:0 精华:1 注册:2012/8/7 22:03:00
  发帖心情 Post By:2012/9/7 20:40:00 [显示全部帖子]

C版说的有道理啊,我找找看

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


加好友 发短信
等级:四尾狐 帖子:977 积分:6806 威望:0 精华:1 注册:2012/8/7 22:03:00
  发帖心情 Post By:2012/9/7 20:50:00 [显示全部帖子]

差点忘了,这个代码下面还有这么几句代码,太多空行给漏掉了

 

 

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

Select Case e.DataCol.Name      '自动填数据
    Case "合金","坯料规格","当前规格","库位","流程","完成情况"
        Dim Filter As String = "[熔铸编号] = '" & e.DataRow("熔铸编号") & "'"
        DataTables("生产").ReplaceFor(e.DataCol.Name, e.NewValue, Filter)
End Select

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

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