Foxtable(狐表)用户栏目专家坐堂 → 按规格固定符号拆分打印条码


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

主题:按规格固定符号拆分打印条码

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


加好友 发短信
等级:童狐 帖子:254 积分:1634 威望:0 精华:0 注册:2017/4/14 15:58:00
按规格固定符号拆分打印条码  发帖心情 Post By:2021/2/27 14:01:00 [只看该作者]

求助:按规格固定符号拆分打印条码

图片点击可在新窗口打开查看此主题相关图片如下:新建位图图像.bmp
图片点击可在新窗口打开查看


Dim doc As New PrintDoc '定义一个报表
Dim img As prt.RenderImage '定义一个图片对象
Dim Bar As New BarCodeBuilder
Bar.Symbology = Barpro.Symbology.Code39
'Bar.BarRatio = 0.8
'Bar.BarHeight = 8
Bar.Rotate = Barpro.Rotate.Degree90 '旋转条码
'Doc.Stacking = prt.StackingRulesEnum.InlineLeftToRight '分页打印


For Each r2 As Row In Tables("zzscjjzb").Rows
    If r2.IsNull("规格") = False Then '如果规格列不为空
        
        Dim nms() As String = r2("规格").Split("+") '将规格列内容拆分成数组
        
        For Each nm As String In nms '遍历参与加工此产品的每个工号
            Dim r As DataRow
            If lst.ContainsKey(nm) '如果集合中包括此工号对应的行
            r= lst(nm) '将此行赋值给变量r
            
            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 = 16 '大体大小为16磅
            rx.Style.TextAlignHorz = prt.AlignHorzEnum.Center '水平居中排列
            rx.Style.Spacing.Bottom = 3 '和下面的对象(表格)距离3毫米
            ra.Children.Add(rx) '加入到容器中
            
            '指定行数?列数?列宽?行高
            rt.Rows.Count = 7 '设置总行数
            rt.Cols.Count = 5 '设置总列数
            rt.Height = 75 '设置表格的高度
            rt.Rows(6).Height = 30 '设置第7行(显示备注的行)的高度,剩余高度被平均分排到其他行
            rt.Cols(0).Width = 26 '设置前四列的宽度,剩余的宽度被分配给5列(显示图片的那列)
            rt.Cols(1).Width = 35
            rt.Cols(2).Width = 26
            rt.Cols(3).Width = 40
            '设置合并单元格
            rt.Cells(0,4).SpanRows = 6 '第1行第5个单元格向下合并6行(用于显示照片)
            rt.Cells(4,1).SpanCols = 3 '第5行第2个单元格向右合并3列(用于显示地址)
            rt.Cells(6,0).SpanCols = 5 '第7行第1个单元格向右合并5列(用于显示备注)
            '设置表格样式
            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.Rows(6).Style.TextAlignVert = prt.AlignVertEnum.Top '唯独第7行是备注,内容靠上对齐
            '下面很简单,指定每一个单元格的内容
            rt.Cells(0,0).Text= "工单号"
            rt.Cells(0,1).Text = r2("工单号")
            rt.Cells(0,2).Text= "开工日期"
            rt.Cells(0,3).Text = r2("开工日期")
            rt.Cells(1,0).Text= "客户名称"
            rt.Cells(1,1).Text = r2("客户名称")
            rt.Cells(1,2).Text= "客户交期"
            rt.Cells(1,3).Text = r2("客户交期")
            rt.Cells(2,0).Text= "产品名称"
            rt.Cells(2,1).Text = r2("产品名称")
            rt.Cells(2,2).Text= "规格"
            rt.Cells(2,3).Text = r("规格")
            rt.Cells(3,0).Text= "颜色"
            rt.Cells(3,1).Text = r2("颜色")
            rt.Cells(3,2).Text= "数量"
            rt.Cells(3,3).Text = r2("数量")
            rt.Cells(4,0).Text= "单据备注"
            rt.Cells(4,1).Text = r2("单据备注")
            rt.Cells(5,0).Text= "套规格"
            rt.Cells(5,1).Text = r2("规格")
            rt.Cells(5,2).Text= "件数"
            rt.Cells(5,3).Text = r2("件数")
            rt.Cells(6,0).Text = r2("非标说明")
            'rt.Cells(0,4).Image = GetImage(r("img"))
            
            bar.Code = r2("_Identify")
            img = new prt.RenderImage
            img.Image = bar.GetImage
            rt.Cells(0,4).Image = bar.GetImage
            
            
            ra.Children.Add(rt) '加入到容器中
            
            Doc.Body.ChildRen.Add(ra) '将容器加入到报表中
            'Doc.Body.ChildRen.Add(img) '将容器加入到报表中
            End If 
        Next
    End If
