In einem meiner letzten Artikel zum Thema Rechnungsstellung habe ich erwähnt, dass manche Kundenüberweisungen aufgrund von Zahlendrehern in Rechnungsnummern nicht automatisiert zuordenbar waren. Dazu habe ich mir überlegt, wie ich die Zuordnungsquote erhöhen kann.

QR Code auf der Rechnung – Warum?

Eines Tages las ich einen Artikel über QR Codes (in diesem Zusammenhang oft als EPC QR Code oder als GiroCode bezeichnet), die vor allem im Paymentbereich in der Schweiz sehr verbreitet sind und eine Menge Vorteile bieten. Da kam mir die Idee, die QR Code Technologie für die Weiterentwicklung meines eigenen Rechnungsprogramm einzusetzen und die Rechnungen automatisch mit QR Codes auszustatten. Beim Einscannen des GiroCodes aus einer BankingApp heraus werden alle darin enthaltenen Daten dekodiert und direkt ins Überweisungsformular übernommen, sodass dieses nur noch zu kontrollieren und freizugeben ist. Davon würden beide Seiten profitieren – meine Kunden könnten sich das Abtippen oder Kopieren von Überweisungsdaten sparen und ich hätte dann keine Zuordnungsprobleme bei Überweisungen.

Hier stand ich vor der Überlegung, ob ich nicht einfach einen auf dem Markt frei erhältlichen QR Code Generator in meinem Rechnungsprogramm einbinde. Webbasierte Generatoren schieden allerdings gleich aus. Hauptsächlich, weil damit logischerweise kein Offlinebetrieb möglich ist. Zum anderen, weil ich nicht unbedingt Zahlungsinformationen durch das halbe Internet durchjagen wollte. Also drängte sich der Einsatz eines offline QR Code Generators nahezu auf. Da mich die Herausforderung gereizt hat und ich die Funktionsweise von QR Codes verstehen wollte, trieb mich der Forschungsdrang dazu, eigenen QR Code Generator zu programmieren.

Informationsbeschaffung

Bei der Recherche zum Thema QR Codes wurde mir schnell klar, dass viele Webseiten es relativ oberflächlich behandeln (ich kann es ihnen nicht verübeln 🙂 ) und nur einen groben Überblick über die Struktur, Aufbau und Funktionsweise geben, ohne jedoch stark in die Tiefe zu gehen. Es war also absehbar, dass ich für die komplexeren Teilgebiete, wie zum Beispiel Fehlerkorrektur oder Maskierung von QR Codes ganz andere Informationstiefe benötige. Dazu bin ich erst im englischsprachigen Raum fündig geworden (QR Code-Tutorial).

Auswahl der Technologie – VBA oder C#

Obwohl ich meinen QR Code Generator eigentlich nur für den Einsatz in meiner Microsoft Access-Rechnungsdatenbank (also in der VBA-Welt) vorgesehen habe, entschied ich mich, diesen nicht als ein VBA-Modul oder Add-In, sondern als eine C#-Klassenbibliothek unter Visual Studio zu entwickeln. Eine allgemeine Klassenbibliothek hätte den Charme, dass sich diese auch in eine Konsolen- oder auch in eine GUI-Anwendung integrieren ließe. Auch die geplante Verwendung aus der VBA-Welt heraus wäre durch die COM-Technologie ebenfalls abgedeckt.

Programmierung

Grundstruktur

Am Anfang des Projektes habe ich relativ schnell die ersten Erfolge erzielt und die statische Grundstruktur aufgebaut. So war die erste Version des QR Code Generators in der Lage, anhand des übergebenen Textes und des gewählten Korrekturlevels die benötigte Matrixgröße zu errechnen und die ganzen Pattern

  • Finderpattern
  • Alignmentpattern
  • Timingpattern

in der Matrix abzubilden und in Bildform zu visualisieren. Mathematisch und programmiertechnisch war dies relativ einfach zu bewerkstelligen.

Die QR Code-Spezifikation gibt viele Parameter vor, die je nach gewähltem Fehlerkorrekturlevel und QR Code-Größe mit unterschiedlichen Ausprägungen zu verwenden sind. Für die Verwaltung dieser Parameter habe ich mich für XML entschieden. Die Parameterverwaltung direkt in der Klassenstruktur würde zwar mit zwei Dateien weniger (xml und xsd) auskommen, wäre aber für mich persönlich deutlich unübersichtlicher. Da ich es nicht im Rahmen eines Kundenauftrages mit konkreten Vorgaben, sondern für mich entwickele, gilt hier – „mein Generator, meine Regeln“ 🙂

