Foxtable(狐表)用户栏目专家坐堂 → 如何把二维码标签按顺序一个个打印出来?


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

主题:如何把二维码标签按顺序一个个打印出来?

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


加好友 发短信
等级:六尾狐 帖子:1228 积分:8561 威望:0 精华:0 注册:2016/2/2 21:52:00
如何把二维码标签按顺序一个个打印出来?  发帖心情 Post By:2019/1/12 13:47:00 [显示全部帖子]

我要把一张表里的几千条记录都制作成带二维码的标签,用 PrintDoc 报表的方式,无法连接标签打印机一个个的打印吧? 要怎么才能排列号用标签打印机,一个个的打印出来?而不是挤在一张纸上排列很多个?



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


加好友 发短信
等级:六尾狐 帖子:1228 积分:8561 威望:0 精华:0 注册:2016/2/2 21:52:00
  发帖心情 Post By:2019/1/12 13:49:00 [显示全部帖子]

用这种方式是最好的吗?
http://www.foxtable.com/webhelp/index.htm?page=1239.htm

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


加好友 发短信
等级:六尾狐 帖子:1228 积分:8561 威望:0 精华:0 注册:2016/2/2 21:52:00
  发帖心情 Post By: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编辑过]

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


加好友 发短信
等级:六尾狐 帖子:1228 积分:8561 威望:0 精华:0 注册:2016/2/2 21:52:00
  发帖心情 Post By:2019/1/14 10:11:00 [显示全部帖子]

上面 这段代码执行后,不是把所有要打印的标签都预览出来了吗?  怎么在打印的时候控制写表啊?

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


加好友 发短信
等级:六尾狐 帖子:1228 积分:8561 威望:0 精华:0 注册:2016/2/2 21:52:00
  发帖心情 Post By:2019/1/14 15:05:00 [显示全部帖子]

我想在打印标签的时候,通过“资产编号”字段关联其它表,显示其它表的字段?  请问代码要怎么写?

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


加好友 发短信
等级:六尾狐 帖子:1228 积分:8561 威望:0 精华:0 注册:2016/2/2 21:52:00
  发帖心情 Post By:2019/1/14 15:20:00 [显示全部帖子]

http://www.foxtable.com/webhelp/scr/1241.htm  吗?还有其它方法没?

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


加好友 发短信
等级:六尾狐 帖子:1228 积分:8561 威望:0 精华:0 注册:2016/2/2 21:52:00
  发帖心情 Post By:2019/1/14 16:01:00 [显示全部帖子]

我要两个表联合查询,用cmd.CommandText   怎么写啊?   

s elect * from  资产管理表 a,电脑终端管理表 b
where a.资产卡片号 is not null and a.资产卡片号<>'N'
and a.资产卡片号=b.资产卡片号


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


加好友 发短信
等级:六尾狐 帖子:1228 积分:8561 威望:0 精华:0 注册:2016/2/2 21:52:00
  发帖心情 Post By:2019/1/18 11:14:00 [显示全部帖子]

这段代码,在哪里 触发记录打印状态啊。

Dim cmd As New SQLCommand '定义一个SQL命令
cmd.C
Dim dt As DataTable '定义一个数据表变量


'注意下面的SQL,如果以后取消资产管理表的"所在科室"字段了,则要把order by 相应的改一下

cmd.CommandText = "s elect a.资产卡片号,a.所在楼,a.所在科室,a.所在房间,a.型号,a.资产归属,a.内网_IP,a.外网_IP from {电脑终端管理表} As a left join {资产管理表} As b on a.资产卡片号=b.资产卡片号 where a.资产卡片号 Is not null  order by a.所在科室,a._identify" 
dt = cmd.ExecuteReader() '生成一个临时表


Dim doc As New PrintDoc '定义一个报表
doc.PageSetting.Width = 70 '纸张宽度为80毫米
doc.PageSetting.Height = 40 '纸张高度为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) '将文本对象加入到报表


Dim rg As prt.RenderGraphics
Dim Bar As New BarCodeBuilder
'Dim tbl As Table = Tables("资产管理表")
'tbl.Filter=""
'For i As Integer = 0 To tbl.Rows.Count
For i As Integer=0 To dt.DataRows.Count-1
    'Dim Filter As String 
    'Filter = "项目 = '" & dr1("项目") & "' And 日期 <= #" & dr1("日期") & "#"
    'Dim rw As DataRow  = dt.DataRows(i)   '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 = 11 '字体大体大小为16磅
    rx.Style.TextAlignHorz = prt.AlignHorzEnum.Center '水平居中排列
    rx.Style.Spacing.Bottom = 1 '表标题和下面的对象(表格)距离3毫米
    ra.Children.Add(rx) '加入到容器中
    '指定行数?列数?列宽?行高
    'rt.Rows.Count = 4 '设置总行数   感觉要不要都差不多,因为下面的cells 多了这里设置的数字不起作用
    rt.Cols.Count = 3 '设置总列数
    rt.Height = 36 '设置表格的高度   太大就撑出去了
    'rt.Rows(3).Height = 8 '设置第4行(显示二维码)的高度,剩余高度被平均分排到其他行
    'rt.Rows(4).Height = 8 '设置第5行(显示二维码)的高度,剩余高度被平均分排到其他行
    rt.Cols(0).Width = 23 '设置前三列的宽度,剩余的宽度被分配给5列(显示图片的那列)
    rt.Cols(1).Width = 48
    rt.Cols(2).Width = 25
   ' rt.Cols(3).Width = 40
    '设置合并单元格
    rt.Cells(0,1).SpanCols = 2 '第1行第2个单元格向右合并2列
    rt.Cells(1,1).SpanCols = 2 '第2行第2个单元格向右合并2列
    rt.Cells(2,1).SpanCols = 2 '第3行第2个单元格向右合并2列
    rt.Cells(3,2).SpanRows = 2 '第4行第3个单元格向下合并2行(用于显示二维码)
    'rt.Cells(4,1).SpanCols = 2 '第5行第2个单元格向右合并2列(用于显示备注)
    '设置二维码
    bar.Symbology = Barpro.Symbology.QRCode
    bar.Code = dt.DataRows(i)("资产卡片号")
    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.Font = New Font("宋体", 8, FontStyle.Regular) '设置字体
   ' rt.Style.TextAlignVert = prt.AlignVertEnum.Center '内容垂直居中
  '  rt.Rows(6).Style.TextAlignVert = prt.AlignVertEnum.Top '唯独第7行是备注,内容靠上对齐
    '下面很简单,指定每一个单元格的内容
    rt.Cells(0,0).Text= "资产编号:"
    rt.Cells(0,1).Text = dt.DataRows(i)("资产卡片号")


    rt.Cells(1,0).Text= "所在位置:"
    rt.Cells(1,1).Text =dt.DataRows(i)("所在楼") & "  " & dt.DataRows(i)("所在科室") & "  " & dt.DataRows(i)("所在房间")

    rt.Cells(2,0).Text= "IP地址:"    '下面代码是兼顾有一个IP和两个IP的
    If dt.DataRows(i).IsNull("内网_IP")=True  And dt.DataRows(i).IsNull("外网_IP")=False  Then
        rt.Cells(2,1).Text = dt.DataRows(i)("外网_IP")
    ElseIf dt.DataRows(i).IsNull("内网_IP")=False And dt.DataRows(i).IsNull("外网_IP")=True Then
        rt.Cells(2,1).Text = dt.DataRows(i)("内网_IP")
    ElseIf dt.DataRows(i).IsNull("内网_IP")=False And dt.DataRows(i).IsNull("外网_IP")=False Then
        rt.Cells(2,1).Text = dt.DataRows(i)("内网_IP") & "/" & dt.DataRows(i)("外网_IP")        
    Else
        rt.Cells(2,1).Text = "无"
    End If
    
    rt.Cells(3,0).Text= "资产归属:"
    rt.Cells(3,1).Text = dt.DataRows(i)("资产归属")
     
    rt.Cells(4,0).Text= "资产名称:"
    rt.Cells(4,1).Text = "电脑主机"     'dt.DataRows(i)("资产名称")      '& "  " & dt.DataRows(i)("资产型号")

   ' rg = new prt.RenderGraphics
   ' bar.DrawOnCanvas(rg.Graphics,0,0,0.8)
    rt.Cells(3,2).RenderObject = rg   '在第4行,第3列显示二维码
   ' rg.Style.TextAlignVert  = prt.AlignVertEnum.Center 
   ' rg.Style.Padding.Top=2    '二维码和上表格线 距离2mm
    rt.Cells(3, 2).Style.ImageAlign.AlignHorz = prt.ImageAlignHorzEnum.Center   '设置二维码在表格内水平居中
    rt.Cells(3, 2).Style.ImageAlign.AlignVert = prt.ImageAlignVertEnum.Center   '设置二维码在表格内垂直居中
  ' rt.Cells(5,2).Text= "办公电话"
  ' rt.Cells(5,3).Text = rw("办公电话")
  ' rt.Cells(6,0).Text = rw("备注")
   ' rt.Cells(0,4).Image = GetImage(rw("照片"))
    ra.Children.Add(rt) '加入到容器中
    Doc.Body.ChildRen.Add(ra) '将容器加入到报表中
Next
Doc.Preview() '预览报表
[此贴子已经被作者于2019/1/18 11:24:09编辑过]

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


加好友 发短信
等级:六尾狐 帖子:1228 积分:8561 威望:0 精华:0 注册:2016/2/2 21:52:00
  发帖心情 Post By:2019/1/18 11:24:00 [显示全部帖子]

但是这段代码只是调用报表预览出这一堆标签啊,假如打印过程中中断了怎么办呢? 比如:因为卡纸,要重打几张,但是由于一预览就全部标记为已打印了,那我就不知道卡在哪里了
[此贴子已经被作者于2019/1/18 11:25:29编辑过]

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


加好友 发短信
等级:六尾狐 帖子:1228 积分:8561 威望:0 精华:0 注册:2016/2/2 21:52:00
  发帖心情 Post By:2019/1/18 11:41:00 [显示全部帖子]

分页打印 帮助看哪里?

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