Foxtable(狐表)用户栏目专家坐堂 → 这样的代码,还能优化吗?


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

主题:这样的代码,还能优化吗?

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


加好友 发短信 一级勋章
等级:狐仙 帖子:9879 积分:57634 威望:0 精华:15 注册:2008/9/1 9:45:00
这样的代码,还能优化吗?  发帖心情 Post By:2013/9/17 8:39:00 [只看该作者]

'''...
Dim y As Integer = Date.Today.Year
Dim m As Integer = Date.Today.Month
Dim s_date As New Date(y, 1,1)
Dim e_date As New Date(y, 12,31)
Dim Filter As String
Filter = "日期 >= '" & s_date & "' And 日期 <= '" & e_date & "'"

Dim cmd As New SQLCommand
Dim dt As DataTable
cmd.C
cmd.CommandText = "SELECT DISTINCT  [_Identify],日期,部门,报表名称,项目,数据统计项目,统计类型,数值,统计部门,年,月,管组民警,组别,款号,品名,模具规格,工件名称,工件规格,区分 from{十监区管理} Where " & Filter & "And (组别 ='大件组' Or 组别='小件组')"
dt = cmd.ExecuteReader()

Dim dtb As New DataTableBuilder("统计")
dtb.AddDef("部门", Gettype(String), 50)
dtb.AddDef("组别", Gettype(String), 50)
dtb.AddDef("管组民警", Gettype(String), 50)
dtb.AddDef("项目", Gettype(String), 50)
dtb.AddDef("一月", Gettype(Double))
dtb.AddDef("二月", Gettype(Double))
dtb.AddDef("三月", Gettype(Double))
dtb.AddDef("四月", Gettype(Double))
dtb.AddDef("五月", Gettype(Double))
dtb.AddDef("六月", Gettype(Double))
dtb.AddDef("七月", Gettype(Double))
dtb.AddDef("八月", Gettype(Double))
dtb.AddDef("九月", Gettype(Double))
dtb.AddDef("十月", Gettype(Double))
dtb.AddDef("十一月", Gettype(Double))
dtb.AddDef("十二月", Gettype(Double))

Tables(e.Form.Name & "_Table1").DataSource = dtb.BuildDataSource

Dim i As Integer
For Each v As String() In dt.GetUniqueValues("","部门","组别","管组民警")
    Dim s() As String ={"额定工时","实际工时","产量(吨)"}
    For i = 0 To s.Length -1
        Dim dr1 As DataRow = Tables(e.form.Name & "_Table1").DataTable.AddNew()
        dr1("部门") = v(0)
        dr1("组别") = v(1)
        dr1("管组民警") = v(2)
        dr1("项目") = s(i)
    Next
Next


Dim Arys As List(Of String())
Dim Ar As DataRow
Dim dt1 As Date
Dim dt2 As Date
Dim Filter1 As String
Dim Val,Val1,Val2,Val3 As Double
Arys = dt.GetUniqueValues("","部门","组别","管组民警","数据统计项目")
For Each Ary As String() In Arys
    Filter = "[部门] = '" & Ary(0) & "' And 组别='" & Ary(1) & "'And 管组民警='" & Ary(2) & "' And 项目='" & Ary(3) & "'"
    If Filter > "" Then
        Ar = DataTables(e.form.Name & "_Table1").Find(Filter)
        If Ar IsNot Nothing Then
            Dim Vals() As String = {"一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"}
            For index As Integer = 0 To Vals.Length - 1
                dt1 = New Date(y, index+1, 1)
                dt2 = New Date(y, index+1, Date.DaysInMonth(y,index+1)) '获取该月的最后一天
                Filter1 = "日期>='" & dt1 & "'And 日期<='" & dt2 & "' And [部门] = '" & Ary(0) & "' And 组别='" & Ary(1) & "'And 管组民警='" & Ary(2) & "' And 数据统计项目='" & Ary(3) & "' And 区分 ='生产数据录入'"
                Val= dt.Compute("Sum(数值)",Filter1)
                If Val > 0 Then
                    Ar(Vals(index)) = Val
                Else
                    Ar(Vals(index)) = 0
                End If
            Next
        End If
    End If
Next

Tables(e.form.Name & "_Table1").Datatable.Datacols.Add("累计",GetType(Double),"[一月]+[二月]+[三月]+[四月]+[五月]+[六月]+[七月]+[八月]+[九月]+[十月]+[十一月]+[十二月]")
Tables(e.form.Name & "_Table1").AutoSizeCols


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


加好友 发短信 一级勋章
等级:狐仙 帖子:9879 积分:57634 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2013/9/17 9:19:00 [只看该作者]

啊 没人上班?

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/9/17 9:23:00 [只看该作者]

没有什么改动可以有质的飞跃,而且没有得测试,也无法得知效果.

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


加好友 发短信 一级勋章
等级:狐仙 帖子:9879 积分:57634 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2013/9/17 9:27:00 [只看该作者]

   bin 你的意思是小改动可以有质的飞跃,还是?    我知道是没法测试. 我只是说针对这个代码,如果能优化,你改一下 我来测试下,人后给你结果.

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


加好友 发短信
等级:七尾狐 帖子:1732 积分:11266 威望:0 精华:0 注册:2011/12/15 22:06:00
  发帖心情 Post By:2013/9/17 9:29:00 [只看该作者]

没有测试数据很难判断那句有问题(最好有足够多的数据),还有你应该告知你统计用了多少时间。

从编码的原则来说,只要达到效果,时间越短越好,不管用了什么方法。


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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/9/17 9:30:00 [只看该作者]

我的意思是看起来没有什么改动可以有质的飞跃.

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


加好友 发短信 一级勋章
等级:狐仙 帖子:9879 积分:57634 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2013/9/17 9:39:00 [只看该作者]

    哦,那我明白了.因为万一有人觉得速度慢,我首先考虑是不是我的代码出问题了,如果不是,那我就可以明确告诉客人不是代码的问题,有可能是数据量的问题.

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/9/17 9:44:00 [只看该作者]

嗯,如果想提速,只能换个方式做了.  这种方式代码看起来已经没什么改动能带来质的飞跃了.

不过,还是坐等高手看看.

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


加好友 发短信 一级勋章
等级:狐仙 帖子:9879 积分:57634 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2013/9/17 9:49:00 [只看该作者]

bin  我的意思就是,想这个代码,如果在速度上有提升的话,代码怎么写  你能否写一个我参考下!  

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/9/17 9:50:00 [只看该作者]

没有

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