Foxtable(狐表)用户栏目专家坐堂 → 打印筛选的记录


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

主题:打印筛选的记录

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


加好友 发短信
等级:六尾狐 帖子:1495 积分:12175 威望:0 精华:0 注册:2013/3/19 16:41:00
打印筛选的记录  发帖心情 Post By:2019/3/21 17:41:00 [只看该作者]

请问老师,下面这段代码是打印选定的记录。但如果是要打印筛选出来的记录怎么改呢?比如:要打印 

学历=‘本科’的所有记录

 

Dim doc As New PrintDoc '定义一个报表

Doc.Columns.Add() '增加三栏
'Doc.Columns.Add()
'Doc.Columns(0).Spacing = 30 '栏间距15毫米
'Doc.Columns(1).Spacing = 150 '栏间距15毫米
Dim tbl As Table = Tables("员工")
'doc.PageSetting.Landscape = True '横向打印
doc.PageSetting.Width = 210 '纸张宽度为100毫米
doc.PageSetting.Height = 287 '纸张高度为120毫米
Doc.PageSetting.LeftMargin = 20 '设置左边距
Doc.PageSetting.RightMargin = 20 '设置右边距
Doc.PageSetting.TopMargin = 20'设置上边距
Doc.PageSetting.BottomMargin =10 '设置下边距
For i As Integer = tbl.TopRow To tbl.BottomRow
    Dim rw As Row = tbl.Rows(i)
    Dim rt As New prt.RenderTable() '定义一个表格对象
    Dim rx As New prt.RenderText '定义一个文本对象
    Dim ra As New prt.RenderArea '定义一个容器
    Dim rm As New prt.RenderImage '定义一个图片对象


    ra.SplitVertBehavior = prt.SplitBehaviorEnum.Never  '禁止容器因为分页而被垂直分割
    '加入标题
 rm.Image = GetImage("i:\aa.tif") '设置图片
    rm.Width = 40 '设置尺寸  印章
    rm.Height = 40   
    rm.x = 75
    rm.y = 2
    ra.Children.Add(rm)

    rx.text = "发行公司集订分送卡"
    rx.Style.FontBold = True '字体加粗
    rx.Style.TextAlignHorz = prt.AlignHorzEnum.Center '水平居中排列
    rx.Style.Font = New Font("黑体", 16, FontStyle.Bold) '设置字体
    rx.Style.Spacing.Bottom = 5 '和下面的对象(表格)距离3毫米
    ra.Children.Add(rx) '加入到容器中
    '指定行数?列数?列宽?行高
    rt.Rows.Count = 6 '设置总行数
    rt.Cols.Count = 4 '设置总列数
    rt.Height = 53 '设置表格的高度
     
   '设置合并单元格
    rt.Cells(0,1).SpanCols =3
    rt.Cells(1,1).SpanCols = 3 
    rt.Cells(5,1).SpanCols = 3 '    '设置表格样式
    rt.CellStyle.Spacing.All = 1 '单元格内容缩进1毫米
    rt.Style.Spacing.Bottom = 15 ' 和下一个资料卡的距离是5毫米
    rt.Style.GridLines.All = New prt.Linedef '设置网格线
    rt.Style.TextAlignVert = prt.AlignVertEnum.Center '内容垂直居中
     '下面很简单,指定每一个单元格的内容
    rt.Cells(0,0).Text= "户        名"
    rt.Cells(0,1).Text = rw("hum")
    rt.Cells(1,0).Text= "地        址"
    rt.Cells(1,1).Text = rw("diz")
    rt.Cells(2,0).Text= "发  piao  号"
    rt.Cells(2,1).Text =("")
    rt.Cells(2,2).Text= "报纸名称"
    rt.Cells(2,3).Text = rw("baom")
    rt.Cells(3,0).Text= "起订日期"
    rt.Cells(3,1).Text = rw("qsrq")
    rt.Cells(3,2).Text= "终止日期"
    rt.Cells(3,3).Text = rw("zrrq")
    rt.Cells(4,0).Text= "份        数"
    rt.Cells(4,1).Text = rw("fens")
    rt.Cells(4,2).Text= "电        话"
    rt.Cells(4,3).Text = rw("dh")
    rt.Cells(5,0).Text= "发  行  员"
    rt.Cells(5,1).Text = rw("faby")
    rt.Cells(5,2).Text= "订阅单位"
    rt.Cells(5,3).Text = rw("danwei")
    rt.Style.FontSize = 11.5
    rt.Cols(0).Style.TextAlignHorz = prt.AlignHorzEnum.Center
    rt.Cols(2).Style.TextAlignHorz = prt.AlignHorzEnum.Center
    ra.Children.Add(rt) '加入到容器中
    Doc.Body.ChildRen.Add(ra) '将容器加入到报表中
  

