Foxtable(狐表)用户栏目专家坐堂 → 打印标签如何能根据数量打印


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

主题:打印标签如何能根据数量打印

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


加好友 发短信
等级:幼狐 帖子:146 积分:1808 威望:0 精华:0 注册:2016/5/10 15:59:00
打印标签如何能根据数量打印  发帖心情 Post By:2019/10/28 15:36:00 [只看该作者]

老师,我写一个测试程序,怎么根据每行数据里的数量打印标签,比如产品数量是10,就打印10个标签,还有就如何也把条码也可以根据报表绑定的方式显示出来。窗口中我也设置了一个按钮。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:打印标签.foxdb


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


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

这种不能使用绑定,写代码遍历打印

Dim doc As New PrintDoc '定义一个报表
Doc.PageSetting.LeftMargin = 0 '设置左边距
Doc.PageSetting.RightMargin = 0 '设置右边距
Doc.PageSetting.TopMargin = 0 '设置上边距
Doc.PageSetting.BottomMargin = 0 '设置下边距
Doc.PageSetting.Width = 40
Doc.PageSetting.Height= 40
'Doc.Stacking = prt.StackingRulesEnum.InlineLeftToRight
Dim ra As New prt.RenderArea
Dim rx As prt.RenderText '定义一个文本对象
Dim rm As prt.RenderImage '定义一个图形队形
Dim Currow As Row
Dim tbl As Table = Tables("表A")
For i As Integer = 0 To tbl.Rows.Count - 1
    CurRow = tbl.rows(i)
    For j As Integer = 1 To CurRow("数量")
        Dim rep As New prt.RenderEmpty '定义一个新的空对象
        rep.BreakBefore = prt.BreakEnum.Page '打印前换页
        doc.Body.Children.Add(rep ) '加入到报表中
        
        rx = new prt.RenderText
        rx.Text = CurRow("名称")
        rx.x = 1
        rx.y = 1
        doc.body.Children.Add(rx)
        
        rx = new prt.RenderText
        rx.Text = CurRow("条码")
        rx.x = 1
        rx.y = 5
        doc.body.Children.Add(rx)
    Next
Next
Doc.Preview() '预览报表

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


加好友 发短信
等级:幼狐 帖子:146 积分:1808 威望:0 精华:0 注册:2016/5/10 15:59:00
  发帖心情 Post By:2019/10/28 17:05:00 [只看该作者]

首先,谢谢老师,我现在把条码也加入里面了,但是怎么能实现一张A4打印多列标签呢
Dim doc As New PrintDoc '定义一个报表
Doc.PageSetting.LeftMargin = 0 '设置左边距
Doc.PageSetting.RightMargin = 0 '设置右边距
Doc.PageSetting.TopMargin = 0 '设置上边距
Doc.PageSetting.BottomMargin = 0 '设置下边距
Doc.PageSetting.Width = 40
Doc.PageSetting.Height= 40

Dim rg As prt.RenderGraphics
Dim Bar As New BarCodeBuilder
'Bar.Symbology = Barpro.Symbology.QRCode
Bar.Symbology = Barpro.Symbology.Code39

'Doc.Stacking = prt.StackingRulesEnum.InlineLeftToRight
Dim ra As New prt.RenderArea
Dim rx As prt.RenderText '定义一个文本对象
Dim rm As prt.RenderImage '定义一个图形队形
Dim Currow As Row
Dim tbl As Table = Tables("表A")
For i As Integer = 0 To tbl.Rows.Count - 1
    CurRow = tbl.rows(i)
    For j As Integer = 1 To CurRow("数量")
        Dim rep As New prt.RenderEmpty '定义一个新的空对象
        rep.BreakBefore = prt.BreakEnum.Page '打印前换页
        doc.Body.Children.Add(rep ) '加入到报表中
        
        rx = new prt.RenderText
        rx.Text = CurRow("名称")
        rx.x = 1
        rx.y = 1
        doc.body.Children.Add(rx)
        bar.Code = CurRow("条码")
        rg = new prt.RenderGraphics
        bar.DrawOnCanvas(rg.Graphics,2,3,1)
        rg.Style.Spacing.All = 3
        Doc.Body.Children.Add(rg)
        
    Next
Next
Doc.Preview() '预览报表

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


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

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

