- PR -

CrystalReportに画像を表示する方法

1
投稿者投稿内容
kkk
会議室デビュー日: 2008/07/22
投稿数: 3
投稿日時: 2008-07-22 01:24
VB2005で開発しているのですが、Form上に表示されているBitmapファイルをCrystalReportに表示する方法がわかりません。
どなたかわかる方がいらっしゃいましたら、ご教授お願いいたします。

いろいろ調べてみて、BitmapファイルをByte配列にしてDataSetに格納し、CrystalReportのBLOBオブジェクトに表示するという手順でできることがわかったのですが、DataSetに格納してもCrystalReportに表示されませんでした。
(Bitmapファイルは、パッケージソフトのコントロールから表示しています。)

以下に、私が作成したコードを記載します。

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim Ds As DataSet1 = New DataSet1
Dim Cr As CrystalReport1 = New CrystalReport1
Dim Row As DataRow
Dim Bm As Bitmap
Dim byteData As Byte()
Dim memstream As MemoryStream = New MemoryStream

'パッケージのコントロールから画像をBitmap形式で取得
Bm = BarCodeCtrl1.GetBitmap

Bm.Save(memstream, Imaging.ImageFormat.Bmp)
byteData = memstream.ToArray

Row = Ds.Tables(0).NewRow()
Row("画像") = byteData
Ds.Tables(0).Rows.Add(Row)

Cr.SetDataSource(Ds)

memstream.Close()

Form2.Show()

End Sub

補足・Form2にViewerがあり、Button1クリック時に表示します。
  ・DataSet1は型付きDataSetで定義しています。
 DataSetの"画像"列は、System.Byte()で定義しています。


じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2008-07-22 11:04
できそうなのですが、できませんか。 すでに確認済みかもしれませんが byteData の中身は意図した RGB 配列になっておりますでしょうか?

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
kkk
会議室デビュー日: 2008/07/22
投稿数: 3
投稿日時: 2008-07-22 12:39
じゃんぬねっと様、ご返答ありがとうございます。
意図したRGB配列になっているかは、どのように確認すればいいでしょうか?
VB.netもCrystalReportも初心者なので、的外れな質問かもしれませんが、よろしくお願いします。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2008-07-22 13:04
引用:

kkkさんの書き込み (2008-07-22 12:39) より:

じゃんぬねっと様、ご返答ありがとうございます。
意図したRGB配列になっているかは、どのように確認すればいいでしょうか?
VB.netもCrystalReportも初心者なので、的外れな質問かもしれませんが、よろしくお願いします。


これは VB.NET とも CrystalReports とも関係のない部分ですが、byteData の中身がそれっぽいかどうかです。 配列の要素数が数個しかないとか、中身がすべて FF だとかそういう意味です。

ところで今ソースを読み返していたのですが、実際に CrystalReports からレポートを印刷もしくは Viewer で表示している部分のコードが一切ないようですね。 Form2.Show() という記述がありますのでまさかとは思いますが、Form2 に表示しようとしていますか? いずれにしても変数 Cr は何の役割も果たしておりません。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
kkk
会議室デビュー日: 2008/07/22
投稿数: 3
投稿日時: 2008-07-22 14:46
ご指摘の通り、Viewerに表示する記述が抜けておりました。
Form2上のViewerに表示するつもりだったのですが・・

Form2.Show()の前に、
Form2.CrystalReportViewer1.ReportSource = Cr
という記述を追加したところ、Reportに表示されました。

じゃんぬねっと様、ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)