以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  分页打印  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=119003)

--  作者:刘林
--  发布时间:2018/5/15 22:12:00
--  分页打印
Dim rb1 As WinForm.RadioButton = e.Form.Controls("RadioButton1")
Dim rb2 As WinForm.RadioButton = e.Form.Controls("RadioButton2")
If rb1.Checked=True
    Dim doc As New PrintDoc \'定义一个报表
    Doc.PageSetting.PaperKind=9
    doc.Stacking = prt.StackingRulesEnum.InlineLeftToRight
    Doc.PageSetting.leftMargin = 15
    Doc.PageSetting.rightMargin = 15
    Doc.PageSetting.TopMargin  =5
    Doc.PageSetting.BottomMargin  =12
    Dim ck As WinForm.CheckBox =e.Form.Controls("checkbox1")
    Dim Rows As List(Of DataRow)
    Dim tb As Table=Tables("初中报名_table5")
    tb.sort= "考试室,考号"
    Dim dr As DataRow = tb.DataTable.Find("考试室 is null")
    Dim regions As List(of String())
    If dr Is Nothing
        Regions  = tb.DataTable.GetValues("考试名称|单位名称|考试室","","考试室") \'\'\'\'改后句子
    Else
        Regions = tb.DataTable.GetValues("考试名称|单位名称|年级") \'\'\'\'改后句子
    End If
    Dim rm As prt.RenderEmpty
    For Each region As String() In Regions
        If ck.Checked= True
            rm = new prt.RenderEmpty \'定义一个新的空对象
            rm.BreakBefore = prt.BreakEnum.Page \'打印前换页
            doc.Body.Children.Add(rm)
        End If
        If dr Is Nothing
            Rows = tb.DataTable.Select("[单位名称] = \'" & region(1) & "\'And [考试室] =\'" & region(2) &  "\'and [考试名称] =\'" & region(0) & "\'","考试室,考号")
        Else
            Rows = tb.DataTable.Select("[单位名称] = \'" & region(1) & "\'And [年级] =\'" & region(2) &  "\'and [考试名称] =\'" & region(0) & "\'","考试室,考号")
        End If
        For r As Integer = 0 To Rows.Count -1
            Dim ra As New prt.RenderArea
            Dim rt As prt.RenderText
            ra.Width = 60 \'宽度53毫米
            ra.Height = 40 \'高度24毫米
            ra.Style.Spacing.All = 0
            ra.Style.Borders.All = New prt.Linedef(0, Color.Red) \'设置边框
            ra.SplitHorzBehavior = prt.SplitBehaviorEnum.Never \'禁止水平分割
            ra.SplitVertBehavior = prt.SplitBehaviorEnum.Never \'禁止垂直分割
            Doc.Body.ChildRen.Add(ra) \'将容器加入到报表中
            rt = New prt.RenderText
            rt.Text = Rows(r)("考试名称") & "考试"
            rt.Style.Font=New Font("黑体", 18, FontStyle.Bold)
            rt.Style.TextAlignHorz = prt.AlignHorzEnum.Center
            rt.Y = 9
            ra.Children.Add(rt) \'添加到容器中
            rt = New prt.RenderText
            rt.Text = Rows(r)("考试室")
            rt.Style.Font=New Font("黑体", 8, FontStyle.Bold)
            rt.Style.TextAlignHorz = prt.AlignHorzEnum.Center
            rt.Y = 18
            ra.Children.Add(rt) \'添加到容器中
            rt = New prt.RenderText
            rt.Text = Rows(r)("学校班级")
            rt.Style.Font=New Font("黑体", 8, FontStyle.Bold)
            rt.Style.TextAlignHorz = prt.AlignHorzEnum.Center
            rt.Y = 23
            ra.Children.Add(rt) \'添加到容器中
            rt = New prt.RenderText
            rt.Text = Rows(r)("考号") & "  " & Rows(r)("姓名")
            rt.Style.Font=New Font("黑体", 15, FontStyle.Bold)
            rt.Style.TextAlignHorz = prt.AlignHorzEnum.Center
            rt.Y = 28
            ra.Children.Add(rt) \'添加到容
        Next
    Next
    Doc.Preview() \'预览报表
