Foxtable(狐表)用户栏目专家坐堂 → 请教专业报表:控制每页9行


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

主题:请教专业报表:控制每页9行

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


加好友 发短信
等级:幼狐 帖子:172 积分:1914 威望:0 精华:0 注册:2012/6/6 17:08:00
请教专业报表:控制每页9行  发帖心情 Post By:2013/11/27 15:22:00 [只看该作者]

Dim doc As New Printdoc
Dim rx As prt.RenderText
Dim rt As prt.RenderTable
Dim Rows As List(Of DataRow)
Dim tbl As Table = Tables("订单")


doc.PageSetting.Width = 240 '纸张宽度为100毫米
doc.PageSetting.Height = 140 '纸张高度为120毫米
Doc.PageSetting.LeftMargin = 8 '设置左边距
Doc.PageSetting.RightMargin = 8 '设置右边距
Doc.PageSetting.TopMargin = 15 '设置上边距
Doc.PageSetting.BottomMargin = 8 '设置下边距

For i As Integer = tbl.TopRow To tbl.BottomRow
    rx = New prt.RenderText
    rx.BreakBefore = prt.BreakEnum.Page '另起一页再打印
    rx.Style.FontSize = 14
    rx.Style.FontBold = True
    rx.Style.Spacing.Bottom = 5
    rx.Text = "订单编号: " & Tables("订单").Rows(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.rows(0).Style.Borders.Top = New prt.LineDef(0.1,Color.LightGray)
    rt.rows(0).Style.Borders.Bottom = New prt.LineDef(0.1,Color.LightGray)

    Rows = Tables("订单").Rows(i).DataRow.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)("金额")
    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
doc.Preview


 

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:管理项目1.foxdb

以上代码,希望再控制单据每页只打印9行,超过9行的,则另起一页,并且都能显示标题!

我看了许久帮助文件,仍然模不透怎样处理.麻烦各们前辈帮忙处理一下!万分感谢!!!


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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/11/27 15:48:00 [只看该作者]


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


加好友 发短信
等级:幼狐 帖子:172 积分:1914 威望:0 精华:0 注册:2012/6/6 17:08:00
  发帖心情 Post By:2013/11/27 19:17:00 [只看该作者]

谢谢您的帮助,
但我仍然不懂如何在订单明细表里面加上换页的代码,请指教!!!

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2013/11/27 20:00:00 [只看该作者]

 如下代码,测试有效


Dim doc As New Printdoc
Dim rx As prt.RenderText
Dim rt As prt.RenderTable
Dim Rows As List(Of DataRow)
Dim tbl As Table = Tables("订单")

doc.PageSetting.Width = 240 '纸张宽度为100毫米
doc.PageSetting.Height = 140 '纸张高度为120毫米
Doc.PageSetting.LeftMargin = 8 '设置左边距
Doc.PageSetting.RightMargin = 8 '设置右边距
Doc.PageSetting.TopMargin = 15 '设置上边距
Doc.PageSetting.BottomMargin = 8 '设置下边距
For i As Integer = tbl.TopRow To tbl.BottomRow
    Rows = Tables("订单").Rows(i).DataRow.GetChildRows("订单明细")
    For j As Integer = 0 To math.Ceiling(Rows.Count / 9) - 1
        rx = New prt.RenderText
        rx.BreakBefore = prt.BreakEnum.Page '另起一页再打印
        rx.Style.FontSize = 14
        rx.Style.FontBold = True
        rx.Style.Spacing.Bottom = 5
        rx.Text = "订单编号: " & Tables("订单").Rows(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.rows(0).Style.Borders.Top = New prt.LineDef(0.1,Color.LightGray)
        rt.rows(0).Style.Borders.Bottom = New prt.LineDef(0.1,Color.LightGray)
        
        For r As Integer = j*9 To (j+1)*9-1
            If r < Rows.count
                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)("金额")
            End If
        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
Next
doc.Preview

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


加好友 发短信
等级:幼狐 帖子:173 积分:1767 威望:0 精华:0 注册:2011/12/22 17:15:00
  发帖心情 Post By:2013/11/30 11:20:00 [只看该作者]

根据此指导,可以很好的打印入库单格式,好


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


加好友 发短信 一级勋章
等级:超级版主 帖子:7236 积分:40591 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2013/11/30 17:48:00 [只看该作者]

如果我是您,我不会采用这个方法,因为您的这个方法有很大的弱点:打印出两份订单编号一样而订单明细却是截然不一样的两份纸版报表。

我建议您这样:

1、在订单编号上想办法,以您的DR1311-0003为例,可以给订单再增加一个“子订单”关联表(按下面设置子订单号),也可以直接订单表的编号改为这样的模式:

      DR1311-0003-01

      DR1311-0003-02

3、在明细表的新增行之前事件中用代码判断,该订单明细记录大于9时,禁止再添加明细,并提示新增订单(或子订单)。

 

这样,您打印的纸版报表的订单编号或子订单编号永远是唯一的,不至于出现重复,一旦某种情况下需要核对账目,方便查找!


 回到顶部