Dynamisches Ändern eines Bildes in einem Crystal Report zur Laufzeit
-
02-07-2019 - |
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?
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).
- Wählen Sie ein Verzeichnis und eine BMP dort platzieren (beispielsweise "C: \ Temp \ image.bmp").
- 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.
- Ü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
Versuchen Sie, eine Kombination mit einem Parameter, um den Pfad des Bildes und das Tutorial auf dieser Seite mit enthalten:
Eine weitere Option, die ich nützlich gefunden habe, um die Bilder einfügen Sie verwenden möchten. Positionieren Sie die Grafik entsprechend, dann mit der rechten Maustaste auf die Grafik und gehen Grafik auf Format> Common. Überprüfen Sie die Unterdrückt Box und dann auf die Schaltfläche Formel, dargestellt als x-2. Einmal in der Formel Fenster, fügen Sie einfach den Code zu bestimmen, ob die Grafik unterdrückt werden soll oder nicht. In meinem Fall war ich den Aufbau einer Rechnungsvorlage für mehrere Entitäten. In der Formel Fenster, schrieb ich einfach COMPANY <> 1100, was bedeutete, dass jedes Mal, wenn die Rechnung für ein Unternehmen andere als 1100, die 1100 Grafik unterdrückt würde ausgeführt wurde. Hoffentlich macht das Leben leichter ...
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.
Die aktuelle Version von Crystal Reports (für Visual Studio 2012+), die ich mit Visual Studio 2015 verwenden diese Funktion unterstützt. Folgen Sie den folgenden Schritten:
- Fügen Sie ein Bild in Ihrem Bericht. Dies dient als Platzhalter. '
- Right Ihr Bild klicken und Format Objekt wählen
- die Registerkarte Bild auswählen und drücken Sie die Taste Formel
-
Ein Formel-Fenster wird geöffnet. Geben Sie eine Formel, die Ihre Bilder als Links finden werden.
if ({@ isDonor} = "1") dann „ http://www.ny.org/images/aaf/picture1.jpg “ else „ http://www.ny.org/images/aaf/picture2.jpg “ Und Sie sind fertig!