Добавить изображение в отчеты Crystal с vb.net - PullRequest
0 голосов
/ 22 декабря 2011

У меня проблема, я пытаюсь программно заменить изображение с vb.net в отчетах Crystal.

вот что я делаю:

Dim facturacion As New dtFactura()
rowDatosFactura.Logo = "F:\imgtest.png"
facturacion.DatosFactura.AddDatosFacturaRow(rowDatosFactura)

я установил путь к изображению в наборе данных

затем добавьте строку в набор данных te, чтобы заменить изображение в отчетах Crystal

в отчетах cyrstal я добавил объект ole picture

внутри объекта я изменил формулу с этим

{DatosFactura.Logo}

это то, что у меня есть в редакторе формул для объекта рисунка, но когда я запускаю код, он не заменяет изображение.

Я создаю отчет таким образом

 Dim _factura As New Factura()
 Private _datosreporte As dtFactura
 _factura.SetDataSource(_datosreporte)
 crwFactura.ReportSource = _factura
 crwFactura.ToolPanelView = CrystalDecisions.Windows.Forms.ToolPanelViewType.None

есть идеи, что делать?

Edit1: я проверил набор данных, и он не пустой, он содержит путь, который я установил

1 Ответ

2 голосов
/ 23 декабря 2011

Я нашел решение для тех, у кого такая же проблема.

главное - преобразовать изображение в byte ()

, а затем передать byte () в строку, напримерэто

rowDatosFactura.Logo = ConvertImageFiletoBytes("F:\logo.jpg")

метод преобразования изображения в байты это

 Public Function ConvertImageFiletoBytes(ByVal ImageFilePath As String) As Byte()
        Dim _tempByte() As Byte = Nothing
        If String.IsNullOrEmpty(ImageFilePath) = True Then
            Throw New ArgumentNullException("Image File Name Cannot be Null or Empty", "ImageFilePath")
            Return Nothing
        End If
        Try
            Dim _fileInfo As New IO.FileInfo(ImageFilePath)
            Dim _NumBytes As Long = _fileInfo.Length
            Dim _FStream As New IO.FileStream(ImageFilePath, IO.FileMode.Open, IO.FileAccess.Read)
            Dim _BinaryReader As New IO.BinaryReader(_FStream)
            _tempByte = _BinaryReader.ReadBytes(Convert.ToInt32(_NumBytes))
            _fileInfo = Nothing
            _NumBytes = 0
            _FStream.Close()
            _FStream.Dispose()
            _BinaryReader.Close()
            Return _tempByte
        Catch ex As Exception
            Return Nothing
        End Try
    End Function
...