Next
Doc.Preview() '预览报表


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


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

For i As Integer = tbl.TopRow To tbl.BottomRow
    Dim rw As Row = tbl.Rows(i)

 

改成

 

For i As Integer = 0 To tbl.rows.count-1
    Dim rw As Row = tbl.Rows(i)


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


加好友 发短信
等级:六尾狐 帖子:1495 积分:12175 威望:0 精华:0 注册:2013/3/19 16:41:00
  发帖心情 Post By:2019/3/22 10:00:00 [只看该作者]

下面的代码想实现出库单一式两联,但总是编译出错,不知哪出错了,请老师给看看吧。另如何打印出出库单上的物品的总价呢?

Dim doc  As New PrintDoc  '定义一个新报表

Dim rt  As New prt.RenderTable '定义一个新表格

Dim rs As New prt.RenderText() '定义一个文本对象

Dim rs2 As New prt.RenderText()

Dim rt1 As New prt.RenderTable() '定义一个表格对象

doc.PageSetting.PaperKind = 9 '纸张A4

Doc.PageSetting.LeftMargin = 20 '设置左边距

Doc.PageSetting.RightMargin = 20 '设置右边距

Doc.PageSetting.TopMargin = 20 '设置上边距

Doc.PageSetting.BottomMargin = 20 '设置下边距

 

 

rt.Style.Spacing.Top = 1  '表格和前面对象的垂直间隔为1毫米

rt.Style.Spacing.Bottom = 1  '表和和后续对象的垂直间隔为1毫米

 

rs.Text = "青铜峡市铝业学校入库单"  '设置文本对象的内容

rs.Style.Font = New Font("宋体", 16 , FontStyle.Bold) '设置文本对象的字体

rs.Style.TextAlignHorz = prt.AlignHorzEnum.Center '文本内容水平居中

doc.Body.Children.Add(rs) '将文本对象加入到表格中

doc.Body.Children.Add(rt1) '将表格对象加入到报表中

rs2 = New prt.RenderText() '再次定义一个文本对象

rs2.Text = "第一联:报账凭证"

doc.Body.Children.Add(rs2) '将文本对象加入到表格中

 

Dim tb  As  Table = Tables("打印入库单_table1")     '.Cols("办理入库") = 'True'

Dim Colnames As String() = {"物品名称","规格型号","单位","采购数量","采购单价","采购总价","供货单位"}

rt.Width = "Auto"  '表格宽度为自动,也就是等于各列设置宽度之和

'rt.SplitHorzBehavior = prt.SplitBehaviorEnum.SplitIfNeeded '表格宽度超出页宽时,可以水平换页

rt.Style.Font = tb.Font

For c  As  Integer =  0 To Colnames.length -1  '逐列设置和填入内容

    rt.Cells(0,c).Text = colnames(c) '列名作为标题

    rt.Cells(0,c).Style.TextAlignHorz = prt.AlignHorzEnum.Center '标题内容水平居中

    rt.Cols(c).Width = tb.Cols(colnames(c)).PrintWidth '列宽等于实际列宽

   ' If tb.Cols(colnames(c)).IsNumeric Then  '如果是数值或日期列

        rt.Cols(c).Style.TextAlignHorz = prt.AlignHorzEnum.Center  '数据水平靠右

   ' End  If

    Dim i As Integer = 1

   ' For r As Integer = tb.TopPosition To tb.BottomPosition '开始填入该列内容

For r As Integer = 0 To tb.Rows.Count -1

        If tb.rows(r)("办理入库") = True Then

            rt.Cells(i, c).Text = tb.Rows(r)(colnames(c))

            i=i+1

        End If

    Next

Next

 

 

rt.Style.Gridlines.All = New prt.Linedef(Color.Gray) '灰色网格线

rt.CellStyle.Spacing.All = 0.5  '单元格内距设为0.5毫米

rt.Rows(0).Style.TextAlignHorz = prt.AlignHorzEnum.Center '第一行内容水平居中

rt.RowGroups(0,1).Header = prt.TableHeaderEnum.All '利用行组,将第一行设为表头

doc.Body.Children.Add(rt) '将表格加入到报表

 

 

Dim doc1  As New PrintDoc  '定义一个新报表

Dim rt1  As New prt.RenderTable '定义一个新表格

Dim rs1 As New prt.RenderText() '定义一个文本对象

Dim rs3 As New prt.RenderText()

Dim rt3 As New prt.RenderTable() '定义一个表格对象

rt1.Style.Spacing.Top = 1  '表格和前面对象的垂直间隔为1毫米

rt1.Style.Spacing.Bottom = 1  '表和和后续对象的垂直间隔为1毫米

 

rs1.Text = "青铜峡市铝业学校入库单"  '设置文本对象的内容

