Foxtable(狐表)用户栏目专家坐堂 → 汇总求助


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

主题:汇总求助

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


加好友 发短信
等级:九尾狐 帖子:2649 积分:19390 威望:0 精华:1 注册:2008/9/12 9:19:00
  发帖心情 Post By:2012/9/1 15:11:00 [只看该作者]

以下是引用lin_hailun在2012-9-1 14:29:00的发言:

如果是这个问题的话,帮你稍微替换了下原先的代码,测试有效,效率自己测试。

Dim s As String = e.Form.Controls("月份").Value
If s <> "" Then
    Dim n As Integer = e.Form.Controls("月份").Value
    DataTables("月报表").DataRows.Clear
    Dim Arys As List(Of String())
    Arys = DataTables("入仓").GetUniqueValues("", "型号","规格")
    For Each Ary As String() In Arys
        Dim r As Row = Tables("月报表").AddNew
        r("型号") = Ary(0)
        r("规格") = Ary(1)
    Next
    For Each dr As DataRow In DataTables("月报表").DataRows
        Dim s1 As String = "型号 = '" & dr("型号") & "' And 规格 = '" & dr("规格") & "' And 月份 = '" & s & "'"
        'Dim s2 As String = "型号 = '" & dr("型号") & "' And 规格 = '" & dr("规格") & "' And 月份 < " & n
        'Dim Sum,Sum1 As Double

        dr("本月入仓_数量") = DataTables("入仓").Compute("Sum(入仓数量)",s1)
        dr("本月入仓_金额") = DataTables("入仓").Compute("Sum(入仓金额)",s1)
        dr("本月出仓_数量") = DataTables("出仓").Compute("Sum(出仓数量)",s1)
      
        '自己进行统计
        Dim s2 As String =  "型号 = '" & dr("型号") & "' And 规格 = '" & dr("规格") & "'"
        Dim Sum, Sum1, Sum2 As Double
        Sum = 0
        Sum1 = 0
        Sum2 = 0
        Dim drs As List(Of DataRow)
        drs = DataTables("入仓").Select(s2, "月份")
        Dim mdr As DataRow
        For Each mdr In drs
            If mdr("月份") >= s Then
                Exit For
            End If
            Sum = Sum + mdr("入仓金额")
            Sum1 = Sum1 + mdr("入仓数量")
        Next
      
        drs = DataTables("出仓").Select(s2, "月份")
        For Each mdr In drs
            If mdr("月份") >= s Then
                Exit For
            End If
            Sum2 = Sum2 + mdr("出仓数量")
        Next


        'Sum = DataTables("入仓").Compute("Sum(入仓金额)",s2)
        'Sum1 = DataTables("入仓").Compute("Sum(入仓数量)",s2)
        'dr("上月结存_数量") = Sum1 - DataTables("出仓").Compute("Sum(出仓数量)",s2)

        dr("上月结存_数量") = Sum1 - Sum2      

        '-----------------------计算上月结存金额
        dr("上月结存_金额") = Sum / Sum1 * dr("上月结存_数量")
        '-----------------------
      
        dr("本月加权平均单价") = (dr("上月结存_金额") + dr("本月入仓_金额"))/(dr("上月结存_数量") + dr("本月入仓_数量"))
        dr("本月结存_数量") = dr("上月结存_数量") + dr("本月入仓_数量") - dr("本月出仓_数量")
      
        dr("本月结存_金额") = dr("本月加权平均单价") * dr("本月结存_数量")
        dr("本月出仓_金额") = dr("本月加权平均单价") * dr("本月出仓_数量")
      
    Next
End If

3000记录25秒,有一点改善,还不能满足要求,希望10000条记录5秒以下,3000条记录2秒以下


 回到顶部
总数 47 1 2 3 4 5 下一页