Foxtable(狐表)用户栏目专家坐堂 → 运行效率太慢,求帮忙优化,提升效率


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

主题:运行效率太慢,求帮忙优化,提升效率

帅哥哟,离线,有人找我吗?
阆子天涯
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:124 积分:1071 威望:0 精华:0 注册:2014/3/4 22:06:00
  发帖心情 Post By:2014/5/4 15:59:00 [只看该作者]

9楼的版主太厉害了,不到2秒钟就出来了,赞一个!谢谢!


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


加好友 发短信
等级:小狐 帖子:317 积分:2631 威望:0 精华:0 注册:2012/11/28 19:35:00
  发帖心情 Post By:2014/5/5 7:18:00 [只看该作者]

楼主我没有看你的文件,不知道你要操作的表里面是不是有表达式列或者有表事件。这两项也会极大地影响效率。我之前做一个项目导入一百多条数据就用了一分多钟。之后把这两个东西都删掉了,好快,一两秒就完丁。

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


加好友 发短信
等级:超级版主 帖子:521 积分:4910 威望:0 精华:7 注册:2008/9/2 22:22:00
  发帖心情 Post By:2014/5/6 22:28:00 [只看该作者]

优化一下:

Dim dt3 As DataTable
Dim bd1 As  GroupTableBuilder
Dim fxdts(8) As fxDataSource
Dim nms(),Ymds(),Bts() As String
Dim  Filter,s2,s3 ,flt1,ep1,ep2,ep3 As  String

Dim nms1 As String() = {"编码","名称","颜色","尺码","年份","季节","零售价"}  '分組列1
Dim nms2 As String() = {"编码","名称","颜色","尺码","年份","季节"}  '分組列2
Dim t3 As Table = e.Form.Controls("库存报表").Table

Ymds="D@F@T@R@R@@@@".split("@")
Bts= "库房_调拨出库@库房_收货入库@库房_返货出库@店铺_调拨出库@店铺_调拨入库@店铺_零售出库@店铺_零退入库@店铺_库调@店铺_退货入库".split("@")      '統計標題

ep1 = "IsNull([库房_收货入库],0) +IsNull([库房_返货出库],0)+IsNull([库房_调拨出库],0)+IsNull([店铺_退货入库],0)-Isnull([店铺_库调],0)"
ep2 = "IsNull([店铺_库调],0) +IsNull([店铺_调拨入库],0)+IsNull([店铺_调拨出库],0)+IsNull([店铺_零退入库],0)"
ep2+="-Isnull([店铺_零售出库],0)-Isnull([店铺_退货入库],0)"
ep3 = "IsNull([合计_库房],0) +IsNull([合计_店铺],0)"

s3 ="品牌,门店,年份,季节,开始日期,截止日期"
For Each s2 In  s3.split(",")
    With e.Form.Controls(s2)
        If .Value  IsNot  Nothing   Then
            If Filter > ""   Then
                Filter+ = " And "
            End  If
            If s2 = "开始日期" Then
                Filter+ =  "单据日期 >= #" & .Value &   "#"
            ElseIf s2 = "截止日期"  Then
                Filter+ =  "单据日期 <= #" & .Value &   "#"
            Else
                Filter+ =   s2 & " = '" & .Value &   "'"
            End  If
        End  If
    End   With
Next



If   Filter >  "" Then
    Tables("出入库明细").Filter =  Filter
    
    For n1 As Integer = 0 To 8
        If n1 > 6 Then
            dt3 = DataTables("库调明细表_主表")
        Else
            dt3 = DataTables("出入库明细")
        End If
        bd1 = New GroupTableBuilder("报表",dt3)
        For Each s2 In nms1
            If dt3.DataCols.Contains(s2) Then
                bd1.Groups.AddDef(s2) '分组
            End If
        Next
        
        bd1.Totals.AddDef("数量",Bts(n1)) '对数量进行统计
        flt1= "收发类型= '" &   Bts(n1).split("_")(1) & "'"
        If Ymds(n1) > "" Then
            flt1+= " And 业务单号首位 = '" &  Ymds(n1) & "'"
        End If
        
        bd1.Filter = flt1  & " and " & Filter
        fxdts(n1)  = bd1.BuildDataSource()
        nms = iif(n1 < 7,nms1,nms2)
        If  n1  > 0 Then  fxdts(0).Combine(nms,fxdts(n1),nms)
    Next
    
    
    t3.StopRedraw
    t3.DataSource = fxdts(0)
    With t3.DataTable.DataCols
        .Add("合计_库房", Gettype(Integer),ep1)
        .Add("合计_店铺", Gettype(Integer),ep2)
        .Add("合计_店库", Gettype(Integer),ep3)
    End With
    t3.AutoSizeCols
    t3.ResumeRedraw
End If
[此贴子已经被作者于2014-5-6 22:29:34编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/5/6 22:29:00 [只看该作者]

 呵呵,精益求精呐 图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  15楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2014/5/7 8:06:00 [只看该作者]

Y版来编程,我去卖红薯。

 

图片点击可在新窗口打开查看


 回到顶部
帅哥哟,离线,有人找我吗?
阆子天涯
  16楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:124 积分:1071 威望:0 精华:0 注册:2014/3/4 22:06:00
  发帖心情 Post By:2014/5/7 15:13:00 [只看该作者]

ybil,你修改后的结构很简洁,紧凑,你太厉害了!佩服!

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