Um ein Gefühl für die Vielfalt der Parameterausprägungen zu bekommen, zeige ich hier einen kleinen Auszug aus dieser Konfigurationsdatei. Darin sieht man allgemeine Parameter für QR Codes in der Version 11 und spezielle Parameter für den Fehlerkorrekturlevel L in der Version 11. Insgesamt sieht die Spezifikation 40 Versionen und 4 Fehlerkorrekturlevel vor – am Ende bin ich da bei stolzen 3.500 Zeilen allein an Parameterdaten hinausgelaufen. Für den Zugriff auf diese Parameterdatei habe ich eine separate Klasse implementiert, die auf dem Singleton-Entwurfsmuster basiert – so wird die Konfigurationsdatei physisch tatsächlich nur einmalig von der Festplatte gelesen. Das macht vor allem dann Sinn, wenn der Generator für eine Batchverarbeitung eingesetzt wird, wo mehrere Tausend QR Codes zu erzeugen sind. Diese Klasse stellt dann über fachliche Methoden den lesenden Zugriff auf die einzelnen Parameter bereit.

XML-Datei mit Parametern für die Erstellung von QR-Codes
XML-Datei mit QR Code Parametern

Fehlerkorrektrurcodes

Das nächste Teilgebiet des Projektes forderte mich so richtig heraus. Es ging dabei um die Erzeugung von Fehlerkorrekturcodes. QR Codes können nämlich auch dann eingescannt und dekodiert werden, wenn ein gewisser Teil des Codes nicht lesbar ist. Beim höchsten Fehlerkorrkturlevel reichen gar 70% des QR Codes aus, ohne dass es dabei zu Dekodierproblemen kommt. Diese Fehlerkorrekturen werden, aus meiner Sicht als Nichtmathematiker, nach einem sehr komplizierten Verfahren namens Reed-Solomon (benannt nach zwei Überfliegern vom Massachusetts Institute of Technology) generiert.

Ohne die ausführlichen und für die Nichtdoktoren der Mathematik aufbereiteten Informationen aus dem Tutorial, hätte ich die Generierung der Fehlerkorrekturcodes definitiv nicht umsetzen können. Allerdings auch den gut aufbereiteten Ablauf in den Code zu gießen, war nicht ohne – wie oft hat man schon als Anwendungsentwickler, der eher im betriebswirtschaftlichen Umfeld unterwegs ist, eine Methode für die Polynomdivision zweier Gleichungen 68en Grades zu programmieren 🙂

Maskierung

Das letzte Teilgebiet mit der Darstellung der kodierten Daten in der Matrix und deren Maskierung für ein besseres maschinelles Einscannen war verglichen mit dem vorherigen Teil schon fast zu einfach. Das hat mich auch richtig motiviert, dass ich den komplizierten Teil schon hinter mir habe und kurz vor der Fertigstellung stehe. Tja, und dann kam das Testen:-)

Testen

Einem QR Code sieht man mit unbewaffnetem Auge in der Regel nicht an, ob es richtig aufgebaut ist. Für den Schnelltest nutzte ich dabei mein Handy – beim Einscannen hatte ich dann direkt die Rückmeldung, ob der QR Code richtig war oder zumindest eingescannt werden konnte. Wenn jedoch der erzeugte QR Code nicht lesbar war, dann ging die Suche nach dem Fehler erst richtig los.

Einen guten Dienst hat mir dabei diese Webseite https://www.nayuki.io/page/creating-a-qr-code-step-by-step geleistet. Im Gegensatz zu anderen webbasierten QR Code Generatoren, erlaubt der Betreiber hier einen Blick in den „Maschinenraum“. So ist es zum Beispiel möglich, sich die generierten Korrekturwörter oder die Penaltyscores der einzelnen Masken anzeigen zu lassen. Durch den Vergleich mit dem Output meiner Klasse konnte ich den Fehler zumindest ganz grob lokalisieren. Der Löwenanteil aller Fehler lag in der Klasse für die Erzeugung der Fehlerkorrekturcodes – mit Sicherheit habe ich für die Fehlersuche und deren Behebung fast genauso lang gebraucht wie für die Entwicklung . Aufgrund deren Komplexität auch nicht weiter verwunderlich – aus sprachlicher Sicht dennoch amüsant:-). Alle anderen Klassen waren da deutlich robuster und wiesen kaum Fehler auf.

