0

QR Code automatisch von Artikelnummern erzeugen

Hallo,

nagelneu im Forum und habe auch schon Fragen und davon jede Menge.
Ich habe über 20 Jahre meine kleine Unternehmung u.a. mit Filemaker organisiert.

Ich konnte auch schon die ersten Übungen mit Ninox erfolgreich durchführen.

Früher konnte ich mit FM über eine Web-Anbindung auf einen Generator zugreifen und Zahlen als auch Text in einen QR-Code verwandeln. Das wurde automatisch beim aufrufen erzeugt.

Hier im Forum habe ich auch schon zum Thema gesucht und das gefunden:

>>>>>>>>

Ich habe das mal mit http://goqr.me ausprobiert. Mein Beispieldatensatz in Ninox enthält drei Elemente:

Textfeld namens "QRText" mit dem Inhalt des zu erzeugenden Codes;
Bildfeld namens "QRCode" für die generierte Bilddatei;
Schaltfläche namens "QR-Code erzeugen" mit folgender Funktion:

 

importFile(this, "https://api.qrserver.com/v1/create-qr-code/?size=150x150&data=" + QRText, QRText + ".png");

QRCode := QRText + ".png"

 

>>>>>>>>>>>>>>>

 

Diese Übung konnte ich nachvollziehen und QR-Codes erzeugen.

Die Funktion wird über ein Tastenfeld ausgelöst. Nun möchte ich diese Code automatisch erzeugen. Also auch vorhanden Artikel in div. Tabellen mit Qr-Codes versehen. Mir ist aufgefallen, dass im oberen Beispiel Leerstellen nicht akzeptiert werden und kein Code erzeugt wird.

Ich muss auch noch erwähnen, dass ich nur minimale Programmiererfahrung habe und meine Fähigkeiten in Sachen Coding mehr als low. Filemaker ist leicht zu verstehen und hat ebenfalls eine große hilfreiche Community.

Die ersten Schritte mit Ninox sind auch schon erfolgreich und mit einigen Vorlagen kann ich auch schon arbeiten.

Vielen Dank für die Hilfen!

15 Antworten

