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


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

主题:代码效率

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


加好友 发短信
等级:二尾狐 帖子:513 积分:4073 威望: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

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


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/5/18 16:33:00 [只看该作者]

实时工序计算表、ddpsb和ddqdb不在同一个数据库?
[此贴子已经被作者于2023/5/18 16:34:24编辑过]

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


加好友 发短信
等级:二尾狐 帖子:513 积分:4073 威望:0 精华:0 注册:2020/2/8 11:14:00
  发帖心情 Post By:2023/5/18 16:41:00 [只看该作者]

ddpsb和ddqdb数据源“沃德”,“实时工序计算表”的数据源是“车间数据”。

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


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/5/18 17:13:00 [只看该作者]

直接使用sql关联取数据:http://www.foxtable.com/webhelp/topics/0696.htm

sql语句大概:
select a.清单条码编码,b.发货日期 from ddqdb as a inner join ddpsb as b on a.zzh=b.zzh  where right(a.zzh_yy,2) = b.zzh_xx and a.发货日期 is not null

使用SQLcommand提取数据在填充到"实时工序计算表"

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


加好友 发短信
等级:二尾狐 帖子:513 积分:4073 威望:0 精华:0 注册:2020/2/8 11:14:00
  发帖心情 Post By:2023/5/19 10:00:00 [只看该作者]

老师:还是这段代码,right不出错了,数据表又出错了。是不是两个数据源的定义问题?
图片点击可在新窗口打开查看此主题相关图片如下:图3.png
图片点击可在新窗口打开查看
ddpsb和ddqdb数据源“沃德”,“实时工序计算表”的数据源是“车间数据”。我的系统在“车间数据”数据源里,调用的是“沃德”数据源的“ddqdb和ddpsb数据,两个数据源怎么定义和运用?
 S elect a.清单条码编码,b.发货日期 From ddqdb as a inner J oin ddpsb as b On a.zzh = b.zzh Where right(a.zzh_yy,2) =b.zzh_xx And a.发货日期 Is Not null

都是access数据库

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


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/5/19 10:05:00 [只看该作者]

2个关联的表必须在同一个数据源。不同的数据源只能是1楼的用法,没有什么优化的余地了

 回到顶部