Foxtable(狐表)用户栏目专家坐堂 → 如何将某个表的所有行数据,全部按照字段列顺序,逐行拼接成一个整体内容呢?


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

主题:如何将某个表的所有行数据,全部按照字段列顺序,逐行拼接成一个整体内容呢?

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
如何将某个表的所有行数据,全部按照字段列顺序,逐行拼接成一个整体内容呢?  发帖心情 Post By:2022/1/10 18:31:00 [显示全部帖子]

如何将某个表的所有行数据,全部按照字段列顺序,逐行拼接成一个整体内容呢?
当前《人员表》有如下五个字段,怎么实现按照这个五个字段的顺序拼接后,再将当前表中所有行数据进行拼接,形成一个整体的字符呢?

图片点击可在新窗口打开查看

如:第一行  张三   身份证   52725   QQ号   女生
      第二行  李四   户口簿   62272   微信号   男生
       第三行  不祥   不祥  不祥        
……
拼接成  张三 ,身份证,52725,QQ号,女生;李四,户口簿,62272,微信号,男生;不祥,不祥,【注意为空的不显示值和,号】

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
  发帖心情 Post By: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

图片点击可在新窗口打开查看

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
  发帖心情 Post By: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编辑过]

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)        Dim s ...  发帖心情 Post By:2022/1/10 20:23:00 [显示全部帖子]

图片点击可在新窗口打开查看
老师  输出得到的和楼上的代码一样   没有连成一个完整的字符串  而是根据行数  生成了对应的三行  
想实现不管有多少行,都组合成一行字符串,且在现有三行数据的每一行前面加上一个序号,1、……2、……3、……

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(liufucan)试试这个Dim Names As New List(Of...  发帖心情 Post By:2022/1/10 20:27:00 [显示全部帖子]

老师好   运行如图:
图片点击可在新窗口打开查看
有没有办法取消红色圈的部分的断行操作呢?直接将所有的结果都输入为一个完整的字符串 不需要中途换行

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)6楼代码去掉s = s & vbcrlf  发帖心情 Post By:2022/1/10 20:58:00 [显示全部帖子]

老师因要实现指定字段值的组合  所以当前代码实现如下:
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
Dim zs1 As Integer = Tables("报告明细").Count
For i As Integer=1 To zs1
s1 = String.Join(",",Ary)
s1 = i & ";" & s1
s1 =  s1 & ";"
output.show(s1)
Next
Next

输出:

1;QNWAEJS2201100001,不祥,不祥,不祥,,;
2;QNWAEJS2201100001,不祥,不祥,不祥,,;
3;QNWAEJS2201100001,不祥,不祥,不祥,,;
1;QNWAEJS2201100002,,,,,;
2;QNWAEJS2201100002,,,,,;
3;QNWAEJS2201100002,,,,,;
1;QNWAEJS2201100003,,,,,;
2;QNWAEJS2201100003,,,,,;
3;QNWAEJS2201100003,,,,,;


有没有办法输出为:
1;QNWAEJS2201100001,不祥,不祥,不祥;2;QNWAEJS2201100002;3;QNWAEJS2201100003;

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(liufucan)Dim Names As New List(Of object)...  发帖心情 Post By:2022/1/10 21:02:00 [显示全部帖子]

灰常感谢耐心指导  当前代码运行输出如下:   有没有办法再加上行呢?

Dim Names As New List(Of object)
Dim Names2 As New List(Of object)
For Each r As Row In Tables("报告明细")
    Names.clear
    For Each r1 As Col In Tables("报告明细").Cols
        If  r.isnull(r1.DataCol.Name)=False  Then
            Names.add(r1.DataCol.Name & ":" &r(r1.DataCol.Name))
        End If'
    Next
    Names2.add(String.join(",",Names.toarray))
Next
output.show(String.join(";",Names2.toarray))

输出:
编号:QNWAEJS2201100001,对象姓名:不祥,证件种类:不祥,证件号码:不祥,手动查询:False,自动监控:False,证件种类与号码:不祥,卷宗编号:QNWA20220001;编号:QNWAEJS2201100002,手动查询:False,自动监控:False,卷宗编号:QNWA20220001;编号:QNWAEJS2201100003,手动查询:False,自动监控:False,卷宗编号:QNWA20220001


