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


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

主题:代码优化

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


加好友 发短信
等级:狐神 帖子:5055 积分:13047 威望:0 精华:0 注册:2014/5/15 21:34:00
代码优化  发帖心情 Post By:2018/11/10 9:40:00 [显示全部帖子]

大师:下面的代码如何优化


Dim t1 As DataTable = DataTables("Sheet3")
Dim pzh As new List(of String)
pzh = t1.GetValues("凭证号","对方科目 is null")
Dim Dic As new Dictionary(of String,Double)
Dim dfhj As Double
Dim Dicrow As new Dictionary(of String,List(of DataRow))
Dim Dicrow1 As new Dictionary(of String,List(of DataRow))
For Each pz As String In pzh
    
    dfhj = t1.Compute("sum(贷方)","凭证号 = '" & pz & "'")
    dic.Add(pz,dfhj)
    Dim jh1 As new List(of DataRow)
    Dim jh2 As new List(of DataRow)
    jh1 = t1.Select("借方 is not null" & " and 借方 <> 0 " & " And 凭证号 = '" & pz & "'","_sortkey")
    jh2 = t1.Select("贷方 is not null" & " and 贷方 <> 0 " & " And 凭证号 = '" & pz & "'","_sortkey")
    Dicrow.Add(pz,jh1)
    Dicrow1.Add(pz,jh2)
    
Next


For Each pz As String In pzh
        
    Dim hj As Double
    hj = dic(pz)
    For Each a As DataRow In Dicrow(pz)
        a("凭证号") = pz & "拆"
        For Each b As DataRow In Dicrow1(pz)
            
            Dim tr As DataRow = t1.AddNew()
            tr("一级科目名称") = a("一级科目名称")
            tr("借方") = a("借方") * b("贷方")/hj
            tr("对方科目") = b("一级科目名称")
            tr("凭证号") = pz
            b("凭证号") = pz & "拆"
            
        Next
        
    Next
    
    
Next


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


加好友 发短信
等级:狐神 帖子:5055 积分:13047 威望:0 精华:0 注册:2014/5/15 21:34:00
  发帖心情 Post By:2018/11/10 11:51:00 [显示全部帖子]

谢谢!1000多行数据,为何还要1秒多,如果10万行数据,那还了得?

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


加好友 发短信
等级:狐神 帖子:5055 积分:13047 威望:0 精华:0 注册:2014/5/15 21:34:00
  发帖心情 Post By:2018/11/10 11:52:00 [显示全部帖子]

上面只有0.2秒,下面为什么耗时?

 回到顶部