rs1.Style.Font = New Font("宋体", 16 , FontStyle.Bold) '设置文本对象的字体

rs1.Style.TextAlignHorz = prt.AlignHorzEnum.Center '文本内容水平居中

doc1.Body.Children.Add(rs1) '将文本对象加入到表格中

doc1.Body.Children.Add(rt3) '将表格对象加入到报表中

rs3 = New prt.RenderText() '再次定义一个文本对象

rs3.Text = "第二联:存根"

doc1.Body.Children.Add(rs3) '将文本对象加入到表格中

 

 

Dim tb1  As  Table = Tables("打印入库单_table1")     '.Cols("办理入库") = 'True'

Dim Colnames As String() = {"物品名称","规格型号","单位","采购数量","采购单价","采购总价","供货单位"}

rt1.Width = "Auto"  '表格宽度为自动,也就是等于各列设置宽度之和

'rt.SplitHorzBehavior = prt.SplitBehaviorEnum.SplitIfNeeded '表格宽度超出页宽时,可以水平换页

rt1.Style.Font = tb1.Font

For c1  As  Integer =  0 To Colnames.length -1  '逐列设置和填入内容

    rt1.Cells(0,c1).Text = colnames(c1) '列名作为标题

    rt1.Cells(0,c1).Style.TextAlignHorz = prt.AlignHorzEnum.Center '标题内容水平居中

    rt1.Cols(c1).Width = tb1.Cols(colnames(c1)).PrintWidth '列宽等于实际列宽

   ' If tb.Cols(colnames(c)).IsNumeric Then  '如果是数值或日期列

        rt1.Cols(c1).Style.TextAlignHorz = prt.AlignHorzEnum.Center  '数据水平靠右

   ' End  If

    Dim i1 As Integer = 1

   ' For r As Integer = tb.TopPosition To tb.BottomPosition '开始填入该列内容

For r1 As Integer = 0 To tb.Rows.Count -1

        If tb1.rows(r1)("办理入库") = True Then

            rt1.Cells(i1, c1).Text = tb.Rows(r1)(colnames(c1))

            i1=i1+1

        End If

    Next

Next

 

 

rt1.Style.Gridlines.All = New prt.Linedef(Color.Gray) '灰色网格线

rt1.CellStyle.Spacing.All = 0.5  '单元格内距设为0.5毫米

rt1.Rows(0).Style.TextAlignHorz = prt.AlignHorzEnum.Center '第一行内容水平居中

rt1.RowGroups(0,10).Header = prt.TableHeaderEnum.All '利用行组,将第一行设为表头

doc1.Body.Children.Add(rt1) '将表格加入到报表

 

doc.Preview()


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


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

Dim doc  As New PrintDoc  '定义一个新报表

Dim rt  As New prt.RenderTable '定义一个新表格

Dim rs As New prt.RenderText() '定义一个文本对象

Dim rs2 As New prt.RenderText()

Dim rt1 As New prt.RenderTable() '定义一个表格对象

doc.PageSetting.PaperKind = 9 '纸张A4

Doc.PageSetting.LeftMargin = 20 '设置左边距

Doc.PageSetting.RightMargin = 20 '设置右边距

Doc.PageSetting.TopMargin = 20 '设置上边距

Doc.PageSetting.BottomMargin = 20 '设置下边距

 

 

rt.Style.Spacing.Top = 1  '表格和前面对象的垂直间隔为1毫米

rt.Style.Spacing.Bottom = 1  '表和和后续对象的垂直间隔为1毫米

 

rs.Text = "青铜峡市铝业学校入库单"  '设置文本对象的内容

rs.Style.Font = New Font("宋体", 16 , FontStyle.Bold) '设置文本对象的字体

rs.Style.TextAlignHorz = prt.AlignHorzEnum.Center '文本内容水平居中

doc.Body.Children.Add(rs) '将文本对象加入到表格中

doc.Body.Children.Add(rt1) '将表格对象加入到报表中

rs2 = New prt.RenderText() '再次定义一个文本对象

rs2.Text = "第一联:报账凭证"

doc.Body.Children.Add(rs2) '将文本对象加入到表格中

 

Dim tb  As  Table = Tables("打印入库单_table1")     '.Cols("办理入库") = 'True'

Dim Colnames As String() = {"物品名称","规格型号","单位","采购数量","采购单价","采购总价","供货单位"}

rt.Width = "Auto"  '表格宽度为自动,也就是等于各列设置宽度之和

'rt.SplitHorzBehavior = prt.SplitBehaviorEnum.SplitIfNeeded '表格宽度超出页宽时,可以水平换页

rt.Style.Font = tb.Font

