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


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

主题:代码效率

美女呀,离线,留言给我吧!
朱女士
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:445 积分:3633 威望:0 精华:0 注册:2020/2/8 11:14:00
代码效率  发帖心情 Post By:2023/5/18 16:25:00 [只看该作者]

老师您好!
 我这段代码运行速度慢,不知道怎么提高效率,运行需要3分钟。谢谢指教!
代码意思是:从ddpsb和ddqdb中,取zzh相同,zzh_xx与right(zzh_yy,2)相同的记录,将ddpsb 发货日期取出来,再取出ddqdb的清单条码编码,一起依据清单条码编码将”发货日期“匹配到“实时工序计算表“中。代码运行每问题就是慢。

dataTables("ddpsb").LoadFilter = "发货日期 is not null"
DataTables("ddpsb").load

Dim dtb1 As New DataTableBuilder("临时表")
dtb1.AddDef("清单条码编码", GetType(String), 60)
dtb1.AddDef("发货日期", GetType(Date))

dtb1.Build()
Dim zh1, zh2 As String
'Dim srs1 As List(Of DataRow)

For Each dr1 As DataRow In DataTables("ddpsb").DataRows
    zh1 = dr1("zzh")
    zh2 = dr1("zzh_xx")
    For Each dr2 As DataRow In DataTables("ddqdb").Select("zzh='" & zh1 & "'") '找到符合条件的所有记录
        Dim s As String = dr2("zzh_yy")
        Dim syy As String = Right(s, 2)
        If dr1.IsNull("zzh_xx") = False And syy = zh2 Then 
            Dim dr3 As DataRow = DataTables("临时表").AddNew()
            
            If dr2.IsNull("清单条码编码") = False Then
                dr3("清单条码编码") = dr2("清单条码编码")
                dr3("发货日期") = dr1("发货日期")
            End If 
        Else If dr1.IsNull("zzh_xx") = True Then
            Dim dr4 As DataRow = DataTables("临时表").AddNew()
            
            If dr2.IsNull("清单条码编码") = False Then
                dr4("清单条码编码") = dr2("清单条码编码")
                dr4("发货日期") = dr1("发货日期")
            End If
        End If
        
    Next
Next 
''Dim qds As New List(Of String)
DataTables("临时表").DeleteFor("发货日期 is null or 清单条码编码 is null")
Dim Arys As List(Of String()) 
Arys = DataTables("临时表").GetValues("清单条码编码|发货日期") '列名用符号|分割

For Each Ary As String() In Arys
    Dim drs As List(Of DataRow) = DataTables("实时工序计算表").Select("清单条码编码='" & Ary(0) & "'")
    For Each dr8 As DataRow In drs
        dr8("发货日期") = Ary(1)
    Next 
Next

 回到顶部