Foxtable(狐表)用户栏目专家坐堂 → 请教分页码打印


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

主题:请教分页码打印

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


加好友 发短信
等级:四尾狐 帖子:927 积分:6676 威望:0 精华:0 注册:2013/8/10 18:33:00
请教分页码打印  发帖心情 Post By:2019/5/9 23:11:00 [只看该作者]

老师,制作了一个窗口,窗口里有TABLE1插件,插件为SQL查询表,内容为业务员销售明细表。已按业务员名称进行排序。
现在想实现打印,打印时自动按业务员自动分页打印,如果一个业务员的数据太多时,那么当每页打到40行时再自动换页打印,请问有什么参考资料如何实现?

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


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


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


加好友 发短信
等级:四尾狐 帖子:927 积分:6676 威望:0 精华:0 注册:2013/8/10 18:33:00
  发帖心情 Post By:2019/5/11 0:39:00 [只看该作者]

谢谢老师!

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


加好友 发短信
等级:四尾狐 帖子:927 积分:6676 威望:0 精华:0 注册:2013/8/10 18:33:00
  发帖心情 Post By:2019/5/13 16:27:00 [只看该作者]

老师,这个是分组打印了,我照着这个研究,还是没能实现分页打印,我想在不是相同的仓库了的时候,则自动实现换页。

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


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

以下是引用hopestarxia在2019/5/13 16:27:00的发言:
老师,这个是分组打印了,我照着这个研究,还是没能实现分页打印,我想在不是相同的仓库了的时候,则自动实现换页。

 

Dim doc As New PrintDoc
Dim rt As Prt.RenderTable
Dim rx As prt.RenderText
Dim tbl As Table = Tables("客户")
Dim Rows As List(Of DataRow)
Dim Regions As List(Of String) = tbl.DataTable.GetValues("地区")
doc.Pagesetting.LandScape = True
For Each Region As String In Regions
    Dim rm = new prt.RenderEmpty '定义一个新的空对象
    rm.BreakBefore = prt.BreakEnum.Page '打印前换页
    doc.Body.Children.Add(rm) '加入到报表中

    rx = New prt.RenderText
    rx.Style.FontSize = 14
    rx.Style.FontBold = True
    rx.Style.Spacing.Bottom = 2
    rx.Text = "地区: " & Region
    doc.Body.Children.Add(rx)
    rt = New prt.RenderTable
    rt.Style.Font = Tables("客户").Font
    rt.Style.TextAlignVert = prt.AlignVertEnum.Center
    rt.Style.GridLines.All = New prt.LineDef(0.3,Color.LightGray)
    rt.Style.Spacing.Bottom = 5
    rt.CellStyle.Spacing.All = 1
    rt.Style.Font = tbl.Font
    Rows = tbl.DataTable.Select("[地区] = '" & Region & "'")
    For c As Integer = 0 To tbl.Cols.Count - 1
        rt.Cells(0,c).Text = tbl.Cols(c).Name
        rt.Cols(c).Width = tbl.Cols(c).PrintWidth
        For r As Integer = 0 To Rows.Count -1
            rt.Cells(r + 1, c).Text = rows(r)(tbl.Cols(c).Name)
        Next
    Next
    rt.RowGroups(0,1).Header = prt.TableHeaderEnum.All
    doc.Body.Children.Add(rt)
Next
doc.preview()


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


加好友 发短信
等级:四尾狐 帖子:927 积分:6676 威望:0 精华:0 注册:2013/8/10 18:33:00
  发帖心情 Post By:2019/5/13 17:31:00 [只看该作者]

老师,用你教的代码实现了不同仓库的分页打印。
但是这样把我原来设置的打印纸张大于,定于每张打多少行,以及每页的标题及每页下面的其他内容都没有了。原来定义的样式没有了。
我看帮助里说的强制换页,我这个有没有办法用强制换页的代码解决?

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


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

以下是引用hopestarxia在2019/5/13 17:31:00的发言:
 
但是这样把我原来设置的打印纸张大于,定于每张打多少行,以及每页的标题及每页下面的其他内容都没有了。原来定义的样式没有了。
 

 

1、如果要分组,又要限定每页打印多少行,请把强制换页的代码,写到分组的循环里面去;

 

2、每页的顶部、底部内容,是页眉页脚 http://www.foxtable.com/webhelp/scr/1197.htm

 


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


加好友 发短信
等级:四尾狐 帖子:927 积分:6676 威望:0 精华:0 注册:2013/8/10 18:33:00
  发帖心情 Post By:2019/5/13 17:52:00 [只看该作者]

老师,你看一下我用如下代码

Dim t As Table = e.Form.Controls("Table1").Table
Dim ps As Integer = Math.Ceiling(t.Rows.count / 16)
For i As Integer = 1 To ps
    Dim idxs As String = ""
    t.Filter = ""
    For j As Integer = (i-1)*16 To i*16-1
        If j >= t.Rows.count Then
            Exit For
        End If
        idxs &= "'" & t.Rows(j)("仓库名称") & "',"
    Next
    t.Filter = "仓库名称  in (" & idxs.trim(",") & ")"
   
    Dim doc As PrintDoc = e.Form.GernatePrintDoc()
    doc.Preview()
Next
t.Filter = ""
怎么调整能有希望实现,我感觉这个比较接近能实现我的需求了。

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


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


Dim t As Table = e.Form.Controls("Table1").Table
For Each ck As String In t.DataTable.GetValues("仓库名称")
    Dim drs = t.DataTable.Select("仓库名称='" & ck & "'")
    Dim ps As Integer = Math.Ceiling(drs.count / 16)
    For i As Integer = 1 To ps
        Dim idxs As String = ""
        t.Filter = ""
        For j As Integer = (i-1)*16 To i*16-1
            If j >= drs.count Then
                Exit For
            End If
            idxs &= "'" & drs(j)("_Identify") & "',"
        Next
        t.Filter = "_Identify  in (" & idxs.trim(",") & ")"
       
        Dim doc As PrintDoc = e.Form.GernatePrintDoc()
        doc.Preview()
    Next
Next


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


加好友 发短信
等级:四尾狐 帖子:927 积分:6676 威望:0 精华:0 注册:2013/8/10 18:33:00
  发帖心情 Post By:2019/5/13 18:30:00 [只看该作者]

谢谢老师,用老师的代码可以了。需要学习的地方还太多啊。

 回到顶部
总数 16 1 2 下一页