Foxtable(狐表)用户栏目专家坐堂 → 跨表更新数据


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

主题:跨表更新数据

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


加好友 发短信
等级:一尾狐 帖子:430 积分:3548 威望:0 精华:0 注册:2020/2/8 11:14:00
跨表更新数据  发帖心情 Post By: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(不开piao金额)","[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("不开piao金额")=dbje
      End If
    Next
  End If  
Next
messagebox.show("回填完毕")

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


加好友 发短信
等级:超级版主 帖子:106356 积分:540921 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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("不开piao金额")=dbje
      End If

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


加好友 发短信
等级:一尾狐 帖子:430 积分:3548 威望:0 精华:0 注册:2020/2/8 11:14:00
  发帖心情 Post By:2020/7/30 13:37:00 [只看该作者]

老师您好!
   上述代码执行后出错:索引超出了数组界限。且我有三台zzh_xx依次是02,03,04,ddqdb的zzh_yy是02-04,就是三台,程序运行后只回填了ddpsb的02和03的净重数据。

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


加好友 发短信
等级:一尾狐 帖子:430 积分:3548 威望:0 精华:0 注册:2020/2/8 11:14:00
  发帖心情 Post By:2020/7/30 13:42:00 [只看该作者]

其他的zzh也没自动计算和回填,应该ddqdb中没有zzh_yy的视为一台,也要计算与回填,但没回填。

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


加好友 发短信
等级:一尾狐 帖子:430 积分:3548 威望:0 精华:0 注册:2020/2/8 11:14:00
  发帖心情 Post By:2020/7/30 13:52:00 [只看该作者]

一台的问题解决了,只解决“索引超出了数组界限”问题即可。

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


加好友 发短信
等级:超级版主 帖子:106356 积分:540921 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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

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


加好友 发短信
等级:一尾狐 帖子:430 积分:3548 威望:0 精华:0 注册:2020/2/8 11:14:00
  发帖心情 Post By:2020/7/30 14:13:00 [只看该作者]

老师:我查出问题了,我的数组定义问题。谢谢!

 回到顶部