cancel
Showing results for 
Search instead for 
Did you mean: 

ファイルパスを指定して画像を表示させる方法

Former Member
0 Kudos

レポート内に、ファイルパスを指定して画像を表示させる方法がわからなくて困っています。

具体的に行いたいことは、

たとえば、C: empGraph-1.png の画像を、レポート内に表示させ、

かつ印刷時にもその画像が乗るようにしたいのです。

ただし、Graph-1.png 画像ファイルは、レポート表示前にプログラム内で出力されるため、

画像イメージは動的に変化します。

ちなみに、ファイルパス、ファイル名は固定です。

OLEオブジェクトなどを配置して表示させようとしましたが、

ハイパーリンクの設定はできても、画像表示までは至りませんでした。

なお、質問内容が酷似している下記のスレッドも確認しましたが、

サンプルコードが取得できず、解決できませんでした。

CrystalReports8.0画像パスの動的変更

以下、開発環境です。

・開発環境:Visual Studio 2008 Professional Edition

・バージョン:Crystal Reports Basic for Visual Studio 2008

・コードビハインド:C#

ご存知の方いらっしゃいましたら、ご教授いただけますと幸いです。

宜しくお願いいたします。

以下追記:2008/02/10 21:32

説明不足部分がありました。

画像データを byte[] に持ち、ReportDocument に設定する方法は検討しました。

しかし、確かに画面を表示させることまではできたのですが、

今回の要件として、一つのレポートに約60枚ほどの画像ファイルを貼る必要があり、

それらをすべて byte[] でメモリ上に保持するようにすると、

単体アプリケーションでメモリが1G以上確保されるようになりました。

そのため、すべての画像ファイルを byte[] でメモリ上に持つことは難しく、

画像ファイルを表示することでなんとかならないか? というのが

本質問に至る経緯となります。

もしそれ以外に不足点などがありましたら、ご指摘いただけると幸いです。

Edited by: hiroyuki hanato on Feb 10, 2009 1:31 PM

Accepted Solutions (1)

Accepted Solutions (1)

former_member583013
Active Contributor
0 Kudos

.NET バンドル版では OLE オブジェクトのパスを操作できないはずなので、基本的には画像をデータベースに保存していただくしかありません。

VS2005 には Access に格納した画像を表示するサンプルレポートが付属しているはずですが、VS2008 は手元に無い為確認できていません。

SCN フォーラムモデレーター

former_member583013
Active Contributor
0 Kudos

製品版の Crystal Reports 2008 には機能が実装されています。以下はヘルプの抜粋です。

なお、VS2008 にバンドルされている Crystal Report 2008 Basic は Crystal Reports 2008 相当ではなく、VS2005 バンドル版とほぼ同様のものです。

****

静的 OLE オブジェクトの動的化

動的な静的 OLE オブジェクトは、ファイル パスまたは URL を使用して Crystal Reports でアクセスする、画像またはメタファイルです。通常、このオプションは、データベースに文字列フィールドとして格納されている画像またはメタファイルへのパスがある場合に使用します。すなわち、データベースには実際のオブジェクトは格納されていません。また、ネットワーク共有に格納されている画像またはメタファイルがあり、これらのオブジェクトが場合に応じて変更されることがわかっている場合にも、このオプションを使用できます。

これらの動的な静的 OLE オブジェクト(動的グラフィック)は、参照によって静的 OLE オブジェクトにリンクできる条件付書式設定式によって、Crystal Reportsに作成されます。

- この機能は、レポート データを最新表示すると有効になります。このため、Crystal Reports.の[最新表示]ボタンをクリックするまで、静的 OLE オブジェクトが変更されていることに気が付かないことがあります。

- BusinessObjects Enterprise に動的な静的 OLE オブジェクトを含むレポートをスケジュールするとき、作成されたインスタンスには、スケジュールした時点で Crystal レポートに存在していたバージョンの OLE オブジェクトが含まれます。BusinessObjects Enterprise は、各インスタンスについてオブジェクトを動的に更新するわけではありません。

- 動的な静的 OLE オブジェクトに対して絶対パスまたは相対パスを使用するレポートは、このリリースの BusinessObjects Enterprise 環境ではサポートされていません。動的な静的 OLE オブジェクトを含むレポートを BusinessObjects Enterprise に公開することを予定している場合には、OLE オブジェクトに URL リンクを使用することをお勧めします。

静的 OLE オブジェクトの動的オブジェクトへの変換

1. 挿入した静的 OLE オブジェクトを右クリックして、ショートカット メニューから[グラフィックの書式]を選択します。

注 通常どおり、レポートにオブジェクトを挿入することで、静的 OLE オブジェクトを動的にする処理を開始します。このオブジェクトはデフォルトのオブジェクトになります。Crystal Reportsがオブジェクトへの動的参照を検出できない場合、代わりにデフォルトのオブジェクトを使用します。

2. 書式エディタで[ピクチャ]タブをクリックし、[保存場所]ラベルの隣の[条件式]ボタンをクリックします。

3. [式ワークショップ]で、静的 OLE オブジェクトへのパスを作成します。

たとえば、パスがデータベース フィールドに保存されている場合は、そのフィールドを式に追加します。

4. [保存して閉じる]をクリックして、書式エディタに戻ります。

5. [OK]をクリックしてレポートに戻ります。

6. [最新表示]をクリックして静的 OLE オブジェクトへの参照リンクを更新します。

Former Member
0 Kudos

Miyahara様

上記質問について、ご回答ありがとうございます。

VS2008バンドル版では難しいのですね・・・。

現在のプロジェクトでは、 CrystalRepoprts 2008 への移行は難しいので

なるべくメモリ節約をして、Byte[] での画像データ受け渡しの方法で進めたいと思います。

大変参考になりました。ありがとうございました。

Answers (0)