13

VisualStudio 2005 に含まれている Crystal Reports を使用しています。実行時にレポートに表示される画像を、理想的には画像ファイルへのパスを作成して変更し、その画像をレポートに表示したいと考えています。

このバージョンの Crystal Reports でこれを達成できた人はいますか?

4

8 に答える 8

8

職場では、画像をデータテーブルのフィールドとしてレポートにプッシュすることでこれを行います。それはきれいではありませんが、仕事を成し遂げます。もちろん、このソリューションでは、DataSet を介してデータをレポートにプッシュする必要があります。これはせいぜいハックだといつも感じていました。CRで画像パラメータが可能になることを本当に願っています。

編集: Crystalレポートを単純な古いオブジェクトにバインドしている場合、レポートがそれを画像として扱うためにbyte []プロパティを公開する必要があることに注意してください。

于 2009-02-21T03:45:50.787 に答える
2

私もこの質問をしました(そしてあなたに投票しました)!

[それ以来、C# オブジェクト プロパティを介してバイト配列を使用する解決策を見つけました - 別の回答を参照してください。参照用にこの回答をここに残します...]

これが私が提案したことです(ただし、C#-2005とC#-2008の両方で試して失敗しました)。

  1. ディレクトリを選択し、そこに BMP を置きます (例: "C:\Temp\image.bmp")。
  2. CR-Designer から a) 右クリック -> 挿入 -> OLE オブジェクト... b) [ファイルから作成] を選択 c) [リンク] チェックボックスをチェック d) ステップ 1 で定義した bmp を参照して選択 e) クリックOK f) フォームに画像を配置します。
  3. C# コードで実行時にイメージを上書き/更新します。理論的には、画像ファイルへのリンクを挿入したため、フォームが更新されると更新されます。

私はこのアプローチではうまくいきませんでした。最初にフォームをデザインすると、画像が表示されます (ステップ 2)。しかし、実行時にイメージが更新されません。この時点から、物事は本当に奇妙になります。CR は、消えることのないある種の画像をキャッシュしているようです。CR-Designer で OLE オブジェクト リンクを削除できますが、再作成すると、常に元の画像と同じサイズのブラック ボックスが表示されます (image.bmp のサイズを変更しても)。

于 2009-02-18T22:36:57.157 に答える
2

byte[]Joshがここに投稿したヒントを使用して、最終的に解決策に到達しました。

このソリューションは、単純な古い C# オブジェクトを使用して Crystal Reports を作成している場合に適用されます ( http://www.aspfree.com/c/a/C-Sharp/Crystal-Reports-for-Visual-Studio-2005-inを参照)。 -CSharp/このアプローチに関する情報)。

C# クラスに、次のコードを挿入します。

private static byte[] m_Bitmap = null;

public byte[] Bitmap
{
   get
   {
      FileStream fs = new FileStream(bitmapPath, FileMode.Open);
      BinaryReader br = new BinaryReader(fs);
      int length = (int)br.BaseStream.Length;
      m_Bitmap = new byte[length];
      m_Bitmap = br.ReadBytes(length);
      br.Close();
      fs.Close();
      return m_Bitmap;
   }
}

ここで、「データベースの検証」オプションを使用して、CR で C# オブジェクト マッピングを更新します。次に、Bitmapプロパティが CR フィールドとして表示されます。フォームにドラッグするだけです。タイプ IBlobFieldObject になります。実行すると、イメージが表示されます。

于 2009-02-24T16:30:09.847 に答える
1

条件式を使用して画像の場所を設定することもできます。Crystal Reports: 動的画像を参照してください。

于 2010-03-15T20:23:18.543 に答える
1

画像のパスを含むパラメーターとこのページのチュートリアルを組み合わせて使用​​してみてください: http://www.idautomation.com/crystal/streaming_crystal.html

次に、手順 8 で、ハードコードされたパスの代わりにパラメーターを使用します。

于 2008-09-24T17:27:17.227 に答える
0

ジョシュが言ったように..データセットで画像をプッシュする必要があります。または、画像を一度データベース テーブルに配置し、サブレポートで何度も取得します。

于 2009-02-21T03:54:02.980 に答える