Frage

Ich bin mit dem Crystal Report mit Visual Studio 2005 enthielt Ich möchte das Bild ändern, die im Idealfall über den Bericht zur Laufzeit angezeigt wird, indem Sie einen Pfad zur Bilddatei zu bauen und dann das Bild auf dem Bericht angezeigt.

Hat jemand in der Lage gewesen, dies mit dieser Version von Crystal Reports zu erreichen?

War es hilfreich?

Lösung

Bei der Arbeit wir tun dies, indem das Bild schieben (s) in den Bericht als Felder eines Datentabelle. Es ist nicht schön, aber es wird die Arbeit erledigt. Natürlich erfordert diese Lösung, dass Sie Daten in die Berichte über einen DataSet drücken. Ich habe immer das Gefühl, das ein Hack am besten war. Ich wünsche mir wirklich, dass Bildparameter eine Möglichkeit, mit CR waren.

Edit:. Es ist erwähnenswert, wenn Sie Ihre Kristall Bericht nur alte Objekte sind verbindlich Sie ein byte [] Eigenschaft für den Bericht verfügbar machen möchten, dass als ein Bild zu behandeln

Andere Tipps

Ich erreichen schließlich eine Lösung, die den byte[] Tipp hier von Josh geschrieben werden.

Diese Lösung gilt, wenn Sie ein einfaches altes C # Objekt verwenden, um Ihren Crystal Report zu füllen (siehe http://www.aspfree.com/c/a/C-Sharp/Crystal-Reports-for-Visual-Studio-2005-in -CSharp / für Informationen zu diesem Ansatz).

In Ihrer C # Klasse, fügen Sie den folgenden Code ein:

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;
   }
}

Jetzt aktualisieren Sie Ihre C # Objektzuordnung in der Tschechischen Republik die „Datenbank überprüfen“ Option. Sie sollten dann die Bitmap Eigenschaft als CR-Feld sehen. Ziehen Sie einfach es auf das Formular. Es wird vom Typ IBlobFieldObject sein. Wenn Sie ausführen, sollten Sie Ihr Bild sehen.

Ich hatte auch diese Frage (und stimmte Sie oben)!

[I, da eine Lösung mit einem Byte-Array über eine C # Objekteigenschaft gefunden haben - siehe separate Antwort. Verlassen Sie diese Antwort hier als Referenz ...]

Hier ist, was ich habe vorgeschlagen gesehen (aber ich versuchte und scheiterte in C # -2005 und C # -2008).

  1. Wählen Sie ein Verzeichnis und eine BMP dort platzieren (beispielsweise "C: \ Temp \ image.bmp").
  2. Aus dem CR-Designer a) Rechts-Klick-> Einfügen-> OLE-Objekt ... b) Wählen Sie "Aus Datei erstellen" c) Überprüfen Sie den "Link" Checkbox d) durchsuchen und die bmp in Schritt 1 definierten Pick e) Klicken Sie auf OK f) auf dem Formular das Bild Platz.
  3. Überschreiben / aktualisieren Sie das Bild zur Laufzeit in C # -Code. In der Theorie, da Sie eingefügt ein Link auf eine Bilddatei, wird es aktualisiert werden, wenn das Formular aktualisiert wird.

Ich hatte kein Glück mit diesem Ansatz. Das Bild erscheint, als ich zuerst die Form-Design (Schritt 2). Aber zur Laufzeit, wird das Bild nicht für mich aktualisieren. Von diesem Punkt an, die Dinge wirklich seltsam . Es scheint, dass CR irgendeine Art von Bild-Caches, die einfach nicht weggehen. Ich kann das OLE-Objekt Link in CR-Designer, löschen, aber wenn ich es neu erstellen, habe ich immer eine Black-Box die gleiche Größe wie das Originalbild (auch wenn ich die Größe der image.bmp ändern).

Sie können auch eine bedingte Formel verwenden, um ein Bild Standort einzustellen. Siehe Crystal Reports. Dynamische Bilder

Genau wie Josh sagte .. Sie das Bild mit einem Datensatz schieben haben. Oder setzen Sie das Bild in einer Datenbanktabelle einmal und ziehen Sie sie in oft mit einem subreport.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top