以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  求助:怎样把动态多行数据合并成一行  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=178828)

--  作者:cxmxjwlmq
--  发布时间:2022/7/22 18:58:00
--  求助:怎样把动态多行数据合并成一行

各位老师:我用一个临时统计表统计出来的数据,想把动态增加(第一次查询不一样)的多列数据合并成一列,如下图:

 


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

 

我想达到的效果是:把购货单位这一列,替换成:购货单位后面、合计前面的多列数据组合,不包括空值。

   第一行:购货单位的内容是:6加单位列,即:6Kg

   第二列:                                               1Kg + 1Kg

   。。。。

 

我用的代码如下:

 

Dim b As New CrossTableBuilder("统计表1",DataTables("出库单明细"))
    b.HGroups.AddDef("名称")
    b.HGroups.AddDef("品牌")
    b.HGroups.AddDef("规格")
    b.HGroups.AddDef("单位")
    b.HGroups.AddDef("购货单位")
    b.VGroups.AddDef("档口名称")
    b.Totals.AddDef("数量")
    b.Filter = "[出库日期] = \'" & e.Form.Controls("DateTimePicker1").Text & "\' And 补货 = true"
    b.HorizontalTotal =  True
    b.VerticalTotal =  True
    b.Build()

With Tables("统计表1")
    .Position = 0     \'下移一行
End With

Dim n As Integer = Tables("统计表1").Rows.Count
    \'Dim r1  = Tables("统计表1").Current
For n2 As Integer = 1 To n    \'打印4份
    Dim r1  = Tables("统计表1").Current

r1("购货单位") = r1(" ") \'这句该怎样引用动态生成的列
      With Tables("统计表1")
         If  .Position = .Rows.Count - 1   \'如果是未行
         Else
            .Position = .Position + 1     \'下移一行
         End If
      End With
Next

 

标红的这句代码该怎么写,请各位老师指点!

谢谢!


 


--  作者:有点蓝
--  发布时间:2022/7/23 8:43:00
--  

For n2 As Integer = 0 To n-1    \'打印4份

    Dim r1 as row   = Tables("统计表1").rows(n2)

dim s as string

for each c as col in Tables("统计表1").cols
if c.name like "
档口名称_*"

s = s & "+" & r1(c.name)  & r1("单位")

endif

r1("购货单位") = s.trim("+")
Next


--  作者:cxmxjwlmq
--  发布时间:2022/7/23 9:53:00
--  

谢谢!

 

    这句代码:if c.name like "档口名称_*"  提示:未将对象引用设置到对象的实例。

 

还得请老师费心!


--  作者:有点蓝
--  发布时间:2022/7/23 9:57:00
--  
这句代码不可能有问题。检查其它代码
--  作者:有点蓝
--  发布时间:2022/7/23 9:58:00
--  
打开统计表表结构,看看列名都是什么:http://www.foxtable.com/webhelp/topics/0193.htm
--  作者:cxmxjwlmq
--  发布时间:2022/7/23 11:03:00
--  

蓝老师:打开表结构,如下图:提示是数量_

 


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

 

改成: 数量_*后的全部代码如下:

 

Dim b As New CrossTableBuilder("统计表1",DataTables("出库单明细"))
    b.HGroups.AddDef("名称")
    b.HGroups.AddDef("品牌")
    b.HGroups.AddDef("规格")
    b.HGroups.AddDef("单位")
    b.HGroups.AddDef("购货单位")
    b.VGroups.AddDef("档口名称")
    b.Totals.AddDef("数量")
    b.Filter = "[出库日期] = \'" & e.Form.Controls("DateTimePicker1").Text & "\' And 补货 = true"
    b.HorizontalTotal =  True
    b.VerticalTotal =  True
    b.Build()
With Tables("统计表1")
    .Position = 0     \'下移一行
End With
Dim n As Integer = Tables("统计表1").Rows.Count
For n2 As Integer = 0 To n-1    \'打印4份
    Dim r1 As Row   = Tables("统计表1").rows(n2)
    Dim s As String
   For Each c As Col In Tables("统计表1").cols
\'If c.name Like "档口名称_*"
      If c.name Like "数量_*"
         s = s & "+" & r1(c.name)  & r1("单位")
      End If
      r1("购货单位") = s.trim("+")
   Next
Next

 

运行后提示:

 


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

 

麻烦老师给指点指点!

谢谢!


 


--  作者:有点蓝
--  发布时间:2022/7/23 11:23:00
--  
调试看哪一句代码出错:http://www.foxtable.com/webhelp/topics/1485.htm

Dim s As String = “”

--  作者:cxmxjwlmq
--  发布时间:2022/7/23 11:58:00
--  

老师,把s= “”后,可以执行,结果如下图

 


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

 

但是这个结果,感觉是空值的也加上了

 

离我想要的效果还差一步!

 

 第一行:购货单位的内容是:6加单位列,即:6Kg

 第二列:                                             1Kg + 1Kg

   。。。。

老师,费心!


--  作者:有点蓝
--  发布时间:2022/7/23 11:59:00
--  
帮助搜索“空值”,学习一下怎么判断空值
--  作者:cxmxjwlmq
--  发布时间:2022/7/23 16:31:00
--  

谢谢蓝老师!