Projektergebnis

Herausgekommen ist aus diesem Projekt, wie erwähnt, ein QR Code Generator in Form einer dll-Datei, eine Wrapperklasse für die Nutzung des Generators in der VBA-Welt (ebenfalls als eine dll-Datei) und eine Parameter-XML-Datei mit QR Code Spezifikationen inklusive einer XSD-Datei. Um eine bessere Vorstellung über die Struktur des QR Code Generators zu bekommen, zeige ich hier die entwickelten C#-Klassen mit deren öffentlichen Signaturen als Klassendiagramm. Darüber hinaus gibt es noch einige Structs und Enums, die aber eine untergeordnete Rolle spielen und für das Verständnis der Funktionsweise nicht relevant sind.

UML Klassendiagramm des QR Code Generators
Klassendiagramm des QR Code Generators

Klasse QRCodeGenerator

Alle C#-Klassen bis auf die Klasse QRCodeGenerator haben die Sichtbarkeit internal und treten somit gar nicht in Erscheinung, sondern verrichten ihren Dienst ausschließlich im Hintergrund. Die Klasse QRCodeGenerator ist public und fungiert somit als die Schnittstelle nach außen. Die Nutzung dieser Klasse in anderen Anwendungen (beispielsweise in einer GUI- oder einer Konsolenanwendung) ist wirklich sehr einfach, weil nahezu alle Parameter entweder von der Klasse selbst errechnet oder in der Parameterdatei „nachgeschlagen“ werden. Das geht natürlich etwas auf die Kosten der Flexibilität, sodass man beispielsweise keinen Einfluss auf die QR Code Größe hat – die Einfachheit in der Nutzung war mir persönlich aber am wichtigsten. Zumal im Fall der Fälle sich der Generator ohne Probleme erweitern lässt, um gewisse Parameter manuell vorgeben zu können.

Diese zentrale Klasse QRCodeGenerator bietet einen dreifach überlagerten Konstruktor, der jeweils unterschiedliche Eingabeparameter erwartet:

allgemeiner Konstruktor (für die .NET-Welt)

Der erste Konstruktor wird verwendet, wenn die Klasse in ein normales Visual Studio Projekt eingebunden ist und es um die Erzeugung eines QR Codes geht, den man mit einem bestimmten Fehlerkorrekturlevel erzeugen möchte.

public QRCodeGenerator(string message, QRErrorCorrectionLevel errorCorrectionLevel)
{
//
}

allgemeiner Konstruktor (für die VBA-Welt)

Der zweite Konstruktor ähnelt sehr dem ersten und ist für den Einsatz in der VBA-Welt gedacht, da VBA die im ersten Konstruktor eingesetzte Enumeration vom Typ QRErrorCorrectionLevel natürlich nicht kennt.

public QRCodeGenerator(string message, string errorCorrectionLevel)
{
//
}

fachlicher Konstruktor (für die .NET- und VBA-Welt)

Möchte man mit der Klasse einen Girocode für eine Rechnung generieren, dann kommt der dritte und letzte Konstruktor zum Einsatz. Dieser nimmt fachliche Bestandteile einer Rechnung als Eingabeparameter entgegen und kümmert sich im Hintergrund um den korrekten Aufbau des Girocode-Strings. Ein kurzer Ausflug zum Wikipedia-Artikel European Payment Council (EPC) verriet mir, welchen Aufbau der EPC-Text haben muss, damit alle darin hinterlegten Überweisungsinformationen von BankingApps korrekt eingelesen werden können. Der Artikel ist sehr übersichtlich und klar geschrieben, sodass ich den nicht zusammenzufassen brauche. Das einzige, was ich extra erwähnen würde, ist, dass im Betrag der dezimale Punkt(nicht Komma!) als Trennzeichen zu verwenden ist. Dies hab ich nämlich beim ersten Lesen übersehen.

Da der EPC-Standard die Korrekturstufe M voraussetzt, wird diese automatisch bei der Erzeugung mit dem 3. Konstruktor verwendet.

public QRCodeGenerator(string iban, string accountOwner, double amount, string invoiceReference, string bic = "")
{
//
}

