以文本方式查看主题 - Foxtable(狐表) (http://www.foxtable.com/bbs/index.asp) -- 专家坐堂 (http://www.foxtable.com/bbs/list.asp?boardid=2) ---- 按规格固定符号拆分打印条码 (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=160953) |
-- 作者:myjht -- 发布时间:2021/2/27 14:01:00 -- 按规格固定符号拆分打印条码 求助:按规格固定符号拆分打印条码 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() \'预览报表 报错如下: 求指点,谢谢 |
-- 作者:myjht -- 发布时间:2021/2/27 14:26:00 -- 第一张图片看不清,重新上传。 求帮助。
|
-- 作者:有点蓝 -- 发布时间:2021/2/27 14:52:00 -- http://www.foxtable.com/webhelp/topics/1485.htm,看看哪一句代码出错? |
-- 作者:myjht -- 发布时间: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() |
-- 作者:有点蓝 -- 发布时间: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
|