理想输出:
1、编号:QNWAEJS2201100001,对象姓名:不祥,证件种类:不祥,证件号码:不祥,手动查询:False,自动监控:False,证件种类与号码:不祥,卷宗编号:QNWA20220001;2、编号:QNWAEJS2201100002,手动查询:False,自动监控:False,卷宗编号:QNWA20220001;3、编号:QNWAEJS2201100003,手动查询:False,自动监控:False,卷宗编号:QNWA20220001

 Dim zs1 As Integer = Tables("报告明细").Count
    For i As Integer=1 To zs1
……
    Next
这个部分怎么融合进去呢?

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(liufucan)r.index  发帖心情 Post By:2022/1/10 21:14:00 [显示全部帖子]

谢谢你的耐心指导:

Dim Names As New List(Of object)
Dim Names2 As New List(Of object)
For Each r As Row In Tables("报告明细") 
    Names.clear
    For Each r1 As Col In Tables("报告明细").Cols
        If  r.isnull(r1.DataCol.Name)=False  Then
            Names.add( r1.DataCol.Name & ":" &r(r1.DataCol.Name))
        End If
    Next
    Names2.add(r.index+1 & "." & String.join(",",Names.toarray))
Next
output.show(String.join(";",Names2.toarray))

当前输出:
1.编号:QNWAEJS2201100001,对象姓名:不祥,证件种类:不祥,证件号码:不祥,手动查询:False,自动监控:False,证件种类与号码:不祥,卷宗编号:QNWA20220001;2.编号:QNWAEJS2201100002,手动查询:False,自动监控:False,卷宗编号:QNWA20220001;3.编号:QNWAEJS2201100003,手动查询:False,自动监控:False,卷宗编号:QNWA20220001

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(liufucan)r.index  发帖心情 Post By:2022/1/10 21:26:00 [显示全部帖子]

Dim Names As New List(Of object)
Dim Names2 As New List(Of object)
For Each r As Row In Tables("报告明细")
    Names.clear
    For Each r1 As Col In Tables("报告明细").Cols
         
            If r1.DataCol.Name="对象姓名" Or r1.DataCol.Name="证件种类" Then
                If  r.isnull(r1.DataCol.Name)=False  Then
                    Names.add( r1.DataCol.Name & ":" &r(r1.DataCol.Name))
                End If
            End If
         
    Next
    Names2.add("【" & r.index+1 & "】" & String.join(",",Names.toarray))
Next
output.show(String.join(";",Names2.toarray))


输出得到:
【1】对象姓名:不祥,证件种类:不祥;【2】;【3】

有没有办法实现指定的1.DataCol.Name等于对象姓名  和证件种类  且值不为空呢  输出:
【1】对象姓名:不祥,证件种类:不祥;

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)这个意思?if Names.count >...  发帖心情 Post By:2022/1/10 23:19:00 [显示全部帖子]

Dim br As String
Dim Names As New List(Of object)
Dim Names2 As New List(Of object)
For Each r As Row In Tables("报告明细")
    Names.clear
    For Each r1 As Col In Tables("报告明细").Cols
        
        If r1.DataCol.Name="对象姓名" Or r1.DataCol.Name="证件种类" Then
            If  r.isnull(r1.DataCol.Name)=False  Then
                Names.add( r1.DataCol.Name & ":" &r(r1.DataCol.Name))
            End If
        End If
        
    Next
    If Names.count > 0
        Names2.add("【" & r.index+1 & "】" & String.join(",",Names.toarray))
    End If
Next
output.show(String.join(";",Names2.toarray))




输出:
【1】对象姓名:不祥,证件种类:不祥



是的谢谢老师    就是想实现r1.DataCol.Name="对象姓名" Or r1.DataCol.Name="证件种类  时 且他们不为空时  的有效数据输出  序号+内容

 回到顶部
总数 11 1 2 下一页