Next




Doc.Preview() '预览报表




报错如下:


图片点击可在新窗口打开查看此主题相关图片如下:新建位图图像 (2).bmp
图片点击可在新窗口打开查看


求指点,谢谢




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


加好友 发短信
等级:童狐 帖子:254 积分:1634 威望:0 精华:0 注册:2017/4/14 15:58:00
  发帖心情 Post By:2021/2/27 14:26:00 [只看该作者]

第一张图片看不清,重新上传。

图片点击可在新窗口打开查看此主题相关图片如下:新建位图图像 (3).bmp
图片点击可在新窗口打开查看
求帮助。

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


加好友 发短信
等级:超级版主 帖子:106816 积分:543281 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/2/27 14:52:00 [只看该作者]

http://www.foxtable.com/webhelp/topics/1485.htm,看看哪一句代码出错?

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


加好友 发短信
等级:童狐 帖子:254 积分:1634 威望:0 精华:0 注册:2017/4/14 15:58:00
  发帖心情 Post By:2021/2/27 16:37:00 [只看该作者]

谢谢有点蓝老师,
错误rt.Cells(2,3).Text = r("规格"),正确的是rt.Cells(2,3).Text = nm,

还想请教下,例如数量列是2,规格列的1左+2右应该产生4个条码,要如何写?

Dim doc As New PrintDoc 
Dim img As prt.RenderImage 
Dim Bar As New BarCodeBuilder
Bar.Symbology = Barpro.Symbology.Code39
Bar.Rotate = Barpro.Rotate.Degree90 

For Each r2 As Row In Tables("zzscjjzb").Rows
    Dim nms() As String = r2("规格").Split("+") 
    
    For Each nm As String In nms 
        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 = 16
        rx.Style.TextAlignHorz = prt.AlignHorzEnum.Center 
        rx.Style.Spacing.Bottom = 3
        ra.Children.Add(rx) 
        
        rt.Rows.Count = 7
        rt.Cols.Count = 5
        rt.Height = 75 
        rt.Rows(6).Height = 30 
        rt.Cols(0).Width = 26 
        rt.Cols(1).Width = 35
        rt.Cols(2).Width = 26
        rt.Cols(3).Width = 40

        rt.Cells(0,4).SpanRows = 6 
        rt.Cells(4,1).SpanCols = 3 
        rt.Cells(6,0).SpanCols = 5 

        rt.CellStyle.Spacing.All = 1 
        rt.Style.Spacing.Bottom = 5 
        rt.Style.GridLines.All = New prt.Linedef 
        rt.Style.TextAlignVert = prt.AlignVertEnum.Center 
        rt.Rows(6).Style.TextAlignVert = prt.AlignVertEnum.Top 
        rt.Cells(0,0).Text= "工单号"
        rt.Cells(0,1).Text = r2("工单号")
        rt.Cells(0,2).Text= "开工日期"
        rt.Cells(0,3).Text = r2("开工日期")
        rt.Cells(1,0).Text= "客户名称"
        rt.Cells(1,1).Text = r2("客户名称")
        rt.Cells(1,2).Text= "客户交期"
        rt.Cells(1,3).Text = r2("客户交期")
        rt.Cells(2,0).Text= "产品名称"
        rt.Cells(2,1).Text = r2("产品名称")
        rt.Cells(2,2).Text= "规格"
        rt.Cells(2,3).Text = nm '("规格")
        rt.Cells(3,0).Text= "颜色"
        rt.Cells(3,1).Text = r2("颜色")
        rt.Cells(3,2).Text= "数量"
        rt.Cells(3,3).Text = r2("数量")


        rt.Cells(5,0).Text= "套规格"
        rt.Cells(5,1).Text = r2("规格")
        rt.Cells(5,2).Text= "件数"
        rt.Cells(5,3).Text = r2("件数")
        
        bar.Code = r2("_Identify")
        img = new prt.RenderImage
        img.Image = bar.GetImage
        rt.Cells(0,4).Image = bar.GetImage
        
        ra.Children.Add(rt) 
        
        Doc.Body.ChildRen.Add(ra) 
    Next
Next

Doc.Preview() 


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


加好友 发短信
等级:超级版主 帖子:106816 积分:543281 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/2/27 17:17:00 [只看该作者]

For Each r2 As Row In Tables("zzscjjzb").Rows
    Dim nms() As String = r2("规格").Split("+") 
    for k as integer = 1 to r2("数量") 加一个循环
    For Each nm As String In nms 

 回到顶部