以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  如何把二维码标签按顺序一个个打印出来?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=130079)

--  作者:ycwk
--  发布时间:2019/1/12 13:47:00
--  如何把二维码标签按顺序一个个打印出来?
我要把一张表里的几千条记录都制作成带二维码的标签,用 PrintDoc 报表的方式,无法连接标签打印机一个个的打印吧? 要怎么才能排列号用标签打印机,一个个的打印出来?而不是挤在一张纸上排列很多个?



--  作者:ycwk
--  发布时间:2019/1/12 13:49:00
--  
用这种方式是最好的吗?
http://www.foxtable.com/webhelp/index.htm?page=1239.htm
--  作者:有点蓝
--  发布时间:2019/1/12 14:47:00
--  
就是这种方式,指定纸张大小,每页打印一个标签即可:http://www.foxtable.com/webhelp/scr/1191.htm
--  作者:ycwk
--  发布时间:2019/1/14 8:20:00
--  
问题一:
我有几千个标签要打印,为了避免中途中断后,不知道从何处开始,请问怎么记录当前打印到哪一张标签了?

问题二:

       如何设置二维码在表格的cell里面水平,垂直居中?


Dim doc As New PrintDoc \'定义一个报表
doc.PageSetting.Width = 80 \'纸张宽度为80毫米
doc.PageSetting.Height = 50 \'纸张高度为50毫米

Doc.PageSetting.LeftMargin = 2 \'设置左边距
Doc.PageSetting.RightMargin = 2 \'设置右边距
Doc.PageSetting.TopMargin = 2 \'设置上边距
Doc.PageSetting.BottomMargin = 2 \'设置下边距
\'rt.Width = "Parent.Width" \'对象宽度等于页面宽度
\'rt.Height = "Parent.Height" \'对象高度等于页面高度
\'rt.Style.Borders.All = New prt.Linedef(1, Color.Red) \'设置边框
\'doc.Body.Children.Add(rt) \'将文本对象加入到报表


\'doc.PageSetting.Landscape = True \'横向打印
\'doc.Preview() \'预览


Dim rg As prt.RenderGraphics
Dim Bar As New BarCodeBuilder
Dim tbl As Table = Tables("资产管理表")
tbl.Filter=""
\'For i As Integer = tbl.TopRow To tbl.BottomRow
For i As Integer = 0 To tbl.Rows.Count
\'For Each rw As Row In Tables("资产管理表").Rows
    \'Dim Filter As String 
    \'Filter = "项目 = \'" & dr1("项目") & "\' And 日期 <= #" & dr1("日期") & "#"
    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 \'定义一个容器
    ra.SplitVertBehavior = prt.SplitBehaviorEnum.Never  \'禁止容器因为分页而被垂直分割
    \'加入标题
    rx.text = "资产标签"
    rx.Style.FontBold = True \'字体加粗
    rx.Style.FontSize = 12 \'大体大小为16磅
    rx.Style.TextAlignHorz = prt.AlignHorzEnum.Center \'水平居中排列
    rx.Style.Spacing.Bottom = 3 \'和下面的对象(表格)距离3毫米
    ra.Children.Add(rx) \'加入到容器中
    \'指定行数?列数?列宽?行高
    \'rt.Rows.Count = 4 \'设置总行数   感觉要不要都差不多,因为下面的cells 多了这里设置的数字不起作用
    rt.Cols.Count = 3 \'设置总列数
    rt.Height = 44 \'设置表格的高度   太大就撑出去
    rt.Cols(0).Width = 25 \'设置前四列的宽度,剩余的宽度被分配给5列(显示图片的那列)
    rt.Cols(1).Width = 48
    rt.Cols(2).Width = 30
   \' rt.Cols(3).Width = 40
    \'设置合并单元格
    rt.Cells(0,1).SpanCols = 2 \'第1行第2个单元格向右合并2列
    rt.Cells(1,1).SpanCols = 2 \'第2行第3个单元格向右合并2列
    \'rt.Cells(2,1).SpanCols = 2 \'第3行第2个单元格向右合并2列
    rt.Cells(2,2).SpanRows = 3 \'第4行第3个单元格向下合并2行(用于显示二维码)
    \'rt.Cells(4,1).SpanCols = 2 \'第5行第2个单元格向右合并2列(用于显示备注)
    \'设置二维码
    bar.Symbology = Barpro.Symbology.QRCode
    bar.Code = rw("资产卡片号")
    rg = new prt.RenderGraphics
    bar.DrawOnCanvas(rg.Graphics,0,0,0.8)
    \'设置表格样式
    rt.CellStyle.Spacing.All = 1 \'单元格内容缩进1毫米
    rt.Style.Spacing.Bottom = 5 \'和下一个资料卡的距离是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("资产卡片号")


    rt.Cells(1,0).Text= "所在位置:"
    rt.Cells(1,1).Text =rw("所在楼") & "   " & rw("所在科室") & "   " & rw("所在房间")
    
    rt.Cells(2,0).Text= "资产名称:"
    rt.Cells(2,1).Text = rw("资产名称") & "   " & rw("资产型号")


    rt.Cells(3,0).Text= "资产归属:"
    rt.Cells(3,1).Text = rw("资产归属")
     
    rt.Cells(4,0).Text= "IP地址:"
    rt.Cells(4,1).Text = rw("IP地址")

    rg = new prt.RenderGraphics
    bar.DrawOnCanvas(rg.Graphics,0,0,0.8)
    rt.Cells(2,2).RenderObject = rg   \'在第2行,第3列显示二维码
    \'rg.Style.TextAlignVert   =  .AlignVertEnum.Center      这里要怎么写?

 
    ra.Children.Add(rt) \'加入到容器中
    Doc.Body.ChildRen.Add(ra) \'将容器加入到报表中
