一个label就是一条detail,分布成4列16行,用A4纸打印。
这与通常的报表有点不一样,通常报表的明细都是一条一行;而现在要每4条放在一行,这需要用到“多列格式化”属性。
先说打印条码的吧,条码图片怎么来?
下载生成条码的exe文件Barcode.exe以及dll文件Zen.Barcode.Core.dll,通过shell函数调用执行Barcode.exe文件生成条码图片
在给报表传数的table里面插入条码图片:
Private Sub AddBarcodeImages(ByVal DTab As DataTable)If Not DTab Is Nothing ThenDTab.Columns.Add("BCIMAGE", Type.GetType("System.Byte[]"))Dim r As DataRowFor Each r In DTab.RowsTryDim BatchNo As String = r.Item("Line_No") & "-" & CStr(r.Item("Operator")).TrimDim sFileName As String = "C:\TEMP\" & BatchNo & ".jpg"Shell("Barcode.exe " & BatchNo & " 36", AppWinStyle.NormalFocus, True)Dim fs As IO.FileStream = New IO.FileStream(sFileName, IO.FileMode.Open)Dim fi As IO.FileInfo = New IO.FileInfo(sFileName)Dim fl As Long = fi.LengthDim lung As Integer = Convert.ToInt32(fl)Dim imgBytes As Byte() = New Byte(lung - 1) {}fs.Read(imgBytes, 0, lung)fs.Close()r.Item("BCIMAGE") = imgBytesDim f As IO.FileTryf.Delete(sFileName)Catch ex As ExceptionConsole.WriteLine(ex.ToString)End TryCatch ex As Exception'MessageBox.Show(ex.ToString)End TryNextEnd IfEnd Sub
获取条码图片后传递数据给报表,报表的设计: