以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  关于复选框合计  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=177592)

--  作者:hongye
--  发布时间:2022/5/27 16:27:00
--  关于复选框合计

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


当选择窗口中表的复选框,选中后按按钮后需要按第一列和第二列统计后填入表D

比如
当选择第一行和第二行数据然后按Button1后
窗口表的数据
ZWY0291  001   180   320  True  2      22.2  85
ZWY0291  001   180   320  True  5      54.2  155

复制到表D后
  第一列    第三列     第四列        第五列
ZWY0291  001     180- 320      76.4

请问这个代码怎么写


[此贴子已经被作者于2022/5/27 16:28:57编辑过]

--  作者:狐狸爸爸
--  发布时间:2022/5/27 17:57:00
--  
获取勾选的行:


复制数据:

组合一下:


Dim nma() As String = {"A1", "A2", "A3", "A4"} \'A表数据来源列
Dim nmb() As String = {"B1", "B2", "B3", "B4"} \'B表数据接收列
For Each r1 As Row In Tables("表A").GetCheckedRows
    Dim r2 As DataRow = DataTables("表B").AddNew
    For i As Integer = 0 To nma.Length - 1
        r2(nmb(i)) = r1(nma(i))
    Next
Next 


--  作者:hongye
--  发布时间:2022/5/27 18:27:00
--  
不是这个意思

窗口表的数据
ZWY0291  001   180   320  True  2      22.2  85
ZWY0291  001   180   320  True  5      54.2  155

复制到表D后
  第一列    第三列     第四列        第五列
ZWY0291  001     180- 320      76.4
我的意思是如何将这窗口表的数据通过相同的内容条件合并成一条内容内容写入到表D

[此贴子已经被作者于2022/5/27 18:40:42编辑过]

--  作者:有点蓝
--  发布时间:2022/5/28 8:58:00
--  
建议增加一个临时的逻辑列进行勾选,这样就可以直接进行分组统计了。不然要逐行遍历处理,麻烦

if dataTables("窗口1_table1").datacols.contains("a") = false
dataTables("窗口1_table1").datacols.add("a",gettype(boolean))
Tables("窗口1_table1").cols("a").visible=false
end if

For Each r1 As Row In Tables("窗口1_table1").GetCheckedRows
    r1("a") = true
Next 
Dim b As New GroupTableBuilder("统计表1",DataTables("窗口1_table1"))
    第三列     第四列        第五列
b
.Groups.AddDef("第一列")
b.Groups.AddDef("第二列")
b.Groups.AddDef("")
b.Groups.AddDef("")
b
.Totals.AddDef("第八列")
dim dt as datatable = b
.BuilddDataSource \'生成统计表
for each 
r1 as datarow in dt.datarows
    Dim r2 As DataRow = DataTables("表B").AddNew
    r2("第一列") = r1("第一列")
r2("第二列") = r1("第二列")
r2("第四列") = r1("第四列") & “-” & r1("第五列")
r2("第五列") = r1("第八列")
Next 

--  作者:hongye
--  发布时间:2022/5/28 9:54:00
--  
dim dt as datatable = b.BuilddDataSource \'生成统计表

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


--  作者:有点蓝
--  发布时间:2022/5/28 10:17:00
--  
4楼代码不可能有这种提示。如果是其它代码直接贴出完整代码,不要遮遮掩掩的
--  作者:hongye
--  发布时间:2022/5/28 10:56:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:读写ini_例子.table


代码贴不上去,还是出来错误

--  作者:有点蓝
--  发布时间:2022/5/28 11:18:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:读写ini_例子.zip


--  作者:hongye
--  发布时间:2022/5/28 11:50:00
--  
If Tables("窗口2_table1").DataTable.datacols.contains("a") = False Then
    Tables("窗口2_table1").DataTable.datacols.add("a", GetType(Boolean))
    Tables("窗口2_table1").cols("a").visible = False
End If

For Each r1 As Row In Tables("窗口2_table1").GetCheckedRows
    r1("a") = True
Next 
Dim b As New GroupTableBuilder("统计表1", Tables("窗口2_table1").DataTable )
b.Groups.AddDef("第一")
b.Groups.AddDef("第二")
b.Groups.AddDef("第四")
b.Groups.AddDef("第五")
b.Totals.AddDef("第八")
b.Filter = "a=true"
Dim dt As DataTable = b.Build(True) \'生成统计表
For Each r1 As DataRow In dt.datarows
    Dim r2 As DataRow = DataTables("表D").AddNew
    r2("第三列") = r1("第一")
    r2("第四列") = r1("第二")
    r2("第五列") = r1("第四")
    r2("第六列") = r1("第五")
    r2("第七列") = r1("第八")
Next

第一次没出问题
第二次筛选有问题,不是按照勾选的统计

--  作者:有点蓝
--  发布时间:2022/5/28 11:55:00
--  
If Tables("窗口2_table1").DataTable.datacols.contains("a") = False Then
    Tables("窗口2_table1").DataTable.datacols.add("a", GetType(Boolean))
    Tables("窗口2_table1").cols("a").visible = False
End If
Tables("窗口2_table1").DataTable.replacefor("a",false)
For Each r1 As Row In Tables("窗口2_table1").GetCheckedRows
    r1("a") = True
Next