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
-
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 -
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
-
for ... in ... do ... endfor ... in ... do ... end
Schleife aus der Doku
So viele W`s Wer, wie was, wann, wo, warum ....
-
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...
-
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. -
Thorsten said:
Dann ist noch das Problem mit leeren Stellen und Sonderzeichendafür den Text in urlEncode() übergeben...
Content aside
- Status Answered
- vor 1 JahrZuletzt aktiv
- 15Antworten
- 183Ansichten
-
4
Folge bereits