Foxtable(狐表)用户栏目专家坐堂 → 再请教下代码


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

主题:再请教下代码

帅哥哟,离线,有人找我吗?
wangglby
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:337 积分:3225 威望:0 精华:0 注册:2020/2/25 23:12:00
再请教下代码  发帖心情 Post By:2021/5/1 9:41:00 [只看该作者]

想实现以下功能

 

表B的编码列内容 取自表A的编码,该编码的行数取自表A编码对应的数量。

 

比如表A的编码 aaa 数量为2 ,如果表B没有编码为aaa的行,则在表B增加2行,编码为aaa,如果表B只有1行编码为aaa的行,则再增加1行,

如果表B已经有编码aaa已经有3行,则删除掉最后1行。如果表B已经有编码aaa已经有2行,则不用处理。

 

 


图片点击可在新窗口打开查看此主题相关图片如下:111.jpg
图片点击可在新窗口打开查看

 

辛苦


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


加好友 发短信
等级:五尾狐 帖子:1093 积分:6682 威望:0 精华:0 注册:2013/7/1 9:05:00
  发帖心情 Post By:2021/5/1 10:03:00 [只看该作者]

For Each dra As DataRow In DataTables("表A")
    For i As Integer = 1 To dra("数量")
       Dim drb As DataRow = DataTables("表B").AddNew
       drb("编码") = dra("编码")
    Next
Next

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


加好友 发短信
等级:小狐 帖子:337 积分:3225 威望:0 精华:0 注册:2020/2/25 23:12:00
  发帖心情 Post By:2021/5/1 11:21:00 [只看该作者]

谢谢 假期也不休 辛苦了

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


加好友 发短信
等级:小狐 帖子:337 积分:3225 威望:0 精华:0 注册:2020/2/25 23:12:00
  发帖心情 Post By:2021/5/1 14:16:00 [只看该作者]

在外面 还没测试,初看代码  i 好像没用到

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


加好友 发短信
等级:小狐 帖子:338 积分:5262 威望:0 精华:0 注册:2019/1/1 15:53:00
  发帖心情 Post By:2021/5/1 19:43:00 [只看该作者]

应用时,应该把输出的语句删除

Dim t1 As Table = Tables("表A")
Dim t2 As Table = Tables("表B")
Dim nr1,nr2 As String
Dim sl1,sl2,sl3 As Integer
For Each r As Row In t1.Rows
    nr1=r("第一列")
    nr2=r("第二列")
    If not r.IsNull("第一列") Then '不为空行的情况下进行处理
        sl1=cint(nr2)
        sl2=t2.Compute("count(第一列)","第一列='" & nr1 & "'") '计算表B中出现的次数
        If sl1>sl2 Then
            output.show(nr1 & "应该增加:" & sl1-sl2 & "条")
            For j As Integer=1 To sl1-sl2  '数量差 sl1-sl2
                Dim r2 As Row = t2.AddNew  '增加新行
                r2("第一列")=nr1   '写入数据
            Next
        ElseIf sl1<sl2 Then
            output.show(nr1 & "应该减少:" & sl2-sl1 & "条")
            For j As Integer =1 To sl2-sl1
                sl3=t2.Compute("max(_Identify)","第一列='" & nr1 & "'") '查找最大的行号,为删除最后一行做准备
                'sl3=t2.FindRow("[第一列]='" & nr1 & "'",sl2-1)
                t2.Rows(sl3-1).Delete()
            Next
        Else
            output.show(nr1 & "应该不变")
        End If
    End If
Next

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


加好友 发短信
等级:小狐 帖子:337 积分:3225 威望:0 精华:0 注册:2020/2/25 23:12:00
  发帖心情 Post By:2021/5/1 22:21:00 [只看该作者]

谢谢

 回到顶部