以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 再请教下代码 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=164249) |
-- 作者:wangglby -- 发布时间: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行,则不用处理。
辛苦 |
-- 作者:有点酸 -- 发布时间: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 -- 发布时间:2021/5/1 11:21:00 -- 谢谢 假期也不休 辛苦了 |
-- 作者:wangglby -- 发布时间:2021/5/1 14:16:00 -- 在外面 还没测试,初看代码 i 好像没用到 |
-- 作者:hongsejiyi -- 发布时间: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 -- 发布时间:2021/5/1 22:21:00 -- 谢谢 |