以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 如何将某个表的所有行数据,全部按照字段列顺序,逐行拼接成一个整体内容呢? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=174312) |
-- 作者:cnsjroom -- 发布时间:2022/1/10 18:31:00 -- 如何将某个表的所有行数据,全部按照字段列顺序,逐行拼接成一个整体内容呢? 如何将某个表的所有行数据,全部按照字段列顺序,逐行拼接成一个整体内容呢? 当前《人员表》有如下五个字段,怎么实现按照这个五个字段的顺序拼接后,再将当前表中所有行数据进行拼接,形成一个整体的字符呢? 如:第一行 张三 身份证 52725 QQ号 女生 第二行 李四 户口簿 62272 微信号 男生 第三行 不祥 不祥 不祥 …… 拼接成 张三 ,身份证,52725,QQ号,女生;李四,户口簿,62272,微信号,男生;不祥,不祥,【注意为空的不显示值和,号】
|
-- 作者:程兴刚 -- 发布时间:2022/1/10 18:36:00 -- 遍历所有行! |
-- 作者:cnsjroom -- 发布时间:2022/1/10 18:56:00 -- 根据程老师的提示 通过如下操作实现了遍历所有的行 所有的列名下值 但是拼接没有达到预期目标,请教各位老师! 怎么按照一楼的方式进行拼接呢?与输出呢? For Each r As Row In Tables("报告明细") For Each r1 As Col In Tables("报告明细").Cols Dim s As String \'output.show(r(r1.DataCol.Name)) s = r(r1.DataCol.Name) s= s & "," & s output.show(s) Next Next |
-- 作者:liufucan -- 发布时间:2022/1/10 19:15:00 -- 用集合,转为数组后用join http://www.foxtable.com/webhelp/topics/1423.htm
|
-- 作者:cnsjroom -- 发布时间:2022/1/10 19:54:00 -- 根据楼上的提示 当前代码如下: Dim s As String ="" \'定义数组集合的时候,要在类型后加上括号,表示这是一个数组集合. Dim Arys As List(Of String()) Arys = DataTables("报告明细").GetUniqueValues("", "对象姓名","证件种类","证件号码","目标或特定信息","备注") \'注意循环变量是字符型数组,所以类型是String(),而不是String For Each Ary As String() In Arys \'Output.Show(Ary(0) & "," & Ary(1) & "," & Ary(2) & "," & Ary(3) & "," & Ary(4) ) s=Ary(0) & "," & Ary(1) & "," & Ary(2) & "," & Ary(3) & "," & Ary(4) s &= ";" output.show(s) Next 运行提示图: 怎么实现判断空值的话 直接不显示,如输出结果就直接显示为不祥,不祥,不祥;就完成了 因为数据是两行 那是否可以 怎么显示对应的行数序号呢? 如:1,,,,;2,不祥,不祥,不祥; 效果2: 代码: Dim s As String ="" Dim s1 As String ="" \'定义数组集合的时候,要在类型后加上括号,表示这是一个数组集合. Dim Arys As List(Of String()) \'Arys = DataTables("报告明细").GetUniqueValues("编号=\'" & vars("编号") & "\'", "对象姓名","证件种类","证件号码","目标或特定信息","备注") Arys = DataTables("报告明细").GetUniqueValues("", "对象姓名","证件种类","证件号码","目标或特定信息","备注") \'注意循环变量是字符型数组,所以类型是String(),而不是String For Each Ary As String() In Arys s1 = String.Join(",", Ary) s1 = s1 & ";" output.show(s1) Next 运行结果如图:得到的结果是一样的 [此贴子已经被作者于2022/1/10 20:06:03编辑过]
|
-- 作者:有点蓝 -- 发布时间:2022/1/10 20:10:00 -- Dim s As String For Each r As Row In Tables("报告明细").rows s = s & vbcrlf For Each r1 As Col In Tables("报告明细").Cols s= s & "," & r(r1.DataCol.Name) Next Next output.show(s) |
-- 作者:liufucan -- 发布时间:2022/1/10 20:11:00 -- Dim Names2 As New List(Of String) For Each r As Row In Tables("报告明细") Names.clear For Each r1 As Col In Tables("报告明细").Cols Dim s As String s = r(r1.DataCol.Name) if s<>"" then Names.add(s) end if Next Names2.add(string.join(",",Names.toarray)) Next msgbox(string.join(";",Names2.toarray)) [此贴子已经被作者于2022/1/10 20:11:46编辑过]
|
-- 作者:cnsjroom -- 发布时间:2022/1/10 20:23:00 -- 回复:(有点蓝) Dim s ... 老师 输出得到的和楼上的代码一样 没有连成一个完整的字符串 而是根据行数 生成了对应的三行 想实现不管有多少行,都组合成一行字符串,且在现有三行数据的每一行前面加上一个序号,1、……2、……3、……
|
-- 作者:cnsjroom -- 发布时间:2022/1/10 20:27:00 -- 回复:(liufucan)试试这个Dim Names As New List(Of... 老师好 运行如图: 有没有办法取消红色圈的部分的断行操作呢?直接将所有的结果都输入为一个完整的字符串 不需要中途换行
|
-- 作者:有点蓝 -- 发布时间:2022/1/10 20:42:00 -- 6楼代码去掉s = s & vbcrlf |