For c  As  Integer =  0 To Colnames.length -1  '逐列设置和填入内容
   
    rt.Cells(0,c).Text = colnames(c) '列名作为标题
   
    rt.Cells(0,c).Style.TextAlignHorz = prt.AlignHorzEnum.Center '标题内容水平居中
   
    rt.Cols(c).Width = tb.Cols(colnames(c)).PrintWidth '列宽等于实际列宽
   
    ' If tb.Cols(colnames(c)).IsNumeric Then  '如果是数值或日期列
   
    rt.Cols(c).Style.TextAlignHorz = prt.AlignHorzEnum.Center  '数据水平靠右
   
    ' End  If
   
    Dim i As Integer = 1
   
    ' For r As Integer = tb.TopPosition To tb.BottomPosition '开始填入该列内容
   
    For r As Integer = 0 To tb.Rows.Count -1
       
        If tb.rows(r)("办理入库") = True Then
           
            rt.Cells(i, c).Text = tb.Rows(r)(colnames(c))
           
            i=i+1
           
        End If
       
    Next
   
Next

 

 

rt.Style.Gridlines.All = New prt.Linedef(Color.Gray) '灰色网格线

rt.CellStyle.Spacing.All = 0.5  '单元格内距设为0.5毫米

rt.Rows(0).Style.TextAlignHorz = prt.AlignHorzEnum.Center '第一行内容水平居中

rt.RowGroups(0,1).Header = prt.TableHeaderEnum.All '利用行组,将第一行设为表头

doc.Body.Children.Add(rt) '将表格加入到报表

 

rt  = New prt.RenderTable '定义一个新表格

rs = New prt.RenderText() '定义一个文本对象

rs2 = New prt.RenderText()

rt1 = New prt.RenderTable() '定义一个表格对象

doc.PageSetting.PaperKind = 9 '纸张A4

Doc.PageSetting.LeftMargin = 20 '设置左边距

Doc.PageSetting.RightMargin = 20 '设置右边距

Doc.PageSetting.TopMargin = 20 '设置上边距

Doc.PageSetting.BottomMargin = 20 '设置下边距

 

 

rt.Style.Spacing.Top = 1  '表格和前面对象的垂直间隔为1毫米

rt.Style.Spacing.Bottom = 1  '表和和后续对象的垂直间隔为1毫米

 

rs.Text = "青铜峡市铝业学校入库单"  '设置文本对象的内容

rs.Style.Font = New Font("宋体", 16 , FontStyle.Bold) '设置文本对象的字体

rs.Style.TextAlignHorz = prt.AlignHorzEnum.Center '文本内容水平居中

doc.Body.Children.Add(rs) '将文本对象加入到表格中

doc.Body.Children.Add(rt1) '将表格对象加入到报表中

rs2 = New prt.RenderText() '再次定义一个文本对象

rs2.Text = "第一联:报账凭证"

doc.Body.Children.Add(rs2) '将文本对象加入到表格中

 

 

rt.Width = "Auto"  '表格宽度为自动,也就是等于各列设置宽度之和

'rt.SplitHorzBehavior = prt.SplitBehaviorEnum.SplitIfNeeded '表格宽度超出页宽时,可以水平换页

rt.Style.Font = tb.Font

For c  As  Integer =  0 To Colnames.length -1  '逐列设置和填入内容
   
    rt.Cells(0,c).Text = colnames(c) '列名作为标题
   
    rt.Cells(0,c).Style.TextAlignHorz = prt.AlignHorzEnum.Center '标题内容水平居中
   
    rt.Cols(c).Width = tb.Cols(colnames(c)).PrintWidth '列宽等于实际列宽
   
    ' If tb.Cols(colnames(c)).IsNumeric Then  '如果是数值或日期列
   
    rt.Cols(c).Style.TextAlignHorz = prt.AlignHorzEnum.Center  '数据水平靠右
   
    ' End  If
   
    Dim i As Integer = 1
   
    ' For r As Integer = tb.TopPosition To tb.BottomPosition '开始填入该列内容
   
    For r As Integer = 0 To tb.Rows.Count -1
       
        If tb.rows(r)("办理入库") = True Then
           
            rt.Cells(i, c).Text = tb.Rows(r)(colnames(c))
           
            i=i+1
           
        End If
       
    Next
   
Next

 

 

rt.Style.Gridlines.All = New prt.Linedef(Color.Gray) '灰色网格线

rt.CellStyle.Spacing.All = 0.5  '单元格内距设为0.5毫米

rt.Rows(0).Style.TextAlignHorz = prt.AlignHorzEnum.Center '第一行内容水平居中

rt.RowGroups(0,1).Header = prt.TableHeaderEnum.All '利用行组,将第一行设为表头

doc.Body.Children.Add(rt) '将表格加入到报表

Doc.Preview


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


加好友 发短信
等级:六尾狐 帖子:1495 积分:12175 威望:0 精华:0 注册:2013/3/19 16:41:00
  发帖心情 Post By:2019/3/22 15:02:00 [只看该作者]

