0

問題があります。クリスタルレポートで vb.net からプログラムで画像を置き換えようとしています。

これが私がすることです:

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

画像パスをデータセットに設定します

次に、データセットに文字列を追加して、クリスタルレポートの画像を置き換えます

クリスタルレポートの下に、オレ画像オブジェクトを追加しました

オブジェクト内で、これで式を変更しました

{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: データセットを確認しましたが、空ではありません。設定したパスが含まれています

4

1 に答える 1

2

同じ問題を抱えている人のために、解決策を見つけました。

主なことは、画像を 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
于 2011-12-23T02:03:35.533 に答える