以文本方式查看主题

-  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 Names As New List(Of String)

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