如何打印出采购总价的合计数呢?比如入库单上打印了四条记录,怎么计算出这四条记录采购总价的合计数并打印在指定位置上?

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


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

定义一个变量,在循环里进行累加,然后打印。

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


加好友 发短信
等级:六尾狐 帖子:1495 积分:12175 威望:0 精华:0 注册:2013/3/19 16:41:00
  发帖心情 Post By:2019/3/23 14:32:00 [只看该作者]

以下是引用有点蓝在2019/3/22 20:10:00的发言:
定义一个变量,在循环里进行累加,然后打印。

请老师帮忙看看吧,我怎么做都计算不对。

 

Dim doc  As New PrintDoc  '定义一个新报表
Dim rt  As New prt.RenderTable '定义一个新表格
Dim rs As New prt.RenderText() '定义一个文本对象
Dim rss As New prt.RenderText()
Dim rs2 As New prt.RenderText()
Dim rt1 As New prt.RenderTable() '定义一个表格对象
doc.PageSetting.PaperKind = 9 '纸张A4
Doc.PageSetting.LeftMargin = 20 '设置左边距
Doc.PageSetting.RightMargin = 20 '设置右边距
Doc.PageSetting.TopMargin = 20 '设置上边距
Doc.PageSetting.BottomMargin = 20 '设置下边距

rt.Style.Spacing.Top = 1  '表格和前面对象的垂直间隔为1毫米
rt.Style.Spacing.Bottom = 3  '表和和后续对象的垂直间隔为1毫米
rs.Text = "青铜峡市铝业学校入库单"  '设置文本对象的内容
rs.Style.Font = New Font("黑体", 14) '设置文本对象的字体
rs.Style.TextAlignHorz = prt.AlignHorzEnum.Center '文本内容水平居中
doc.Body.Children.Add(rs) '将文本对象加入到表格中
doc.Body.Children.Add(rt1) '将表格对象加入到报表中
rs2 = New prt.RenderText() '再次定义一个文本对象
rs2.Text = "第一联:报账凭证"
rs2.Style.TextAngle = -90 '顺时钟旋转45度
rs2.style.Font = New Font("楷体", 8 )
rs2.x=191
rs2.y=40
doc.Body.Children.Add(rs2) '将文本对象加入到表格中

'rss = New prt.RenderText() '再次定义一个文本对象
rss.Text ="NO:"& Vars("bbbbb")
rss.style.Font = New Font("楷体", 8 )
rss.x=155
rss.y=22
doc.Body.Children.Add(rss) '将文本对象
Dim sum As Integer = 0

Dim tb  As  Table = Tables("打印入库单_table1")     '.Cols("办理入库") = 'True'
Dim Colnames As String() = {"物品名称","规格型号","单位","采购数量","采购单价","采购总价","供货单位"}
'rt.Width = "Auto"  '表格宽度为自动,也就是等于各列设置宽度之和
'rt.SplitHorzBehavior = prt.SplitBehaviorEnum.SplitIfNeeded '表格宽度超出页宽时,可以水平换页
rt.Style.Font = tb.Font
rt.Height = 50
rt.Style.TextAlignHorz = prt.AlignHorzEnum.Center '水平居中
rt.Style.TextAlignVert = prt.AlignVertEnum.Center '垂直居中

For c  As  Integer =  0 To Colnames.length -1  '逐列设置和填入内容
    rt.Cells(0,c).Text = colnames(c) '列名作为标题
    rt.Cells(0,c).Style.TextAlignHorz = prt.AlignHorzEnum.Center '标题内容水平居中
    rt.Cols(c).Width = tb.Cols(colnames(c)).PrintWidth '列宽等于实际列宽
    ' If tb.Cols(colnames(c)).IsNumeric Then  '如果是数值或日期列
    rt.Cols(c).Style.TextAlignHorz = prt.AlignHorzEnum.Center  '数据水平靠右
    ' End  If
    Dim i As Integer = 1
    ' For r As Integer = tb.TopPosition To tb.BottomPosition '开始填入该列内容
    For r As Integer = 0 To tb.Rows.Count -1
        If tb.rows(r)("办理入库") = True Then
            rt.Cells(i, c).Text = tb.Rows(r)(colnames(c))
            i=i+1
        End If
 sum =sum + tb.rows(i)("采购总价")

    Next
Next

rt.Cells(6, 1).Text = Sum
rt.Style.Gridlines.All = New prt.Linedef(Color.Gray) '灰色网格线
rt.CellStyle.Spacing.All = 0.5  '单元格内距设为0.5毫米
rt.Rows(0).Style.TextAlignHorz = prt.AlignHorzEnum.Center '第一行内容水平居中
rt.RowGroups(0,1).Header = prt.TableHeaderEnum.All '利用行组,将第一行设为表头
doc.Body.Children.Add(rt) '将表格加入到报表

 