null
    • + Maßanzug statt Massenware +
    • RonaldP
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Moin Thorsten

    Auf die Schnelle:
    Grundsätzliche gehen solche Vorgänge für mehrere Datensätze in einer Tabelle über eine "for i" Schleife:

    do as server
        for i in select TABELLE do
            let myQR := "https://api.qrserver.com/v2/create-qr-code/?size=150x150&data=" + i.QRtext;
            let myName := i.QRtext + ".png";
            let myim := importFile(this, myQR, myName);
            sleep(2300);
            i.(QRcode := myName)
        end
    end
    

    Allerdings gibt es mit diesem Skript diverse ungültige Dateien, als ob die API von qrserver nicht hinterherkommt. Aber auch selbst mit dem Wartetimer von 2,3 sekunden zwischen jedem aufruf.
    Vielleicht hab ich aber auch was in der Schleife vergeigt ;-)
    Muss jetzt aber los....

    VG Ronald

      • Thorsten_Cinco
      • vor 1 Jahr
      • Gemeldet - anzeigen

      DIGITOOL Herzlichen Dank für die rasche Antwort!

    • Torsten_Stang.1
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Dein Code für einen:

    QRCode := importFile(this, "https://api.qrserver.com/v1/create-qr-code/?size=150x150&data=" + urlEncode(QRText), QRText + ".png");

    analog sollte dann für alle dieser hier gehen:

    for i in select Tabelle where not QRCode do
       i.QRCode := importFile(i, "https://api.qrserver.com/v1/create-qr-code/?size=150x150&data=" + urlEncode(i.QRText), i.QRText + ".png")
    end
      • Thorsten_Cinco
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Torsten Stang Herzlichen Dank für die rasche Antwort. Arbeite nun am Prozedere und mache eine neue Tabelle auf und anstelle einer Taste löst dein Code das automatische Ausfüllen aus, soweit ich das verstehe. Nur wo lege ich diesen Befehl an, anstelle der Taste?

      Alles noch richtig neu für mich aber ich lerne dazu. 

      • Torsten_Stang.1
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Thorsten Du kannst ihn als Änderungstrigger bei dem Feld "QR-Text" hinterlegen - dann wird der QR-Code generiert, sobald das Feld gefüllt wird. Den Code aber mit

       

      if QR-Text then

         ...

      end

       

      umschließen, damit das nur passiert, wenn auch wirklich was im Feld steht.

      • Thorsten_Cinco
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Torsten Stang OKay

       Das Feld _QRText hat in der in der Bearbeitung bzw Feld: Trigger nach Änderungdiesen Code ohne Fehler Anzeige angenommen

      if QRText then
          QRCode := importFile(this, "https://api.qrserver.com/v1/create-qr-code/?size=150x150&data=" +
              urlEncode(QRText), QRText + ".png")
      end

       

      nun fehlt mir noch die Unterbringung von das:

      for i in select Tabelle where not QRCode do
         i.QRCode := importFile(i, "https://api.qrserver.com/v1/create-qr-code/?size=150x150&data=" + urlEncode(i.QRText), i.QRText + ".png")
      end

       

      Ist  jetzt schon sehr kühn sich am Anfang  solchen Fragen zu stellen. 
      Natürlich vergleiche ich auch mit Filemaker (Layout,Listen,Etiketten) aber ich denke das löst sich nach und nach. Ninox hat sich gemacht in den letzten Jahren und die Vorlagen sind richtig gut.

      • Torsten_Stang.1
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Thorsten die Schleife entweder in der Console ausführen oder (irgendwo) temporär einen Button damit erstellen - davon ausgehend, dass Du den Code nur einmal brauchst.

      • Thorsten_Cinco
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Torsten Stang Kann ich irgendwo solche Beispiele (Archive) finden? Ich kann mir gut vorstellen, dass es diese Funktion schon gibt. Das mit der console bzw den temp Button habe ich nicht hinbekommen. Die Frage stellt sich auch in der Darstellung der Tabelle. Ist das Feld QRBild leer dann gehe zu Feld QRText, wenn QRText gefüllt mit Text/Zahl dann wird der Trigger bzw Skript ausgelöst. Dieses Skript startet dann beim aufrufen der Datenbank bzw erzeugen eines Datensatzes. Also Datensätze mit z.B. Datensatznummern könnten sofort einen Code bekommen. Aber auch nachträglich importierte Datensätze ebenfalls so  mit QR-Codes beschrieben werden.

      • + Maßanzug statt Massenware +
      • RonaldP
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Ah, ich hatte noch bei importFile(this,...) statt "i".
      👍

    • Thorsten_Cinco
    • vor 1 Jahr
    • Gemeldet - anzeigen

    for ... in ... do ... endfor ... in ... do ... end

    Schleife aus der Doku

    So viele W`s  Wer, wie was, wann, wo, warum ....

    • T_Bartzsch
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Thorsten, das ist gar nicht so schwer, wenn der Knoten einmal platzt... 

    Generell kannst Du in einem beliebigen Datensatz einen Button anlegen und mit diesem Dein Script auslösen. Wenn das in einem Datensatz funktioniert, kann man das ganze script auch für alle anderen Datensätze einer Tabelle, Untertabelle oder eines Arrays (zb. alle Dateianhänge eines Datensatzes) in einer Schleife laufen lassen. Man nutzt einen Button in einem beliebigen Datensatz:

    for i (oder p oder x12345 - repräsentiert Einen von Vielen ) in select TABELLE do

    i.( Alles was mit i, also dem jeweiligen Datensatz der Schleife, gemacht werden soll  )

    end

    Wenn dein script 

    importFile(this, "https://api.qrserver.com/v1/create-qr-code/?size=150x150&data=" + QRText, QRText + ".png");

    QRCode := QRText + ".png"

    Also in einem Datensatz funktioniert, sollte es mit

    for i in select DEINETABELLE do

    i.(

    importFile(this, "https://api.qrserver.com/v1/create-qr-code/?size=150x150&data=" + QRText, QRText + ".png");

    QRCode := QRText + ".png"

    ) end

    für alle Datensätze auch funktionieren. Du musst nur, wie Thorsten und DIGI schon schrieben alle Eventualitäten abfangen, zb. wenn QRText in irgendeinem Datensatz fehlen sollte.

    for i in select DEINETABELLE do

    i.(

    if QRText then

    importFile(this, "https://api.qrserver.com/v1/create-qr-code/?size=150x150&data=" + QRText, QRText + ".png");

    QRCode := QRText + ".png"

    end

    ) end

    Deine if-then Bedingung muss natürlich mit einem end abgeschlossen werden, genau wie die for-Schleife...

      • Thorsten_Cinco
      • vor 1 Jahr
      • Gemeldet - anzeigen

      T. Bartzsch 🙏

    • Thorsten_Cinco
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Nochmals vielen Dank für die sehr schnellen Reaktionen auf mein Posting!
    Filemaker war auch gnadenlos wenn ein Zeichen nicht korrekt war. Jetzt funktioniert es und ich lade hier meine Übung  zur Ansicht hoch. Code-Schnippsel zum probieren. Weitere Fragen könnten dann noch geklärt werden. z.B. automatische QR-Erzeugung bei neuem Datensatz bzw bereits ausgefüllten Feld >Seriennummer, Auftragsnummer... Dann ist noch das Problem mit leeren Stellen und Sonderzeichen z.B. Website-Url Danke auch an T. Bartzsch für die sehr gute Erklärung und Korrektur . Mal sehen wie sich meine Lernkurve in Ninox entwickelt.

     🙏

    • Torsten_Stang.1
    • vor 1 Jahr
    • Gemeldet - anzeigen
    Thorsten said:
    Dann ist noch das Problem mit leeren Stellen und Sonderzeichen

     dafür den Text in urlEncode() übergeben...

      • Thorsten_Cinco
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Torsten Stang 🙏 Habe jetzt einen Probe Account und damit Zugang zum Webinar. jede Menge Infos und Testdateien und eine Bibliothek. Referenzen und jede Menge zum üben.