Seite 1 von 2
QR Code
Verfasst: 6. September 2013 09:26
von Matthias Vismann
Hallo zusammen,
ich möchte aus Navision 5.01 einen QR-Code erzeugen.
Hat das schon mal jemand gemacht, ich finde nichts dazu.
Gruß
Matthias
Re: QR Code
Verfasst: 6. September 2013 10:18
von cmueller
Re: QR Code
Verfasst: 6. September 2013 14:07
von Matthias Vismann
Das ist ein Tool zum erzeugen von Normalem Barcode.
Ich benötige was zum erzeugen von QR Code
Re: QR Code
Verfasst: 6. September 2013 14:13
von Kowa
Dank gesetzlicher Anforderungen in Mexico:
QR Codes for Microsoft Dynamics NAV[Nachtrag 07.06.21 neuer Link:] QR Codes for Microsoft Dynamics NAV[Nachtrag 27.0.23] Die Links im Artikel sind verwaist, Download des Pakets für NAV 2009 (mit Hinweisen zum Downgrade für 5.x)
hier.
Re: QR Code
Verfasst: 6. September 2013 14:33
von Matthias Vismann
Hallo Kowa,
das habe ich auch gefunden, kann aber den Link nicht öffnen. Nach Absprache mit einem Kollegen hat er mir die Daten runtergeladen aber das geht immer noch nicht.
Re: QR Code
Verfasst: 6. September 2013 16:23
von Kowa
Matthias Vismann hat geschrieben:Hallo Kowa,
das habe ich auch gefunden, kann aber den Link nicht öffnen. Nach Absprache mit einem Kollegen hat er mir die Daten runtergeladen aber das geht immer noch nicht.
Was geht nicht? Der 5er Link ist verwaist, aber der 2009er geht. Die msi-Datei ist für beide Versionen gleich.
Re: QR Code
Verfasst: 6. September 2013 17:50
von Kowa
Ich habe das Beispiel eben mal probiert, funktioniert einwandfrei, für die 5.x muss nur das ServiceTier-Klimbim aus dem Codeunit raus und die CREATEs angepasst werden (letzten Parameter löschen). Außerdem ist die TempBlob-Variable nicht wirklich "temporär".
- Code:
QRCodeInput := CreateQRCodeInput('John,Doe','+555 1231231','john@doe.zzz','www.johndoe.zzz');
QRCodeFileName := GetQRCode(QRCodeInput);
// Load the image from file into the BLOB field
CLEAR(TempBlob);
TempBlob.Blob.IMPORT(QRCodeFileName);
TempBlob.CALCFIELDS(Blob);
IF SalesInvoiceHeader.FINDFIRST THEN BEGIN
SalesInvoiceHeader."QR Code" := TempBlob.Blob;
SalesInvoiceHeader.MODIFY;
END;
Re: QR Code
Verfasst: 3. Februar 2014 15:42
von Timo Lässer
Kann mir jemand die aktuellen Links zu der MSI-Datei nennen?
Die alten Links zum CustomerSource funktionieren seit der Umstellung leider nicht mehr. Ich habe ihn selber gefunden:
https://mbs.microsoft.com/customersourc ... _Mexico_es
Re: QR Code
Verfasst: 3. Februar 2014 18:56
von Natalie
Wir können aber auch die englischsprachigen Links nehmen (die darüber hinaus ein Word-Dokument mehr enthalten, warum auch immer):
Electronic Invoice for Microsoft Dynamics NAV 2009 SP1 - MexicoElectronic Invoice for Microsoft Dynamics NAV 5.0 SP1 - Mexico
Re: QR Code
Verfasst: 3. Februar 2014 19:07
von Timo Lässer
Natalie hat geschrieben:Wir können aber auch die englischsprachigen Links nehmen
Danke, die versteht man dann wenigstens auch
Re: QR Code
Verfasst: 3. Februar 2014 19:21
von h-d.neuenfeldt
Nebenfrage : wofür baut man die QR-Codes in die Belege ein ?
Re: QR Code
Verfasst: 3. Februar 2014 19:50
von Timo Lässer
h-d.neuenfeldt hat geschrieben:Nebenfrage : wofür baut man die QR-Codes in die Belege ein ?
Ganz einfach:
Entweder es gibt - wie in Mexiko - gesetzliche Vorschriften, oder der Kunde wünscht es, weil er die ausgedruckten Belege einscannen möchte.
Beispiele gibt es sicher unzählige, unter Anderem die Versandadresse auf den Lieferscheinen, die eigenen Firmendaten in den Header/Footer der Belege, ...
Re: QR Code
Verfasst: 4. Februar 2014 13:29
von McClane
Natalie hat geschrieben:nnen aber auch die englischsprachigen Links nehmen
Im (2009er Link zumindest) fehlt die MXElectronicInvoice.msi. Ohne kriegt man die Automation-Variable nicht.
Kowa hat geschrieben:funktioniert einwandfrei
Hast du mal Umlaute probiert? Dann bekomme ich einen Fehler.
Re: QR Code
Verfasst: 4. Februar 2014 14:09
von Kowa
McClane hat geschrieben:Kowa hat geschrieben:funktioniert einwandfrei
Hast du mal Umlaute probiert? Dann bekomme ich einen Fehler.
Nein, ich hatte seinerzeit nur den Text aus dem Beispiel verwendet. Ohne Sonderzeichen geht es aber im Spanischen ja auch nicht, vermutlich ein Codepageproblem.
Im (2009er Link zumindest) fehlt die MXElectronicInvoice.msi. Ohne kriegt man die Automation-Variable nicht.
Die Dateien für NAV 2009 inklusive der msi-Datei sind im Anhang.
Re: QR Code
Verfasst: 4. Februar 2014 14:19
von McClane
Kowa hat geschrieben:Die Dateien für NAV 2009 inkl. der msi-Datei sind im Anhang.
Hab mich blöd ausgedrückt, pardon. Deine Objekte sind die aus dem spanischen Link. in dem englischsprachigen sind andere, und die MXElectronicInvoice.msi fehlt dort.
Re: QR Code
Verfasst: 4. Februar 2014 14:41
von McClane
Kowa hat geschrieben:Ohne Sonderzeichen geht es aber im Spanischen ja auch nicht, vermutlich ein Codepageproblem.
Die Fehlermeldung ist:
Diese Meldung ist für C/AL-Programmierer:
Der Aufruf zum Member GetBarCode ist fehlgeschlagen. Microsoft.Dynamics.Nav.MX gab die folgende Meldung zurück:
Conversion error. Only JIS X 0201 is supported.
Der JIS X 0201 kann anscheinend tatsächlich keine Umlaute.
Re: QR Code
Verfasst: 4. Februar 2014 15:25
von Kowa
McClane hat geschrieben:Der JIS X 0201 kann anscheinend tatsächlich keine Umlaute.
Wenn das unverändert aus der japanischen Urversion übernommen wurde, dann wird es wohl schwierig
.
ISO 8859-1 wäre als Codepage wesentlich angebrachter.
Re: QR Code
Verfasst: 5. Februar 2014 12:03
von Kowa
McClane hat geschrieben:Conversion error. Only JIS X 0201 is supported.
Ich habe das im Blog kommentiert, vielleicht hilft es ja und es kommt noch eine ISO-Version.
Re: QR Code
Verfasst: 6. Februar 2014 00:19
von McClane
Kowa hat geschrieben:Ich habe das im Blog kommentiert, vielleicht hilft es ja und es kommt noch eine ISO-Version.
Das wäre natürlich klasse. Danke :)
Re: QR Code
Verfasst: 12. Juni 2015 09:55
von Kozure
Hallo Forum,
wir möchten diese Lösung gerne für unsere Kanban Karten verwenden.
Das o.g. Beispiel schreibt den QR Code in ein Blob Tabellenfeld der VK Rechnung.
Ist es auch möglich den QR Code in einem Report dynamisch zu erstellen (Inhalt = Artikelnummer), also ohne Speicherung in einem Blob Tabellenfeld?
Danke&Gruß,
Kozure
Re: QR Code
Verfasst: 12. Juni 2015 10:29
von m_schneider
Also ein BlobFeld brauchts in jedem Fall, um das Bild auf dem Report anzuzeigen. Dieses kann aber auch aus einer temporären Tabelle stammen. Dafür gibt es die Tabelle "TempBlob". Diese als Temp Record eingebunden kann man in den Bericht beliebig einbinden.
Re: QR Code
Verfasst: 12. Juni 2015 11:39
von Kozure
Hallo Michael,
danke für den Hinweis ... funktioniert Super!
Gruß,
Kozure
Re: QR Code
Verfasst: 16. Februar 2016 12:29
von icarus
Ich hänge mich mal kurz in den alten Thread.
Zunächst vielen Dank, ich konnte testweise einen QR-Code erstellen. Jetzt ist nur die Frage, ob es eine zuverlässige Methode gibt, den Code zu vergrößern. Wir möchten den ggf. auf Palettenzettel andrucken. Da ist die gegebene Auflösung etwas gering. Ich setze bei diesem Kunden noch ein 2009er im Classic Client ein.
Re: QR Code
Verfasst: 16. Februar 2016 12:38
von JoergR
Hi, du musst dazu den QRCode aus dem Blob binär in ein File laden und dann das 38. und 42. Byte (SEEK) für Horz+Vert. Auflösung eines Bitmaps verändern + zurück in das Blob-Feld schreiben.
mfg
Re: QR Code
Verfasst: 16. Februar 2016 14:26
von icarus
Das ist eine schnelle Antwort, klasse!
Für das Archiv:
- Code:
GetBarCodeProvider(IBarCodeProvider);
QRCodeFileName := IBarCodeProvider.GetBarCode(QRCodeInput);
QRImage.TEXTMODE(FALSE);
QRImage.WRITEMODE(TRUE);
QRImage.OPEN(QRCodeFileName);
Resolution := 1890; // Standard ist 3780
QRImage.SEEK(38);
QRImage.WRITE(Resolution);
QRImage.SEEK(42);
QRImage.WRITE(Resolution);
QRImage.CLOSE();
Damit wird der QR-Code in der Größe verdoppelt. Der Wert ist die Anzahl der Pixel pro Meter, siehe Doku:
https://de.wikipedia.org/wiki/Windows_B ... enschaftenNachtrag:Die Größe des QRCodes schwankt ja mit der Menge an Informationen, die man da reinpackt. Wenn man variable Inhalte hat, aber die Code-Größe recht genau bestimmen muss (oder möchte), kann man das wie folgt umsetzen:
- Code:
GetBarCodeProvider(IBarCodeProvider);
QRCodeFileName := IBarCodeProvider.GetBarCode(QRCodeInput);
IF Resolution <> 0 THEN BEGIN
QRImage.TEXTMODE(FALSE);
QRImage.WRITEMODE(TRUE);
QRImage.OPEN(QRCodeFileName);
QRImage.SEEK(18);
QRImage.READ(Width);
QRImage.SEEK(22);
QRImage.READ(Height);
IF Width = Height THEN BEGIN
Resolution := ROUND((Width * 1000) / Resolution, 1, '>');
QRImage.SEEK(38);
QRImage.WRITE(Resolution);
QRImage.SEEK(42);
QRImage.WRITE(Resolution);
END;
QRImage.CLOSE();
END;
In "resolution" steht dann die Bildgröße in Millimeter. Und nicht wundern, dass das ausgedruckte Bild scheinbar kleiner ist: Den eigentlichen Code umgibt ein weißer Rand.