rt  = New prt.RenderTable '定义一个新表格
rs = New prt.RenderText() '定义一个文本对象
rs2 = New prt.RenderText()
rt1 = New prt.RenderTable() '定义一个表格对象
doc.PageSetting.PaperKind = 9 '纸张A4
Doc.PageSetting.LeftMargin = 20 '设置左边距
Doc.PageSetting.RightMargin = 20 '设置右边距
Doc.PageSetting.TopMargin = 20 '设置上边距
Doc.PageSetting.BottomMargin = 20 '设置下边距
rt.Style.Spacing.Top = 1  '表格和前面对象的垂直间隔为1毫米
rt.Style.Spacing.Bottom = 5  '表和和后续对象的垂直间隔为3毫米
rs.Text = "青铜峡市铝业学校入库单"  '设置文本对象的内容
rs.y=100
rs.Style.Font = New Font("黑体", 14) '设置文本对象的字体
rs.Style.TextAlignHorz = prt.AlignHorzEnum.Center '文本内容水平居rs.y=100
doc.Body.Children.Add(rs) '将文本对象加入到表格中
doc.Body.Children.Add(rt1) '将表格对象加入到报表中
rs2 = New prt.RenderText() '再次定义一个文本对象
rs2.Text = "第二联:保管员留存"
rs2.Style.TextAngle = -90 '顺时钟旋转45度
rs2.style.Font = New Font("楷体", 8 )
rs2.x=191
rs2.y=110
doc.Body.Children.Add(rs2) '将文本对象加入到表格中
rss = New prt.RenderText() '再次定义一个文本对象
rss.Text ="NO:"& Vars("bbbbb")
rss.style.Font = New Font("楷体", 8 )
rss.x=155
rss.y=103
doc.Body.Children.Add(rss) '将文本对象

 

'rt.Width = "Auto"  '表格宽度为自动,也就是等于各列设置宽度之和
'rt.SplitHorzBehavior = prt.SplitBehaviorEnum.SplitIfNeeded '表格宽度超出页宽时,可以水平换页
rt.Style.Font = tb.Font
rt.Height = 35
rt.Style.TextAlignHorz = prt.AlignHorzEnum.Center '水平居中
rt.Style.TextAlignVert = prt.AlignVertEnum.Center '垂直居中
rt.y=105
For c  As  Integer =  0 To Colnames.length -1  '逐列设置和填入内容
    rt.Cells(0,c).Text = colnames(c) '列名作为标题
    rt.Cells(0,c).Style.TextAlignHorz = prt.AlignHorzEnum.Center '标题内容水平居中
    rt.Cols(c).Width = tb.Cols(colnames(c)).PrintWidth '列宽等于实际列宽
    ' If tb.Cols(colnames(c)).IsNumeric Then  '如果是数值或日期列
    rt.Cols(c).Style.TextAlignHorz = prt.AlignHorzEnum.Center  '数据水平靠右
    ' End  If
    Dim i As Integer = 1
    ' For r As Integer = tb.TopPosition To tb.BottomPosition '开始填入该列内容
    For r As Integer = 0 To tb.Rows.Count -1
        If tb.rows(r)("办理入库") = True Then
            rt.Cells(i, c).Text = tb.Rows(r)(colnames(c))
            i=i+1
        End If
    Next
Next
rt.Style.Gridlines.All = New prt.Linedef(Color.Gray) '灰色网格线
rt.CellStyle.Spacing.All = 0.5  '单元格内距设为0.5毫米
rt.Rows(0).Style.TextAlignHorz = prt.AlignHorzEnum.Center '第一行内容水平居中
rt.RowGroups(0,1).Header = prt.TableHeaderEnum.All '利用行组,将第一行设为表头
doc.Body.Children.Add(rt) '将表格加入到报表
Doc.Preview


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


加好友 发短信
等级:超级版主 帖子:107813 积分:548416 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/3/23 14:57:00 [只看该作者]

……
If colnames(c) = "采购总价"
    sum =sum + tb.rows(i)("采购总价")
End If
……

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


加好友 发短信
等级:六尾狐 帖子:1495 积分:12175 威望:0 精华:0 注册:2013/3/19 16:41:00
  发帖心情 Post By:2019/3/24 20:37:00 [只看该作者]

老师您好,在您的帮助下终于设计好了入库单。但还有一个问题,就是我每个入库单只能打印6条记录,如果选择超过6条记录,入库单打出来就出错了。现在有两个办法:

1、控制选择记录数量,每次最多选6条,打印完再选。但这不知能不能控制,逻辑列点钩的数量。

2、在打印代码上设置,多于6条自动打在下一张出库单上,这应该是正确的解决办法,但我不知怎么才能实现,请老师给看看代码。

 