End If



If rb2.Checked=True
    Dim doc As New PrintDoc \'定义一个报表
    Doc.PageSetting.PaperKind=9
    doc.Stacking = prt.StackingRulesEnum.InlineLeftToRight
    Doc.PageSetting.leftMargin = 0
    Doc.PageSetting.rightMargin = 0
    Doc.PageSetting.TopMargin  =0
    Doc.PageSetting.BottomMargin  =0
    Dim ck As WinForm.CheckBox =e.Form.Controls("checkbox1")
    Dim Rows As List(Of DataRow)
    Dim tb As Table=Tables("初中报名_table5")
    tb.sort= "考试室,考号"
    Dim dr As DataRow = tb.DataTable.Find("考试室 is null")
    Dim regions As List(of String())
    If dr Is Nothing
        Regions  = tb.DataTable.GetValues("考试名称|单位名称|考试室","","考试室") \'\'\'\'改后句子
    Else
        Regions = tb.DataTable.GetValues("考试名称|单位名称|年级") \'\'\'\'改后句子
    End If
    Dim rm As prt.RenderEmpty
    For Each region As String() In Regions
        If ck.Checked= True
            rm = new prt.RenderEmpty \'定义一个新的空对象
            rm.BreakBefore = prt.BreakEnum.Page \'打印前换页
            doc.Body.Children.Add(rm)
        End If
        If dr Is Nothing
            Rows = tb.DataTable.Select("[单位名称] = \'" & region(1) & "\'And [考试室] =\'" & region(2) &  "\'and [考试名称] =\'" & region(0) & "\'","考试室,考号")
        Else
            Rows = tb.DataTable.Select("[单位名称] = \'" & region(1) & "\'And [年级] =\'" & region(2) &  "\'and [考试名称] =\'" & region(0) & "\'","考试室,考号")
        End If
        For r As Integer = 0 To Rows.Count -1
            Dim ra As New prt.RenderArea
            Dim rt As prt.RenderText
            ra.Width = 70 \'宽度53毫米
            ra.Height = 29.5 \'高度24毫米
            ra.Style.Spacing.All = 0
            ra.Style.Borders.All = New prt.Linedef(0, Color.Red) \'设置边框
            ra.SplitHorzBehavior = prt.SplitBehaviorEnum.Never \'禁止水平分割
            ra.SplitVertBehavior = prt.SplitBehaviorEnum.Never \'禁止垂直分割
            Doc.Body.ChildRen.Add(ra) \'将容器加入到报表中
            rt = New prt.RenderText
            rt.Text = Rows(r)("考试名称") & "考试"
            rt.Style.Font=New Font("黑体", 19, FontStyle.Bold)
            rt.Style.TextAlignHorz = prt.AlignHorzEnum.Center
            rt.Y = 10
            ra.Children.Add(rt) \'添加到容器中
             rt = New prt.RenderText
            rt.Text = Rows(r)("考号") & "  " & Rows(r)("姓名")
            rt.Style.Font=New Font("黑体", 16, FontStyle.Bold)
            rt.Style.TextAlignHorz = prt.AlignHorzEnum.Center
            rt.Y = 19
            ra.Children.Add(rt) \'添加到容
        Next
    Next
    Doc.Preview() \'预览报表
End If


老师,设计了两种情况,rb1.checked  和rb2.checked 都要实现不同考试室分页,现在是rb2.chedked时不能分页呢,错在哪里

--  作者:有点蓝
--  发布时间:2018/5/15 22:30:00
--  
看不出什么问题,测试可以分页,上传实例测试
--  作者:刘林
--  发布时间:2018/5/15 22:32:00
--  
就是当选择rb2时,就不能不同考试室分页,选rb1时是可以
--  作者:有点蓝
--  发布时间:2018/5/15 22:34:00
--  
请上传实例测试