Next
Doc.Preview() \'预览报表
[此贴子已经被作者于2019/1/14 8:29:40编辑过]

--  作者:有点甜
--  发布时间:2019/1/14 9:03:00
--  

1、加一个辅助列,打印以后,就勾选。或者单独用一个变量记录打印到了哪个位置。

 

2、

 

Dim doc As New PrintDoc \'定义一个报表
Dim rt As New prt.RenderTable() \'定义一个表格对象
doc.Body.Children.Add(rt) \'将表格对象加入到报表中
\'下面的代码向表格中填入值
For r As Integer = 0 To 5
    Dim rg As prt.RenderGraphics
    Dim Bar As New BarCodeBuilder
    Bar.Symbology = Barpro.Symbology.QRCode
    Doc.Stacking = prt.StackingRulesEnum.InlineLeftToRight
    bar.Code = 123
    rg = new prt.RenderGraphics
    bar.DrawOnCanvas(rg.Graphics,0,0,1)
    rg.Style.Spacing.All = 3
    rt.Cells(r, 2).RenderObject = rg
    rt.Cells(r, 2).Style.ImageAlign.AlignHorz = prt.ImageAlignHorzEnum.Center
Next
rt.Style.GridLines.All = New prt.Linedef \'设置网格线
doc.Preview() \'预览报表


--  作者:ycwk
--  发布时间:2019/1/14 10:11:00
--  
上面 这段代码执行后,不是把所有要打印的标签都预览出来了吗?  怎么在打印的时候控制写表啊?
--  作者:有点甜
--  发布时间:2019/1/14 10:36:00
--  
以下是引用ycwk在2019/1/14 10:11:00的发言:
上面 这段代码执行后,不是把所有要打印的标签都预览出来了吗?  怎么在打印的时候控制写表啊?

 

rw("已打印") = true


--  作者:ycwk
--  发布时间:2019/1/14 15:05:00
--  
我想在打印标签的时候,通过“资产编号”字段关联其它表,显示其它表的字段?  请问代码要怎么写?
--  作者:ycwk
--  发布时间:2019/1/14 15:20:00
--  
http://www.foxtable.com/webhelp/scr/1241.htm  吗?还有其它方法没?
--  作者:有点甜
--  发布时间:2019/1/14 15:38:00
--  
以下是引用ycwk在2019/1/14 15:05:00的发言:
我想在打印标签的时候,通过“资产编号”字段关联其它表,显示其它表的字段?  请问代码要怎么写?

 

通过find查找或者select查找到数据后处理

 

http://www.foxtable.com/webhelp/scr/0396.htm