Nachdem das Objekt mit einem der Konstruktoren erzeigt ist, kann mit einer der beiden SaveAs-Methoden der generierte QR Code auf die Festplatte gespeichert werden.

Klasse QRCodeGeneratorVBALibrary

Um den QR Code Generator auch unter Microsoft Access nutzen zu können, war es erforderlich, ihn von einer Wrapperklasse aufzurufen zu lassen, welche die COM-Schnittstelle implementiert. Diese enthält tatsächlich keinerlei Verarbeitungslogik, sondern macht den Generator „lediglich“ für die VBA-Welt aufrufbar. Dafür ist eine einmalige DLL-Registrierung auf dem Zielrechner erforderlich. Zu diesem Zweck gibt es vom .NET-Framework das entsprechende Tool RegAsm.exe.

Anbindung des QR Code Generators an die Rechnungsstellung

In meinen ersten Versionen des QR Code Generators wurden erzeugte QR Codes physisch auf der Festplatte unter einem festen Namen gespeichert und anschließend direkt vom Access-Rechnungsbericht eingebunden und dargestellt. Doch damit war ich nicht ganz zufrieden. Es war keine Lösung wie aus einem Guss, sondern ein Umweg, bei dem ich mich mit unschönen Nebeneffekten wie verzögertes Speichern befassen musste. Dabei war die Codezeile für die QR-Codeerzeugung schon abgearbeitet, der PC war unter Umständen jedoch noch mit dem physischen Speichervorgang des QR Codes beschäftigt, sodass die nächste Codezeile beim Einbinden des QR Codes ins Leere lief.

Zum Glück hat sich bei meiner Recherche herausgestellt, dass Access nicht nur die Möglichkeit bietet, Bilder von der Festplatte einzubinden, sondern kann auch Bilder darstellen, die in Form eines Bytearrays vorliegen.
Das war genau das, was ich gesucht habe. Aus diesem Grund habe ich neben SVG- und JPEG-Exportmethode auch eine weitere Methode realisiert, die das vorbereitete QR Code-Bildobjekt in einen Bytestrom umwandelt und diesen ausgibt. So konnte ich den Output, den diese Methode liefert, direkt dem Bildcontainer (seinem Attribut pictureData) im Access Bericht zuweisen.

    On Error Resume Next
    
    Set objQrGenerator = CreateObject("QRCodeGeneratorVBALibrary")
    If Err.Number = 0 Then
        Call objQrGenerator.CreateQRCodeGenerator(strQrCodeMessage, "M")
        If Err.Number = 0 Then
            bytQrCodeArray = objQrGenerator.getQRBytes()
        End If
    End If
    
    Err.Clear
    On Error GoTo 0

Diese Zuweisung bewirkt, dass auf der Rechnung der EPC GiroCode dargestellt wird, ohne dass dieser zuvor als Bild abgespeichert werden muss. Der komplette Prozess läuft ausschließlich auf dem lokalen Rechner ab und benötigt zu keinem Zeitpunkt eine Internetverbindung.

Fazit

Im Nachhinein betrachtet ist das ganze Projekt deutlich deutlich komplexer geworden als ich anfangs gedacht habe. Dennoch war es aus dem Blickwinkel Wissensaufbau enorm bereichernd und lehrreich, vor allem was Datenstrukturen, Designpattern und C#-Entwicklung im Allgemeinen angeht.

Sollten Sie ebenfalls Interesse an diesem Generator haben, sprechen Sie mich einfach an.

