以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  专业报表中获取子表数据  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=77944)

--  作者:kaituozhe
--  发布时间:2015/11/28 14:35:00
--  专业报表中获取子表数据

我用的是access数据库,银行查询表的子表银行明细表是只加载了部分数据,以下代码调取已加载的数据,没有加载的数据没有办法显示到专业报表中,银行明细表不全部加载时报表怎么才能取到所需要的全部数据

Rows = Tables("银行查询").DataTable.dataRows(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)("对方户名")
        rt.Cells(r+1,9).Text = rows(r)("对方账号")
        rt.rows(r+1).Style.Borders.Top = New prt.LineDef(0.3,Color.black)
    Next


--  作者:Hyphen
--  发布时间:2015/11/28 14:54:00
--  

参考SQLSelect

 

http://www.foxtable.com/help/topics/2900.htm

 


--  作者:kaituozhe
--  发布时间:2015/11/28 16:33:00
--  
没有类似的例子呀
--  作者:Hyphen
--  发布时间:2015/11/28 16:39:00
--  

例子改改

 

Dim drs As List(of DataRow) = DataTables("银行明细表").SQLSelect("关联字段= \'" & Tables("银行查询").DataTable.dataRows(i)("关联字段") & "\'"

[此贴子已经被作者于2015/11/28 16:39:15编辑过]

--  作者:kaituozhe
--  发布时间:2015/12/2 16:13:00
--  

为什么显示出来的报表有时候主表与下面的明细表数据不一致


--  作者:kaituozhe
--  发布时间:2015/12/2 16:15:00
--  
一张主表中月100多项数据,打出来的报表主表的数据与子表的有3个不对,不知道是什么原因,比如主表是张三的汇总数据 可以下面明细表是李四的明细数据
--  作者:大红袍
--  发布时间:2015/12/2 16:21:00
--  
贴出完整代码。
--  作者:kaituozhe
--  发布时间:2015/12/2 16:30:00
--  

\'\'\'

Dim tbl As Table = Tables("查询报告")

For i As Integer = tbl.TopRow To tbl.BottomRow

    Dim doc As New Printdoc

    Dim rx As prt.RenderText

    Dim rx1 As prt.RenderText

    Dim rt As prt.RenderTable

    Dim Rows As List(Of DataRow)

       Dim s As String

    doc.PageSetting.Landscape = True \'横向打印

    Doc.PageSetting.LeftMargin = 10 \'设置左边距

    Doc.PageSetting.RightMargin = 10 \'设置右边距

    Doc.PageSetting.TopMargin = 20 \'设置上边距

    Doc.PageSetting.BottomMargin = 20 \'设置下边距

     rx1 = New prt.RenderText

    rx1.BreakBefore = prt.BreakEnum.Page \'另起一页再打印

    rx1.Style.FontSize = 14

    rx1.Style.FontBold = True

    rx1.Style.Spacing.Bottom = 5

    rx1.Style.TextAlignHorz = prt.AlignHorzEnum.Center \'水平居中

    rx1.Text =  tbl.Rows(i)("序号") & "、" & tbl.Rows(i)("查询人") & "损失资金确认表"

    doc.Body.Children.Add(rx1)

    rx = New prt.RenderText

    rx.Style.FontSize = 12

    rx.Style.FontBold = True

    rx.Style.Spacing.Bottom = 5

    rx.Style.TextIndent = 9 \'首行缩进9毫米

    rx.Style.LineSpacing = 200 \'设置双倍行距

    

    rx.Text =  "对账人基本情况: " & tbl.Rows(i)("基本情况") & "查询金额: " & tbl.Rows(i)("查询情况_查询金额")&"万元,"& "查询依据: " & tbl.Rows(i)("查询情况_查询依据")& ",借方理由: " & Tbl.Rows(i)("查询情况_借款理由") & "。查询详细情况如下表:"

    doc.Body.Children.Add(rx)

    

    rt = New prt.RenderTable

    rt.RowGroups(0,1).Header = prt.TableHeaderEnum.All \'将第一行作为表头

    rt.Style.TextAlignHorz = prt.AlignHorzEnum.Center

    rt.Style.TextAlignVert = prt.AlignVertEnum.Center

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

    rt.Style.GridLines.All = New prt.Linedef

    rt.CellStyle.Spacing.All = 1

    rt.Cols.Count = 9

    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.Cells(0,9).Text = "对方账号"

    rt.rows(0).Style.Borders.Top = New prt.LineDef(0.5,Color.black)

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

    

       Rows =DataTables("查询明细表").SQLSelect("涉及人1= \'" & Tables("查询报告").DataTable.dataRows(i)("查询人") & "\'")

    

    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)("对方户名")

        rt.Cells(r+1,9).Text = rows(r)("对方账号")

        rt.rows(r+1).Style.Borders.Top = New prt.LineDef(0.3,Color.black)

    Next

    rt.Cells(Rows.Count+2,0).SpanCols = 10

    rt.Cells(Rows.Count+2,0).Text ="可以查询的损失金额为" & Tables("查询明细表").DataTable.sqlCompute("sum(借方金额)","涉及人1=\'" & tbl.Rows(i)("查询人") & "\'") - Tables("查询明细表").DataTable.sqlCompute("sum(贷方金额)","涉及人1=\'" & tbl.Rows(i)("查询人") & "\'") +Tbl.Rows(i)("查询情况_收到利息") & "元。" & "其中:借款金额为" &Tables("查询明细表").DataTable.sqlCompute("sum(借方金额)","涉及人1=\'" & tbl.Rows(i)("查询人") & "\'") & "元,回款金额为" & Tables("查询明细表").DataTable.sqlCompute("sum(贷方金额)","涉及人1=\'" & tbl.Rows(i)("查询人") & "\'") & "元,收到利息" & Tbl.Rows(i)("查询情况_收到利息") & "元。"

    rt.Cells(Rows.Count+2,0).Style.TextAlignHorz = prt.AlignHorzEnum.left

    rt.Cells(Rows.Count+1,3).Text ="合计"

    rt.Cells(Rows.Count+1,5).Text =Tables("查询明细表").DataTable.sqlCompute("sum(借方金额)","涉及人1=\'" & tbl.Rows(i)("查询人") & "\'")

    rt.Cells(Rows.Count+1,6).Text =Tables("查询明细表").DataTable.sqlCompute("sum(贷方金额)","涉及人1=\'" & tbl.Rows(i)("查询人") & "\'")

    doc.Body.Children.Add(rt)

    rx = New prt.RenderText

    rx.Style.FontBold = True

    rx.Style.Spacing.Top = 3

    rx.Style.TextIndent = 9 \'首行缩进9毫米

    rx.Style.LineSpacing = 200 \'设置双倍行距

    rx.Style.FontSize = 12

    rx.Text = "如果对以上表格中的往来明细无疑议,请写"“以上表格往来明细我已看过,对此无疑议,可以确认。”"" & vblf & vblf & "                                                                                                                                           对账人(签字):                              年   月   日"

    rx.Style.TextAlignHorz = prt.AlignHorzEnum.left

    doc.Body.Children.Add(rx)

    \'rx = New prt.RenderText \'设置文本对象的内容

    \'rx.Text = "第[PageNo]页,共[PageCount]页" \'设置文本内容

    \'rx.Style.TextAlignHorz = prt.AlignHorzEnum.Right \'靠右对齐

    \'rx.Style.Borders.Bottom = New prt.LineDef(0.3, Color.Green) \'设置底边框

    \'rx.Style.Padding.Bottom = 0.5 \'底端内容缩进0.5毫米

    \'rx.Style.FontSize = 8 \'字体大小为8磅

    \'Doc.PageHeader = rx \'作为页眉使用

    \'doc.Preview() \'预览

    Dim rx3 As New prt.RenderTable

    rx3.Cells(0,0).Text = tbl.Rows(i)("序号") & "、" & tbl.Rows(i)("查询人") & "损失资金确认表"

    rx3.Cells(0,1).Text = "第[PageNo]页,共[PageCount]页"

    rx3.Cols(0).Style.TextAlignHorz = prt.AlignHorzEnum.Left

    rx3.Cols(1).Style.TextAlignHorz = prt.AlignHorzEnum.right

    rx3.Style.Borders.Bottom = New prt.LineDef \'设置底边框

    rx3.CellStyle.Spacing.Bottom = 0.5 \'底端内容缩进0.5毫米

    rx3.Style.FontSize = 8 \'字体大小为8磅

    Doc.PageHeader = rx3 \'作为页眉使用

doc.Preview() \'预览

Next


--  作者:kaituozhe
--  发布时间:2015/12/2 16:32:00
--  
代码比较长 ,有一个查询报表及查询明细表,查询报告中某行是张三,可以下面的查询明细表会打出来李四,这是为什么,有100多行数据,只有3行是此情况,不知道什么原因,其他的都没有问题
--  作者:大红袍
--  发布时间:2015/12/2 16:32:00
--  

Rows =DataTables("查询明细表").SQLSelect("涉及人1= \'" & Tables("查询报告").DataTable.dataRows(i)("查询人") & "\'")

 

改成

 

Rows =DataTables("查询明细表").SQLSelect("涉及人1= \'" & Tables("查询报告").Rows(i)("查询人") & "\'")