Dim doc  As New PrintDoc  '定义一个新报表
Dim rt  As New prt.RenderTable '定义一个新表格
Dim rs As New prt.RenderText() '定义一个文本对象
Dim rss As New prt.RenderText()
Dim rs2 As New prt.RenderText()
Dim rs3 As New prt.RenderText()
Dim rs4 As New prt.RenderText()


Dim rt1 As New prt.RenderTable() '定义一个表格对象
doc.PageSetting.PaperKind = 9 '纸张A4
Doc.PageSetting.LeftMargin = 20 '设置左边距
Doc.PageSetting.RightMargin = 20 '设置右边距
Doc.PageSetting.TopMargin = 20 '设置上边距
Doc.PageSetting.BottomMargin = 20 '设置下边距

rt.Style.Spacing.Top = 1  '表格和前面对象的垂直间隔为1毫米
rt.Style.Spacing.Bottom = 1  '表和和后续对象的垂直间隔为1毫米
rs.Text = "青铜峡市铝业学校入库单"  '设置文本对象的内容
rs.y=21
rs.Style.Font = New Font("黑体", 14) '设置文本对象的字体
rs.Style.TextAlignHorz = prt.AlignHorzEnum.Center '文本内容水平居中
doc.Body.Children.Add(rs) '将文本对象加入到表格中
doc.Body.Children.Add(rt1) '将表格对象加入到报表中
'rs2 = New prt.RenderText() '再次定义一个文本对象
rs2.Text = "第一联:报账凭证"
rs2.Style.TextAngle = -90 '顺时钟旋转45度
rs2.style.Font = New Font("楷体", 8 )
rs2.x=191
rs2.y=40
doc.Body.Children.Add(rs2) '将文本对象加入到表格中

'rss = New prt.RenderText() '再次定义一个文本对象
rss.Text ="凭证号:"& Vars("bbbbb")
rss.style.Font = New Font("楷体", 10 )
rss.x=23
rss.y=25
doc.Body.Children.Add(rss) '将文本对象


rs3 = New prt.RenderText() '再次定义一个文本对象
rs3.Text = "入库日期:" & Format(Today,"yyyy年MM月dd日")
rs3.style.Font = New Font("楷体", 10 )
rs3.x=145
rs3.y=25
doc.Body.Children.Add(rs3) '将文本对象加入到表格中

rs4.Text = "制表:   " & user.name & "                          保管员:                      采购员:"
rs4.style.Font = New Font("黑体", 10 )
rs4.x=22
rs4.y=84
doc.Body.Children.Add(rs4) '将文本对象加入到表格中


Dim sum As Integer = 0
Dim tb  As  Table = Tables("打印入库单_table1")     '.Cols("办理入库") = 'True'
Dim Colnames As String() = {"物品名称","规格型号","单位","采购数量","采购单价","采购总价","供货单位"}
'rt.Width = "Auto"  '表格宽度为自动,也就是等于各列设置宽度之和
'rt.SplitHorzBehavior = prt.SplitBehaviorEnum.SplitIfNeeded '表格宽度超出页宽时,可以水平换页
rt.Style.Font = tb.Font
rt.y=28
rt.Height = 55
rt.Cols(0).Width = 30 '设置列宽
rt.Cols(1).Width = 40
rt.Cols(2).Width = 10
rt.Cols(3).Width = 20
rt.Cols(4).Width = 10
rt.Cols(5).Width = 20
rt.Cells(6,2).SpanCols = 2 '第7行第1个单元格向右合并5列
rt.Cells(6,4).SpanCols = 3 '第7行第1个单元格向右合并5列
rt.Style.TextAlignHorz = prt.AlignHorzEnum.Center '水平居中
rt.Style.TextAlignVert = prt.AlignVertEnum.Center '垂直居中

For c  As  Integer =  0 To Colnames.length -1  '逐列设置和填入内容
    rt.Cells(0,c).Text = colnames(c) '列名作为标题
    rt.Cells(0,c).Style.TextAlignHorz = prt.AlignHorzEnum.Center '标题内容水平居中
   ' rt.Cols(c).Width = tb.Cols(colnames(c)).PrintWidth '列宽等于实际列宽
    ' If tb.Cols(colnames(c)).IsNumeric Then  '如果是数值或日期列
    rt.Cols(c).Style.TextAlignHorz = prt.AlignHorzEnum.Center  '数据水平靠右
    ' End  If
    Dim i As Integer = 1
    ' For r As Integer = tb.TopPosition To tb.BottomPosition '开始填入该列内容
    For r As Integer = 0 To tb.Rows.Count -1
        If tb.rows(r)("办理入库") = True Then
            rt.Cells(i, c).Text = tb.Rows(r)(colnames(c))
            i=i+1
            If colnames(c) = "采购总价"
                sum =sum + tb.rows(r)("采购总价")
            End If
           
        End If
       
    Next
