使用RDLC与CobainBarCode控件
问题和主要技巧说明:
1、RDLC动态调用数据
Dim frm As New Report
Dim command1 As New OleDbCommand("select * from Out_Plan_Temp where 区分='" & ComboBox1.Text & "'", mdbcon)
Dim ada1 As New OleDbDataAdapter(command1)
Dim dt1 As New DataSet()
ada1.Fill(dt1, "Out_Plan_Temp")
frm.ReportViewer1.LocalReport.ReportEmbeddedResource = "Murata_Label.Report1.rdlc"
frm.ReportViewer1.LocalReport.DataSources.Add(New Microsoft.Reporting.WinForms.ReportDataSource("myds", dt1.Tables("Out_Plan_Temp")))
frm.ReportViewer1.SetDisplayMode(Microsoft.Reporting.WinForms.DisplayMode.PrintLayout)
frm.Show()
*特别注意:RDLC的动态数据一定要在显示报表前添加,否则使用打印预览时,页数多了,会出现少页的现象!
这样可以通过SQL语句动态加载报表中的数据
2、将条码以图片形式保存在数据库中
我使用的是ACCESS数据库,需要将字段选择为:OLE对象
将生成的条码以图片的形式保存在数据库中
Dim stream As New System.IO.MemoryStream
BarcodeControl1.Data = Trim("3N4" & Trim(rw("产品代码")) & " " & shulian)
BarcodeControl1.TextPosition = Cobainsoft.Windows.Forms.BarcodeTextPosition.NotShown
BarcodeControl1.MakeImage(System.Drawing.Imaging.ImageFormat.Png, 1, 50, True, False, Nothing, stream)
Dim img As New ImageConverter
Dim imag As System.Drawing.Image = System.Drawing.Image.FromStream(stream)
Dim imgdate As Byte() = img.ConvertTo(imag, GetType(Byte()))
stream.Close()
temprw("T处理") = imgdate
流程为:设置barcodecontrol1中要形成条码的数据,将条码数据转换为图片,保存到内存中,从内容中取出图片,保存到数据库中,释放内存
3、条码在RDLC中显示出来
将图像控件添加到RDLC中,设置其:source为database,value为=Fields!T处理.Value
这些完成后,会在报表中显示出来