Doc.PageSetting.TopMargin = 5 '设置上边距
Doc.PageSetting.BottomMargin = 5 '设置下边距
'Doc.Stacking = prt.StackingRulesEnum.InlineLeftToRight
Dim ra As New prt.RenderArea
Dim rx As prt.RenderText '定义一个文本对象
Dim rm As prt.RenderImage '定义一个图形队形
Dim Currow As Row
Dim tbl As Table = Tables("表A")
Dim rep As prt.RenderEmpty
Dim idx As Integer = 0
Dim kk As Integer = 0
For i As Integer = 0 To tbl.Rows.Count - 1
    CurRow = tbl.rows(i)
    For j As Integer = 1 To CurRow("数量") Step 4
        For k As Integer = 0 To math.min(3,CurRow("数量") - j)
            If kk > 3 Then
                kk = 0
                idx += 1
            End If
            If idx > 6 Then
                rep  = New prt.RenderEmpty '定义一个新的空对象
                rep.BreakBefore = prt.BreakEnum.Page '打印前换页
                doc.Body.Children.Add(rep ) '加入到报表中
                kk = 0
                idx = 0
            End If

            rx = new prt.RenderText
            rx.SplitVertBehavior = prt.SplitBehaviorEnum.Never
            rx.Text = CurRow("名称")
            rx.x = kk * 50 + 5
            rx.y =  idx * 40 + 5
            doc.body.Children.Add(rx)
            
            rx = new prt.RenderText
            rx.Text = CurRow("条码")
            rx.x = kk * 50 + 5
            rx.y = idx * 40 + 15
            doc.body.Children.Add(rx)
            kk += 1
        Next
    Next
Next
Doc.Preview() '预览报表

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


加好友 发短信
等级:幼狐 帖子:146 积分:1808 威望:0 精华:0 注册:2016/5/10 15:59:00
  发帖心情 Post By:2019/10/29 8:30:00 [只看该作者]

首先,谢谢老师,您实现的就是我要的效果,但是我加入了条码,就不能把条码显示到对应的每一个标签上来了。您帮我看一下
Dim doc As New PrintDoc '定义一个报表

Doc.PageSetting.TopMargin = 5 '设置上边距
Doc.PageSetting.BottomMargin = 5 '设置下边距
'Doc.Stacking = prt.StackingRulesEnum.InlineLeftToRight
Dim ra As New prt.RenderArea
Dim rx As prt.RenderText '定义一个文本对象
Dim rm As prt.RenderImage '定义一个图形队形
Dim Currow As Row
Dim tbl As Table = Tables("表A")
Dim rep As prt.RenderEmpty
Dim idx As Integer = 0
Dim kk As Integer = 0
For i As Integer = 0 To tbl.Rows.Count - 1
    CurRow = tbl.rows(i)
    For j As Integer = 1 To CurRow("数量") Step 4
        For k As Integer = 0 To math.min(3,CurRow("数量") - j)
            If kk > 3 Then
                kk = 0
                idx += 1
            End If
            If idx > 6 Then
                rep  = New prt.RenderEmpty '定义一个新的空对象
                rep.BreakBefore = prt.BreakEnum.Page '打印前换页
                doc.Body.Children.Add(rep ) '加入到报表中
                kk = 0
                idx = 0
            End If
            
            rx = new prt.RenderText
            rx.SplitVertBehavior = prt.SplitBehaviorEnum.Never
            rx.Text = CurRow("名称")
            rx.x = kk * 50 + 5
            rx.y =  idx * 40 + 5
            doc.body.Children.Add(rx)
            Dim rg As prt.RenderGraphics
            Dim Bar As New BarCodeBuilder
            'Bar.Symbology = Barpro.Symbology.QRCode
            Bar.Symbology = Barpro.Symbology.Code39
            bar.Code = CurRow("条码")
            rg = new prt.RenderGraphics
            bar.DrawOnCanvas(rg.Graphics,kk*50+5,idx*40+15,1)
            rg.Style.Spacing.All = 3
            
            'rx = new prt.RenderText
            'rx.Text = CurRow("条码")
            'rx.x = kk * 50 + 5
            'rx.y = idx * 40 + 15
            doc.body.Children.Add(rg)
            kk += 1
        Next
    Next
Next
Doc.Preview() '预览报表

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


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

            rx = new prt.RenderText
            rx.SplitVertBehavior = prt.SplitBehaviorEnum.Never
            rx.Text = CurRow("名称")
            rx.x = kk * 50 + 5
            rx.y =  idx * 40 + 5
            doc.body.Children.Add(rx)
            Dim rg As prt.RenderGraphics
            Dim Bar As New BarCodeBuilder
            'Bar.Symbology = Barpro.Symbology.QRCode
            Bar.Symbology = Barpro.Symbology.Code39
            bar.Code = CurRow("条码")
            rg = new prt.RenderGraphics
            bar.DrawOnCanvas(rg.Graphics,0,0,1)
            rg.Style.Spacing.All = 3
            rg.x = kk * 50 + 5
            rg.y = idx * 40 + 15
            doc.body.Children.Add(rg)
            kk += 1

 回到顶部