Foxtable(狐表)用户栏目专家坐堂 → 专业报表中获取子表数据


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

主题:专业报表中获取子表数据

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


加好友 发短信
等级:九尾狐 帖子:2236 积分:15335 威望:0 精华:0 注册:2015/7/18 10:10:00
专业报表中获取子表数据  发帖心情 Post By: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
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:5015 积分:25363 威望:0 精华:0 注册:2015/8/18 9:21:00
  发帖心情 Post By:2015/11/28 14:54:00 [只看该作者]


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


加好友 发短信
等级:九尾狐 帖子:2236 积分:15335 威望:0 精华:0 注册:2015/7/18 10:10:00
  发帖心情 Post By:2015/11/28 16:33:00 [只看该作者]

没有类似的例子呀

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


加好友 发短信
等级:狐神 帖子:5015 积分:25363 威望:0 精华:0 注册:2015/8/18 9:21:00
  发帖心情 Post By: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
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2236 积分:15335 威望:0 精华:0 注册:2015/7/18 10:10:00
  发帖心情 Post By:2015/12/2 16:13:00 [只看该作者]

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


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


加好友 发短信
等级:九尾狐 帖子:2236 积分:15335 威望:0 精华:0 注册:2015/7/18 10:10:00
  发帖心情 Post By:2015/12/2 16:15:00 [只看该作者]

一张主表中月100多项数据,打出来的报表主表的数据与子表的有3个不对,不知道是什么原因,比如主表是张三的汇总数据 可以下面明细表是李四的明细数据

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/12/2 16:21:00 [只看该作者]

贴出完整代码。

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


加好友 发短信
等级:九尾狐 帖子:2236 积分:15335 威望:0 精华:0 注册:2015/7/18 10:10:00
  发帖心情 Post By: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
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2236 积分:15335 威望:0 精华:0 注册:2015/7/18 10:10:00
  发帖心情 Post By:2015/12/2 16:32:00 [只看该作者]

代码比较长 ,有一个查询报表及查询明细表,查询报告中某行是张三,可以下面的查询明细表会打出来李四,这是为什么,有100多行数据,只有3行是此情况,不知道什么原因,其他的都没有问题

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/12/2 16:32:00 [只看该作者]

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

 

改成

 

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


 回到顶部