53 thoughts on “Rechnungsstellung mit QR Codes in Access

  1. Hallo Anton,
    Kompliment an den Autor Deiner Webseite und danke fürs teilen 🙂

    Ich bin auf diesen Content gestoßen, da Ich mich mit der Offlinerzeugung von QR-Codes via VBA beschäftigen möchte.

    Den Quellcode der QRCodegeneratorBatch.exe habe Ich nicht finden können, daher meine Frage, wie viel Zeit hat dieses Projekt in Anspruch genommen?

    1. Hallo Marco, vielen Dank für die Anerkennung, ich leite sie gerne an Tony aka Anton weiter 🙂
      Das Batchprogramm habe ich an 1-2 Abenden entwickelt – dort befindet sich allerdings auch keinerlei Geschäfts/Verarbeitungslogik. Es nimmt lediglich übergebene Parameter (eine Zeichenkette für einen einzelnen QR-Code oder CSV-Dateipfad für eine Sammelerzeugung) entgegen, prüft sie und leitet sie an den QR-CodeGenerator weiter und gibt sein Output in Form von QR-Bildern aus. Die Hauptarbeit war definitiv der QR-CodeGenerator – wenn man alles berücksichtigt, also Recherche der QR-Spezifikationen, Implementierung und das Testen, dann war ich mit Sicherheit 1,5-2 Monate damit beschäftigt. Natürlich nicht am Stück von morgens bis Abends, aber dennoch nahezu jeden Abend.
      Wenn du bei deinem Vorhaben Fragen hast, kannst dich gerne melden, können in einer Zoom-Session die Thematik besprechen.

      Viele Grüße
      Anton

  2. Hallo ,
    ich bin auf der Suche nach genau der oben beschriebenen Methode auf meine Rechnungen einen EPC-QR CODE zu drucken. Ich muss aber gestehen, dass ich bei weitem nicht so mit Access bewandert bin wie der Autor, deshalb stelle ich hier einfach mal die Frage ob es möglich ist diese Methode als Beispieldatenbank zu kaufen?
    Vielen Dank!

    1. Hallo Herr Reinhold, sehr gerne, lassen Sie uns hierzu telefonieren und prüfen, wie sich die QR-Generator-Bibliothek in Ihre Datenbank integrieren lässt.
      Viele Grüße
      Anton Ristau

  3. Hallo Tony,
    1. Frage
    kannst Du das „Tool“ in einer Beispiel-Access-Anwendung inkl. einer kurzen Erklärtung bereit stellen.
    Dann könnte ich dem EPC QR Code in meine Rechnung einbauen.
    2. Frage was würde es kosten

    Danke
    lg
    Peter

    1. Servus Peter, vielen Dank für deine Nachricht und dein Interesse. Meine QR-Bibliothek entstammt einem Hobbyprojekt bzw. Machbarkeitsstudie – daher kann ich sie dir unentgeltlich bereitstellen. Welche Version (32Bit / 64Bit) benötigst du? Ich kann dir gerne ein Anbindungsbeispiel + Beispiel für die Registrierung im Betriebssystem per Mail zukommen lassen.

      Wenn du darüber hinaus Unterstützung benötigst, kann ich dich gerne im Rahmen einer Beauftragung begleiten

      Viele Grüße
      Tony

  4. Hallo Tony
    Das interessiert mich auch sehr. In meiner App nutze ich eine API um den Swiss-QR-Code zu erstellen. Das hat natürlich einige Nachteile. Daher würde ich gerne deine Methode übernehmen. Kannst du mir auch deine Beispiel DB und die Erklärung per Mail senden?
    Viele Grüsse
    Friedemann

    1. Hallo Friedemann, ich kann dir gerne die QR-Code-Bibliothek zukommen lassen. Allerdings generiert sie nur ganz normale QR-Codes (nicht die spezifische Swiss-QR-Variante mit dem Schweizer Kreuz) und unterstützt lediglich die Zeichenkodierung ISO-8859-1 (kein UTF-8, welches so weit ich weiß bei Swiss QR zum Einsatz kommt).
      Für welche Rechnerarchitektur benötigst du die Bibliothek (32Bit oder 64Bit)?

      Viele Grüße
      Tony

  5. Hallo Tony,
    ich benutze Microsoft® Access® für Microsoft 365 MSO (Version 2302 Build 16.0.16130.20298) 32 Bit und würde die QR-Generator-Bibliothek gerne in eine von mir programmierten Mieternebenkostenabrechnung einbauen.

    Vielen Dank im voraus

    Thomas

    1. Hallo Thomas, kann ich gerne machen. Witzig, ich bin ebenfalls an der Entwicklung einer Datenbankanwendung zur Erstellung von Nebenkostenabrechnungen, bin allerdings noch relativ weit weg von der Fertigstellung:-)
      Ich nehme an, du benötigst die Bibliothek für einen 64Bit-Rechner?

      Viele Grüße
      Tony

  6. Hallo Tony,
    mit großem Interesse habe ich deinen Beitrag gelesen. Ich würde deinen QR Code auch gerne verwenden. Kannst du mir auch die Beispiel Datenbank und eine Anleitung dazu zukommen lassen?
    Danke schon mal vorweg.

    Gruß Florian

    1. Hallo Florian, vielen Dank für deinen Kommentar. Ja, das kann ich gerne machen.
      Ist es für deine private Anwendung gedacht oder für den kommerziellen Einsatz?
      Ich melde mich per Mail bei dir

      Viele Grüße
      Tony

  7. Hallo Florian, danke für Deinen tollen Artikel.
    Gerne hätte ich die Beispieldatenbank und die Anleitung dazu ebenfalls.
    Ich habe Access 365, 32 Bit auf einem 64 Bit Rechner laufen.
    Meine Rechnungsdatenbank ist schon sehr lange im Einsatz und hat schon viele Updates von Funktionen erhalten. Mehrere Firmen möglich, E-Mail-Rechnungen, Postleitzahldaten (Deutsch), Mehrwertsteuer oder nicht, Einzelpositionen/ Zeitabrechnung, uvm. Vielleicht können wir tauschen?
    LG Benno

    1. Hallo Benno, vielen Dank für deinen Kommentar und die Blumen:-) ich schicke dir die Bibliothek samt einer Beispieldatenbank gerne zu. Den Registrierungsprozess sowie die Anbindung in die VBA-Welt ist in der beiliegenden README-Datei relativ ausführlich beschrieben und mit Quellcodebeispielen unterlegt. Wenn du deine Rechnungsdatenbank selbst entwickelt hast und somit die ganzen relevanten Berichte und Codebehinds kennst, dann ist die Integration schnell gemacht.
      Sollten sich noch weitere Fragen ergeben, können wir gerne telefonieren. Ich bin derzeit relativ eingespannt, sodass es aktuell bei mir eher gegen 16-18 Uhr möglich ist. Ich melde mich per Mail bei dir

      Viele Grüße
      Tony

  8. Hallo Tony, auch hier wieder ein exzellenter Beitrag von dem ich sofort dachte, das wäre auch was für mein anstehendes Projekt das auch eine Rechnungsbearbeitung beinhalten wird. Ich bin also sehr daran interessiert, die Bibliothek samt Beispieldatenbank zu bekommen. Vielen Dank für die Mühe und lese gerne weiter die Beiträge.
    Viele Grüße
    Harald

    1. Hallo Harald, vielen Dank, das freut mich sehr! Ich kann dir die QR-Code-Bibliothek und die Access-Datei als Anbindungsbeispiel gerne bereitstellen. Mit welcher Access-Version (32Bit / 64Bit) entwickelst du, damit ich die richtige Version generieren kann?

      Viel Erfolg beim anstehenden Vorhaben – es wird bestimmt ein größeres Projekt, oder? Für meine eigene Rechnungsstellung, obwohl sie schon relativ lange im Einsatz ist, habe ich noch eine riesige, immer länger werdende Backet-List für Anforderungen, die ich noch umsetzen möchte:-)

      Viele Grüße
      Tony

      1. Hallo Tony, sorry, hatte vergessen zu erwähnen, dass ich nur noch mit 64Bit hantiere. In der Tat ist es auch immer so, dass neue Wünsche geäußert werden und diese dann meistens auch erfüllt werden.
        Die Rechnungslegung ist nur ein kleiner aber auch wichtiger Teil des Projekts, es handelt sich in erster Linie um eine Dokumentationssoftware, es werden aber auch Leistungen in Rechnung gestellt , irgendwie muss ja auch Geld reinkommen.
        Viele Grüße Harald

      1. Hallo Tony,
        Wunderbare Arbeit.

        Es würde mir sehr viel Arbeit ersparen wenn Du so nett wärst mir auch die Beispieldatenbank zur Verfügung zu stellen

        Grund: Sohnemann hat den Meister gemacht möchte nun in die Selbständigkeit.

        Möchte ihm mit einer Datenbank unterstützen.

        Eigentlich hantiere ich mit einem 64 Bit System. Weiß jedoch nicht ob es ggf auf einem 32 Bit System kaufen muss.

        Beide wäre super. Danke

        Nochmal erwähnt: Klasse Arbeit.

        Gruß. Mario Altmann

        1. Hallo Mario, vielen Dank für die Blumen! Die QR-Code-Bibliothek kann ich dir gerne für beide Plattformen (32Bit / 64Bit) bereitstellen.
          Die Beispieldatenbank, die ich zusammen mit der QRCode-Bibliothek verteile, ist nichts weiter als eine leere Access-Datei mit einem
          Formular und einem Bericht, auf dem ein QRCode generiert wird. Sie ist ausschließlich dazu da, die Verwendung und die Anbindung der QR-Code-Bibliothek besser nachvollziehen zu können, um diese in eigenen Accessdatenbanken einzubinden.
          Wenn es für deine Zwecke ausreicht, stelle ich es dir gerne bereit.

          Die Rechnungsdatenbank plane ich mittelfristig zu einem Produkt zu entwickeln. Aktuell kann ich sie also weder verkaufen noch weitergeben.

          Viele Grüße
          Tony

    1. Hallo Werner, ich habe dir die Bibliothek samt einer Access-Datei zugeschickt, mit der die Anbindung der Bibliothek nachvollzogen werden kann. Darüber hinaus ist da auch eine Readme beigefügt 🙂

      Viele Grüße
      Tony

  9. Hallo Tony,

    auch ich bin wegen einer kleinen Firma meiner Frau an deiner Beispiel-DB und der QR Code Bib interessiert (32 bit). Das würde mir sehr weiterhelfen.

    LG
    Guido

  10. Hallo Tony,
    habe großes Interesse an deiner Beispieldatenbank.
    Wär dir sehr dankbar für die Demodatenbank in 64 bit
    Viele Grüsse
    Thomas

  11. Moin Anton,
    Respekt vor deinem Ehrgeiz und Durchhaltevermögen. Ich wäre bestimmt bei der Polynomdivision ausgestiegen. Nun suche ich just eine Bibliothek für c# und bin auf diesen Beitrag gestoßen. Kann ich das bekommen? Ich möchte das zunächst nur für eigene Rechnungen nutzen.
    Danke.
    Viele Grüße Oliver

    1. Hallo Oliver, ich danke dir! Ja, in der Tat, die Umsetzung der Polynomdivision erforderte einige Klimmzüge, vor allem bei der Fehlersuche:-)
      Ich kanns es dir gerne bereitstellen, welche Version 32/64 benötigst du?

      Viele Grüße
      Tony

  12. Hallo Anton,
    bin beim recherchieren nach den Grundlagen zur EPC-QR-Code-Erstellung auf deinen Beitrag gestoßen. Mein Kompliment für deine Arbeit. Deine Entwicklungsschritte und besonders die Anwendungsbreite ist beeindruckend. Aus der Praxis für die Praxis!
    Erstelle selbst meine Rechnungen aus Access heraus. Darf ich dich bitten, mir die DLL und zugehörige Dateien (32 bit) zur Verfügung zu stellen.

    Vielen Dank für deine Arbeit!

    Gruß Manfred

    1. Hallo Manfred, vielen Dank für deinen Kommentar und Anerkennung, ich freue mich immer über Leser auf meinem Blog! Apropo Namensverwechslung – es ist keine. Tony ist einfach mein Nickname hier auf dem Blog.
      Wegen der DLL melde ich mich per Mail bei dir.

      Viele Grüße
      Tony aka Anton

  13. Hallo Tony,
    sorry für die Namensverwechslung in meinem vorigen Kommentar. Er ist doch das Persönlichste was wir haben. Bin wohl beim lesen sämtlicher Beiträge aus der Spur geraten.
    Gruß Manfred

  14. Hallo Tony!

    Nach langer Suche im Netz bin ich auf deinen Blog gekommen. Würde auch gerne meine Access-DB mit deiner QR-Code Lösung erweitern. Bitte höflichst um Zusendung der Demodatenbank für 32/64bit. Danke!

    Gruß aus der verschneiten Steiermark,
    LG Philipp

  15. Hallo Toni,
    mit großem Interesse habe ich hier die Informationen, Anmerkungen, etc, gelesen.
    Auch ich möchte gerne in Access für unterschiedliche Zwecke generierte QR-Codes in Berichten, eMails (aus Access heraus generiert), etc. verwenden und würde mich freuen, wenn du mir die 32- und 64-bit Varianten mit Beispiel-DB zusenden könntest.
    Ich sage schon mal danke im Voraus und wünsche schöne Weihnachtsfeiertage.

    Martin

    1. Hallo Martin, vielen Dank für deinen Kommentar. Es freut mich, dass dir der Beitrag gefallen hat. Ich lass dir die QR-Code-Bibliothek die Tage per Mail zukommen.

      Wünsche dir ebenfalls schöne Weihnachtszeit
      Viele Grüße
      Tony

  16. Hallo Tony,
    ich finde deine Lösung sehr interessant und würde mich freuen, wenn du mir deine Beispieldatenbank zukommen lassen könntest ( 32 und 64-bit, bin gerade am Umstellen). Ich möchte sie für private Rechnungen verwenden.
    Danke und Frohe Weihnachten!
    Bert

    1. Hallo Bert, vielen Dank für deinen Kommentar. Ich habe dir die Bibliothek gerade an deine Emailadresse geschickt.

      Wünsche dir ebenfalls frohe Weihnachten (nachträglich) und ein erfolgreiches Neues Jahr
      Viele Grüße
      Tony

  17. Hallo Tony,
    ich programmiere gerade ein Fakturierungsprogramm. Meine Lösung soll ab Access 2013, 32 und 64 bit, bis 365 laufen können.
    Über die Zusendung der Bibliothek (32- und 64-bit) mit Beispieldatenbank würde ich mich sehr freuen.
    Herzlichen Dank udn vioele Grüße!
    Jürgen

    1. Hallo Jürgen, vielen Dank für deinen Kommentar! Die Anbindung ab Access 2013 sollte kein Problem sein. Ich schicke dir die Bibliothek per Mail zu. Wünsche dir bei deinem Vorhaben viel Erfolg

      Viele Grüße
      Tony

  18. Kompliment an den ausführlichen und trotzdem sehr gut verständlichen Artikel. Ich bin im Zuge meiner Recherche nach genau so einer Lösung darüber gestolpert, weil ich etwas in der Art für Rechnungen für einen Verein suche. Ich wäre sehr an der Nutzung des QR Code Generators interessiert, speziell auch, wie ich es in Berichte einbinde, die in einer Art Serienbrief automatisiert verschickt werden.

    Vielen Dank!!
    Martin

    1. Hallo Martin, vielen Dank für die Blumen! Jepp, der Generator lässt sich sowohl für einzelne Generierungen in Berichten, als auch in Form von Massenverarbeitung einsetzen. Ich mach die Mail fertig und schick dir die Dll’s zu.

      Viele Grüße
      Tony

  19. Hallo Anton
    nicht nur das Du eine Akribische Arbeit hingelegt hast, sondern die Früchte Deiner Arbeit anderen zur Verfügung stellst. Verdienst allerhöste Anerkennung. Respekt. Wie meine Vorredner bin ich an einen Generator für MS-Access und einer Demo-Datenbank interessiert. Und würde mich über eine positive Rückmeldung freuen.
    Vielen Dank für Deine Mühen.
    Viele Grüße aus dem närrischen Rheinland Gerry

    1. Hallo Gerry, vielen Dank für deinen Kommentar und die Anerkennung, das freut mich!
      Ja, ich kann dir die Bibliothek dir gerne die Tage per Mail zukommen lassen. Ich melde mich bei dir.

      Viele Grüße
      Tony

  20. Hallo Anton
    Ich habe mir grossen Interesse deinen Bericht gelesen, grosses Kompliment.
    Ich bin am Aufbau einer Vereinsdatenbank und mochte gerne die Rechnunsstellung intergireren. Könntest du mir diee Bibliothek (32/64 Bit zustellen.
    Besten Dank im Voraus
    Viele Grüsse
    Beat

  21. Hallo Tony,

    danke für die tolle Erklärung – du nimmst damit einen wesentlichen Teil meiner geplanten Arbeit vorweg, weil genau das hatte ich vor.
    Würd mich auch für deine DemoDB interessieren.

    Liebe Grüße aus Wien,
    Christian

  22. Hallo,
    also Respekt! Das ist wirklich ein toller Artikel. Könnte ich mir das Beispiel für ACCESS auch mal anschauen.
    Würde mich über die Libery sehr freuen.
    Viele Grüße und ein schönes Wochenende
    Jörn

  23. Hallo Anton
    Hut ab! So weit bin ich bei weitem nicht.
    Könntest du mir das Beispiel mailen. DANKE
    Und vielleicht gibts ja irgendwo ein Spendenkonto
    LG
    Gerald

    1. Hallo Gerald, danke dir! Ja, das kann ich gerne machen – die Mail kommt morgen. Und ein Spendenkonto lässt sich ebenfalls auftreiben 🙂

      Viele Grüße
      Tony

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert