Foxtable(狐表)用户栏目专家坐堂 → [求助]关于效率优化的问题~~~~~~~~~~


  共有7365人关注过本帖平板打印复制链接

主题:[求助]关于效率优化的问题~~~~~~~~~~

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


加好友 发短信
等级:五尾狐 帖子:1165 积分:9032 威望:0 精华:1 注册:2011/5/25 16:33:00
[求助]关于效率优化的问题~~~~~~~~~~  发帖心情 Post By:2013/1/25 14:44:00 [只看该作者]

 在一个窗口table的一个按钮 button里有一段代码

图片点击可在新窗口打开查看此主题相关图片如下:表格.jpg
图片点击可在新窗口打开查看


Dim dtb As New DataTableBuilder("历史进店记录1")
dtb.Build()
DataTables("历史进店记录1").Fill("Select * From [历史进店记录]","华泰内控系统-ERP",False)
Tables("售后客户档案_售后客户档案Table2").StopRedraw

For Each dr As Row In Tables("售后客户档案_售后客户档案Table2")
    If DataTables("历史进店记录1").Compute("Count(进店时间)","进店时间 >= #"& Functions.Execute("服务器时间").addyears(-1) &"# And 底盘号 = '" & dr("底盘号") & "'") >= 3 Then
        dr("客户等级") = "A"
    ElseIf DataTables("历史进店记录1").Compute("Count(进店时间)","进店时间 >= #"& Functions.Execute("服务器时间").addyears(-1) &"# And 底盘号 = '" & dr("底盘号") & "'") = 2 Then
        dr("客户等级") = "B"
    ElseIf DataTables("历史进店记录1").Compute("Count(进店时间)","进店时间 >= #"& Functions.Execute("服务器时间").addyears(-1) &"# And 底盘号 = '" & dr("底盘号") & "'") = 1 Then
        dr("客户等级") = "C"
    Else
        dr("客户等级") = "D"
    End If
   
    If Functions.Execute("服务器时间").addmonths(-3) < dr("建档日期") Then
        dr("客户等级") = "A"
    End If
   
    If dr.IsNull("编号") = True Then
        dr("客户等级") = "E"
    End If
Next
Tables("售后客户档案_售后客户档案Table2").ResumeRedraw



这段代码就是用来根据今天的时间来调整 整个表里的客户等级    我一执行这段代码就出现卡死,
后来我优化了代码,采用了查询与赋值分开的做法




Dim dtb As New DataTableBuilder("历史进店记录1")
dtb.Build()
DataTables("历史进店记录1").Fill("Select * From [历史进店记录]","华泰内控系统-ERP",False)
Tables("售后客户档案_售后客户档案Table2").StopRedraw

Dim Dic As new Dictionary(of Row, String)
For Each dr As Row In Tables("售后客户档案_售后客户档案Table2")
    If DataTables("历史进店记录1").Compute("Count(进店时间)","进店时间 >= #"& Functions.Execute("服务器时间").addyears(-1) &"# And 底盘号 = '" & dr("底盘号") & "'") >= 3 Then
        dic.Add(dr, "A")
    ElseIf DataTables("历史进店记录1").Compute("Count(进店时间)","进店时间 >= #"& Functions.Execute("服务器时间").addyears(-1) &"# And 底盘号 = '" & dr("底盘号") & "'") = 2 Then
        dic.Add(dr, "B")
    ElseIf DataTables("历史进店记录1").Compute("Count(进店时间)","进店时间 >= #"& Functions.Execute("服务器时间").addyears(-1) &"# And 底盘号 = '" & dr("底盘号") & "'") = 1 Then
        dic.Add(dr, "C")
    Else
        dic.Add(dr, "D")
    End If
Next

For Each dr As Row In dic.Keys
    dr("客户等级") = dic(dr)
Next
Tables("售后客户档案_售后客户档案Table2").ResumeRedraw

但是还出现卡死,求解了~~~~~~~~~~~~~~~~~~

[此贴子已经被作者于2013-1-25 14:45:46编辑过]

 回到顶部