这段代码,在哪里 触发记录打印状态啊。
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编辑过]