Bitmap-Variable in Report Drucken

3. Mai 2017 17:45

Hallo Liebe Forumuser,

ich habe mal eine Spezielle Frage.
Wir benutzen seit kurzem Dynamics NAV und ich habe mich da schon ein wenig eingearbeitet.

Nachdem ich einige Report schon umgebaut habe bin ich nun bei den Arbeitsscheinen gelandet bzw. "Fertigungsaufträgen" wie es in NAV heißt.

Ich wollte dort gerne einen 2D Barcode drucken (z.B. QR oder DataMatrix).
Gleich vorab. Es muss ein 2D Barcode sein, weil es viele Informationen sind die ich unterbringen möchte und ein normaler Barcode sonst zu lang wäre :)

Das erzeugen des Barcodes mittels ZXing .Net im C/AL-Code des Reports funktioniert auch ganz gut.
Der Barcode wird erzeugt und in einer "System.Drawing.Bitmap" Variable abgespeichert.

Mein Problem ist nun wie bekomme ich diese Variable im Report gedruckt?

Zum Testen habe ich einen QR-Code erstellt und diesen mittels "bitmap.Save('C:\Temp\qrcode.bmp');" abspeichern lassen.
Immer wenn der Report gedruckt wird erhalte ich nun eine Bitmap die immer wieder überschrieben wird.

Somit weiß ich der Code funktioniert, wird beim Drucken des Reports ausgeführt und das Ergebnis ist gut.
Ich kann den Barcode scannen und bekomme die richtigen Ergebnisse.

Ich habe gesucht aber wirklich nichts gefunden wie ich die Bitmap-Variable an den Report übergeben kann damit es auf den Report angedruckt wird.

Gibt es dazu eine Möglichkeit?
Oder muss ich in der Tabelle ein neues Blob-Feld erzeugen und beim Drucken des Reports das Bild neu erstellen, in der Tabelle abspeichern und dann aus der Tabelle wieder in den Report laden?
Eine weitere Variante die mir einfällt wäre die gespeicherte Bitmap irgendwie als link zu übergeben und der Report zieht sich die Datei dann aus dem Verzeichnis selbst.

Ich benötige das Bild eigentlich nur beim Ausdrucken. In der Datenbank benötige ich es nicht.

Es wäre schön wenn mir da jemand weiterhelfen könnte.
Bitte beachtet auch, dass ich keine Developer Lizenz habe, sondern nur die normalen "Endbenutzer-Admin" Rechte.
Bedeutet also ich kann keine Codeunits öffnen und bearbeiten. Deswegen läuft der ganze Code von mir auch direkt im Bericht "on the fly".

Für eure Hilfe besten Dank im Voraus.

Re: Bitmap-Variable in Report Drucken

4. Mai 2017 08:20

Hallo,

du solltest das Bitmap in ein Base64-String umwandeln in einer Textvariable speichern und an das Dataset übergeben. Dort kann der Base64-String wieder in ein Bitmap umgewandelt werden.

Du kannst auch über die TempBlob-Tabelle es direkt als Blob an den Report übergeben.

Unter dem folgenden Link ist etwas ähnliches beschrieben:

https://forum.mibuso.com/discussion/45012/report-item-picture

Gruß

Michael

Re: Bitmap-Variable in Report Drucken

4. Mai 2017 16:28

Hallo Michael,

danke für die schnelle Antwort.

Bezüglich der TempBlob-Tabelle. Das habe ich auch bereits versucht aber wie es aussieht habe ich das nicht richtig gemacht.
Wenn ich es richtig verstanden habe erstelle ich mir erst mal eine Globale Variable der TempBlob-Tabelle und übergebe das Bitmap dann.
Also im Prinzip sowas TempBlob.Blob := Bitmap?

Wie ist es jetzt aber wenn ich mehrere Fertigungsaufträge drucke?
Woher weiß ich welche Eintrag in der TempBlob zu welchem Auftrag gehört und wie übergebe ich das dann richtig an das DataSet?

Ich werde mal die Variante mit dem Base64-String später versuchen.

Welche der Varianten hältst du für schneller bzw. effektiver oder ist das zu vernachlässigen?

Besten Dank.

Re: Bitmap-Variable in Report Drucken

5. Mai 2017 12:17

Hallo,

wenn es über TempBlob nicht funktioniert, dann würde ich dir empfehlen den Weg über Base64 zu gehen.

Da ich die Struktur deines Reports nicht kenne, kann ich dir auch nicht sagen, wo du dein Barcode platzieren sollst.

Gruß

Michael

Re: Bitmap-Variable in Report Drucken

9. Mai 2017 22:51

Ich wollte bloß kurz Bescheid geben, dass ich es hinbekommen habe.

Habe einen Memorystream genommen und diesen dann in den outstream des Blob-Fledes in TempBlob übertragen.
Bezüglich des PrimerKey neme ich jetzt immer die "1" und überschreibe diese jedes mal.
Ob das so wirklich gut ist weiß ist nicht aber momentan funktioniert so alles.

Besten Dank für die Hilfe.

Re: Bitmap-Variable in Report Drucken

22. Februar 2018 15:07

Proxion hat geschrieben:Zum Testen habe ich einen QR-Code erstellt und diesen mittels "bitmap.Save('C:\Temp\qrcode.bmp');" abspeichern lassen.


Hi, ich bin beim Suchen auf diesem Beitrag gestossen, weil ich einen Datamatrix-Code in NAV erzeugen sollte. Leider habe ich so etwas noch nie gemacht. Kannst du mir ev. etwas weiterhelfen in Bezug auf die Erstellung der Grafik? Wie müsste ich da denn vorgehen?