Next
rt.Cells(0, 0).Text ="窗口名片"

rt.Cells(6, 0).Text ="合计金额"
rt.Cells(6, 1).Text ="¥"& Sum & "元"
rt.Cells(6, 2).Text ="合计金额大写"
rt.Cells(6, 4).Text =CUMoney(Sum)
rt.Style.Gridlines.All = New prt.Linedef   '灰色网格线
rt.CellStyle.Spacing.All = 0.5  '单元格内距设为0.5毫米
rt.Rows(0).Style.TextAlignHorz = prt.AlignHorzEnum.Center '第一行内容水平居中
rt.RowGroups(0,1).Header = prt.TableHeaderEnum.All '利用行组,将第一行设为表头
doc.Body.Children.Add(rt) '将表格加入到报表

 

rt  = New prt.RenderTable '定义一个新表格
rs = New prt.RenderText() '定义一个文本对象
rs2 = New prt.RenderText()
rt1 = New prt.RenderTable() '定义一个表格对象
doc.PageSetting.PaperKind = 9 '纸张A4
Doc.PageSetting.LeftMargin = 20 '设置左边距
Doc.PageSetting.RightMargin = 20 '设置右边距
Doc.PageSetting.TopMargin = 20 '设置上边距
Doc.PageSetting.BottomMargin = 20 '设置下边距
rt.Style.Spacing.Top = 1  '表格和前面对象的垂直间隔为1毫米
rt.Style.Spacing.Bottom = 5  '表和和后续对象的垂直间隔为3毫米
rs.Text = "青铜峡市铝业学校入库单"  '设置文本对象的内容
rs.y=100
rs.Style.Font = New Font("黑体", 14) '设置文本对象的字体
rs.Style.TextAlignHorz = prt.AlignHorzEnum.Center '文本内容水平居rs.y=100
doc.Body.Children.Add(rs) '将文本对象加入到表格中
doc.Body.Children.Add(rt1) '将表格对象加入到报表中
rs2 = New prt.RenderText() '再次定义一个文本对象
rs2.Text = "第二联:保管员留存"
rs2.Style.TextAngle = -90 '顺时钟旋转45度
rs2.style.Font = New Font("楷体", 8 )
rs2.x=191
rs2.y=110
doc.Body.Children.Add(rs2) '将文本对象加入到表格中
rss = New prt.RenderText() '再次定义一个文本对象
rss.Text ="NO:"& Vars("bbbbb")
rss.style.Font = New Font("楷体", 8 )
rss.x=155
rss.y=103
doc.Body.Children.Add(rss) '将文本对象

 

'rt.Width = "Auto"  '表格宽度为自动,也就是等于各列设置宽度之和
'rt.SplitHorzBehavior = prt.SplitBehaviorEnum.SplitIfNeeded '表格宽度超出页宽时,可以水平换页
rt.Style.Font = tb.Font
rt.Height = 35
rt.Style.TextAlignHorz = prt.AlignHorzEnum.Center '水平居中
rt.Style.TextAlignVert = prt.AlignVertEnum.Center '垂直居中
rt.y=105
For c  As  Integer =  0 To Colnames.length -1  '逐列设置和填入内容
    rt.Cells(0,c).Text = colnames(c) '列名作为标题
    rt.Cells(0,c).Style.TextAlignHorz = prt.AlignHorzEnum.Center '标题内容水平居中
    rt.Cols(c).Width = tb.Cols(colnames(c)).PrintWidth '列宽等于实际列宽
    ' If tb.Cols(colnames(c)).IsNumeric Then  '如果是数值或日期列
    rt.Cols(c).Style.TextAlignHorz = prt.AlignHorzEnum.Center  '数据水平靠右
    ' End  If
    Dim i As Integer = 1
    ' For r As Integer = tb.TopPosition To tb.BottomPosition '开始填入该列内容
    For r As Integer = 0 To tb.Rows.Count -1
        If tb.rows(r)("办理入库") = True Then
            rt.Cells(i, c).Text = tb.Rows(r)(colnames(c))
            i=i+1
        End If
    Next
Next
rt.Style.Gridlines.All = New prt.Linedef(Color.Gray) '灰色网格线
rt.CellStyle.Spacing.All = 0.5  '单元格内距设为0.5毫米
rt.Rows(0).Style.TextAlignHorz = prt.AlignHorzEnum.Center '第一行内容水平居中
rt.RowGroups(0,1).Header = prt.TableHeaderEnum.All '利用行组,将第一行设为表头
doc.Body.Children.Add(rt) '将表格加入到报表
Doc.Preview

[此贴子已经被作者于2019/3/24 20:37:27编辑过]

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


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

我测试没问题。请上传具体实例测试。

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