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


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

主题:请教分页码打印

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


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

有点甜老师,我如果还想在这上面加上页码,页码按仓库来分(不是按所有的数据),共几页,第几页,请问如何实现?

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


加好友 发短信
等级:超级版主 帖子:106680 积分:542589 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/5/13 20:27:00 [只看该作者]


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


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

以下是引用hopestarxia在2019/5/13 19:33: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()
        Dim rt = New prt.RenderText '设置文本对象的内容
        rt.Text = "第[PageNo]页,共[PageCount]页" '设置文本内容
        rt.Style.TextAlignHorz = prt.AlignHorzEnum.Right '靠右对齐
        rt.Style.Borders.Bottom = New prt.LineDef(0.3, Color.Green) '设置底边框
        rt.Style.Padding.Bottom = 0.5 '底端内容缩进0.5毫米
        rt.Style.FontSize = 8 '字体大小为8磅
        Doc.PageHeader = rt '作为页眉使用
        doc.Preview()
    Next
Next


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


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

谢谢有点甜老师!!!

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


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

老师,用如下代码最终实现了分页打印,但发现有如下问题,
如果某个仓库的汇总数据超过1页,那么有几页就会把这个仓库的打印几遍出来、
列如,如果A仓有40行数据,(现是16行1页),则这个仓库的1至3页都会打印出来三份。(打三遍,一份三页,共9页),
B仓有20行数据,则B仓的就打印出来二份,(两个一页,两个第二页),
C仓的只有10行数据,那么C仓打印出来就只有一页。

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)("仓库名称") & "',"

 e.Form.Controls("Label4").Text =  "第[PageNo]页,共[PageCount]页" 
e.Form.Controls("textbox3").Text  = t.DataTable.Compute("Sum(数量)","[仓库名称] = '" & ck & "' ")

        Next
        t.Filter = "仓库名称  in (" & idxs.trim(",") & ")"
        
Dim doc As PrintDoc = e.Form.GernatePrintDoc()
doc.Print()
    Next
Next

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


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

 

代码没问题,请做一个对应实例发上来测试。

 

 


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