Как показать изображение blob-объекта в программе просмотра отчетов cristal
Привет,
Я использую VB.NET в visual studio 2012.
У меня есть форма, которая содержит datagridview, картинку и печать кнопки.
Я создал средство просмотра отчетов cristal для печати содержимого datagridview и изображения, для этого я добавил datatable в witch я добавил поля для столбцов datagridview и поле для изображения (тип поля изображения-байты ()).
Проблема в том, что отображаются все поля datagridview, но изображение не отображается.
Что я уже пробовал:
Когда я нажимаю на кнопку Печать, содержимое datagridview отображается в окне просмотра отчетов Cristal, но изображение не отображается ( я уже перетащил поле изображения в datatable в окно просмотра отчетов cristal, как и в случае с другими полями).
Я попробовал другой метод, который заключается в создании pivcture в представлении отчета Cristal >> Right Clic >> Format Object >> Picture >> X2 >> double clic на поле изображения в datatable . Также с помощью этого метода я получил ошибку "поле blob не может быть использовано в Формуле".
Это код кнопки печати :
Dim dt As New DataTable With dt .Columns.Add("code") .Columns.Add("productnom") .Columns.Add("category") .Columns.Add("supplier") .Columns.Add("qte") .Columns.Add("Image", GetType(Byte())) End With pathUrl = Application.StartupPath & "\logo.png" Dim img As Image = Image.FromFile(pathUrl) Dim dr As DataRow = dt.NewRow() dr("Image") = imageToByteArray(img) ' The function imageToByteArray is already created dt.Rows.Add(dr) For Each dgr As DataGridViewRow In Me.Datagridview1.Rows dt.Rows.Add(dgr.Cells(0).Value, dgr.Cells(1).Value, dgr.Cells(2).Value, dgr.Cells(3).Value, dgr.Cells(4).Value) Next Dim reportDocument As CrystalDecisions.CrystalReports.Engine.ReportDocument reportDocument = New CrystalReport1 reportDocument.SetDataSource(dt) FormPrint.CrystalReportViewer1.ReportSource = reportDocument FormPrint.ShowDialog() FormPrint.Dispose()
А код функции imageToByteArray таков :
Public Function imageToByteArray(imageIn As System.Drawing.Image) As Byte() Dim ms As New MemoryStream() imageIn.Save(ms, System.Drawing.Imaging.ImageFormat.Gif) Return ms.ToArray() End Function
Плз, если бы кто-нибудь мог мне помочь . Спасибо