以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]专业报表中的关联行问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=95413)

--  作者:viking
--  发布时间:2017/1/18 23:57:00
--  [求助]专业报表中的关联行问题

Dim rx As prt.RenderText

Dim rt As prt.RenderTable

Dim Rows As List(Of DataRow)

Dim tbl As new List(of DataRow)

tbl = DataTables("日记账").SQLSelect("[公司编码] = \'" & _UserGsbm & "\'and [日期] = \'" & pzrq.Value & "\'")


For i As Integer = 0 To tbl.Count - 1

    rx = New prt.RenderText

    rx.Style.FontSize = 12

    rx.Style.FontBold = True

    rx.Style.Spacing.Bottom = 5

    rx.Text = "流水编号: " & tbl(i)("流水编号") & "日期:" & tbl(i)("日期") & "收入:" & tbl(i)("收入") & "支出:" & tbl(i)("支出") & "流水状态:" & tbl(i)("流水状态") & "记账人:" & tbl(i)("记账_负责") & "记账日期:" & tbl(i)("记账_日期")

    doc.Body.Children.Add(rx)

    

    rt = New prt.RenderTable

    rt.Style.TextAlignHorz = prt.AlignHorzEnum.Center

    rt.Style.TextAlignVert = prt.AlignVertEnum.Center

    rt.Style.Borders.Bottom = New prt.LineDef(0.3,Color.LightGray)

    rt.CellStyle.Spacing.All = 1

    rt.Cols.Count = 4

    rt.Cells(0,0).Text = "明细编号"

    rt.Cells(0,1).Text = "摘要日期"

    rt.Cells(0,2).Text = "摘要对象"

    rt.Cells(0,3).Text = "摘要事件"

    rt.Cells(0,4).Text = "收支方式"

    rt.Cells(0,5).Text = "凭证编号"

    rt.Cells(0,6).Text = "收入"

    rt.Cells(0,7).Text = "支出"

    rt.Cells(0,8).Text = "订单编号"

    rt.rows(0).Style.Borders.Top = New prt.LineDef(1,Color.LightGray)

    rt.rows(0).Style.Borders.Bottom = New prt.LineDef(1,Color.LightGray)

    

    Rows = tbl(i).GetChildRows("明细账")

    For r As Integer = 0 To Rows.Count - 1

        rt.Cells(r+1,0).Text = rows(r)("明细编号")

        rt.Cells(r+1,1).Text = rows(r)("摘要日期")

        rt.Cells(r+1,2).Text = rows(r)("摘要对象")

        rt.Cells(r+1,3).Text = rows(r)("摘要事件")

        rt.Cells(r+1,4).Text = rows(r)("收支方式")

        rt.Cells(r+1,5).Text = rows(r)("凭证编号")

        rt.Cells(r+1,6).Text = rows(r)("收入")

        rt.Cells(r+1,7).Text = rows(r)("支出")

        rt.Cells(r+1,8).Text = rows(r)("订单编号")

    Next

    doc.Body.Children.Add(rt)

    rx = New prt.RenderText

    rx.Style.FontBold = True

    rx.Style.Spacing.Top = 3

    rx.Text = "笔数: " & Rows.Count

    rx.Style.TextAlignHorz = prt.AlignHorzEnum.Right

    doc.Body.Children.Add(rx)

Next


想问下,这个求 关联表子表的怎么写?


--  作者:有点色
--  发布时间:2017/1/19 0:43:00
--  

现在有什么问题?红色的,改成你子表的表名。

 

Rows = tbl(i).GetChildRows("明细账")


--  作者:viking
--  发布时间:2017/1/19 10:46:00
--  
这个就是我改完的,报表中子表没有数据
--  作者:有点色
--  发布时间:2017/1/19 10:58:00
--  

加入代码 msgbox(rows.Count)

 

如果弹出的是0,说明,并没有找到对应的子表的内容,你数据匹配有问题。

 

如果还有问题,做个实例上来测试。


--  作者:viking
--  发布时间:2017/1/19 23:00:00
--  
就是找不到子表数据,数据匹配问题总那里能检查下

不是代码写得不对?
[此贴子已经被作者于2017/1/19 23:21:18编辑过]

--  作者:viking
--  发布时间:2017/1/19 23:23:00
--  
是代码问题,不会写!!!
tbl 是 集合
 rows 也是集合
怎么写呢?

--  作者:有点色
--  发布时间:2017/1/20 0:28:00
--  

试试改成这样

 

Rows = DataTables("明细账").Select("第一列 = \'" & tbl(i)("第一列") & "\' And 第二列 = \'" & tbl(i)("第二列") & "\'")

 


--  作者:有点蓝
--  发布时间:2017/1/20 9:10:00
--  
关联子表的数据是不是没有加载出来?
--  作者:viking
--  发布时间:2017/1/22 20:51:00
--  
是的,没有加载,就是红色这行的问题


--  作者:有点色
--  发布时间:2017/1/22 23:00:00
--  

方法一:先把数据加载出来;

 

方法二: 用7楼的方法,直接sqlSelect查数据。