以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 代码效率 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=186668) |
-- 作者:朱女士 -- 发布时间: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 |
-- 作者:有点蓝 -- 发布时间:2023/5/18 16:33:00 -- 实时工序计算表、ddpsb和ddqdb不在同一个数据库? [此贴子已经被作者于2023/5/18 16:34:24编辑过]
|
-- 作者:朱女士 -- 发布时间:2023/5/18 16:41:00 -- ddpsb和ddqdb数据源“沃德”,“实时工序计算表”的数据源是“车间数据”。 |
-- 作者:有点蓝 -- 发布时间: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提取数据在填充到"实时工序计算表"
|
-- 作者:朱女士 -- 发布时间: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数据库 |
-- 作者:有点蓝 -- 发布时间:2023/5/19 10:05:00 -- 2个关联的表必须在同一个数据源。不同的数据源只能是1楼的用法,没有什么优化的余地了 |