以文本方式查看主题 - Foxtable(狐表) (http://www.foxtable.com/bbs/index.asp) -- 专家坐堂 (http://www.foxtable.com/bbs/list.asp?boardid=2) ---- 跨表更新数据 (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=153066) |
-- 作者:朱女士 -- 发布时间:2020/7/30 10:56:00 -- 跨表更新数据 老师您好! 我现有两个表:ddpsb和ddqdb。我想按照zzh查找 ddpsb表中的净重为空的行,然后计算相同zzh的ddqdb的净重的单台平均数,然后按照zzh和zzh_xx依次回填到ddpsb中,我写的代码只回填了一个zzh号的以后的不回填了。请帮查看一下,谢谢! 代码:Dim zh1 As String \'ddqdb的zzh Dim zh2 As String \'ddpsb的zzh Dim zl As Double Dim je As Double Dim bje As Double Dim ts As Integer Dim zyy As String Dim zyy1 As String Dim zyy2 As String Dim lg As Integer Dim dzl As Double Dim dje As Double Dim dbje As Double \'Dim wr As DataRow Dim count As Integer Dim wr As DataRow=DataTables("ddpsb").find("净重 is null" ) For Each dr As DataRow In DataTables("ddqdb").DataRows zh1=dr("zzh") zl = Tables("ddqdb").Compute("Sum(重量)","[zzh]=\'" & zh1 & "\'" ) je = Tables("ddqdb").Compute("Sum(含税金额)","[zzh]=\'" & zh1 & "\'" ) bje = Tables("ddqdb").Compute("Sum(不开票金额)","[zzh]=\'" & zh1 & "\'" ) dr = DataTables("ddqdb").Find("[zzh]=\'" & zh1 & "\'" ) If dr IsNot Nothing Then ts=dr("台数") dzl=zl/ts dje=je/ts dbje=bje/ts If dr.isnull("zzh_yy") = False zyy=dr("zzh_yy") If zyy.length >= 2 zyy1=zyy.SubString(0,2) End If If zyy.length >= 5 zyy2=zyy.SubString(3,2) End If End If Dim k1 As Integer Dim k2 As Integer k1=cint(zyy1) k2=cint(zyy2) Dim i As Integer Dim zys(ts) As String For i=k1 To k2 If ts<=9 zys(i)="0"+cstr(i) Else zys(i)=cstr(i) End If wr=DataTables("ddpsb").find("[zzh]=\'" & zh1 & "\'and [zzh_xx]=\'" & zys(i) & "\'") If wr("净重") Is Nothing Then wr("净重")=dzl wr("含税金额")=dje wr("不开票金额")=dbje End If Next End If Next messagebox.show("回填完毕")
|
-- 作者:有点蓝 -- 发布时间:2020/7/30 11:41:00 -- wr=DataTables("ddpsb").find("[zzh]=\'" & zh1 & "\'and [zzh_xx]=\'" & zys(i) & "\' and 净重 is null") If wr Isnot Nothing Then wr("净重")=dzl wr("含税金额")=dje wr("不开票金额")=dbje End If
|
-- 作者:朱女士 -- 发布时间:2020/7/30 13:37:00 -- 老师您好! 上述代码执行后出错:索引超出了数组界限。且我有三台zzh_xx依次是02,03,04,ddqdb的zzh_yy是02-04,就是三台,程序运行后只回填了ddpsb的02和03的净重数据。
|
-- 作者:朱女士 -- 发布时间:2020/7/30 13:42:00 -- 其他的zzh也没自动计算和回填,应该ddqdb中没有zzh_yy的视为一台,也要计算与回填,但没回填。 |
-- 作者:朱女士 -- 发布时间:2020/7/30 13:52:00 -- 一台的问题解决了,只解决“索引超出了数组界限”问题即可。 |
-- 作者:有点蓝 -- 发布时间:2020/7/30 14:12:00 -- 下面看k1,k2,ts都是干嘛用的?都是什么值? Dim k1 As Integer Dim k2 As Integer k1=cint(zyy1) k2=cint(zyy2) Dim i As Integer Dim zys(ts) As String msgbox(k1 & "," & k2 & "," & ts) For i=k1 To k2 If ts<=9 zys(i)="0"+cstr(i) Else zys(i)=cstr(i) End If |
-- 作者:朱女士 -- 发布时间:2020/7/30 14:13:00 -- 老师:我查出问题了,我的数组定义问题。谢谢! |