Barcode erstellen und scannen
Hallo,
ich habe in meiner Datenbank Bilder katalogisiert und diese bereits nummeriert. Jetzt möchte ich aus den 4 stelligen Artikelnummern Barcodes erstellen, die ich dann ausdrucken kann und an meine Bilder anbringen kann.
Diese Barcodes möchte ich dann scannen, dabei soll Ninox bemerken, welches Bild es ist und mir den Datensatz öffnen, damit ich diesen bearbeiten und ansehen kann.
Geht das irgendwie? Ich habe bisher leider noch keine Lösung gefunden...
12 Antworten
-
Ninox selbst kann keine Barcodes drucken.
Das geht nur über die REST-API von Ninox mit externen Anbietern, die aus den Übermittelten Daten einen Barcode erstellen und diesen als PDF zurück senden.
Ich meine gehört zu haben, dass man mit Integromat auch Brcodes erstellen kann. Diese Info ist aber ohne Gewähr. -
Hallo Tanja,
ich habe gerade allen Produkten automatisiert EAN-Codes zugewiesen, welche aus der Basis, der Fortlaufenden Nummer und der Prüfsumme erzeugt wurden und damit über einen Online-Dienst den Barcode als Grafik erzeugt und im Bildfeld abgelegt.
Meine Tabelle heist "Produkte"... diese beinhaltet auch ein Feld "Artikelnummer", welches am Ende für die Namensgebung der Barcode_Bilddatei benutz wird.
Ich nutze dafür:
- ein Zahlenfeld "EAN-Basis"
- ein Textfeld "EAN-Kreis"
- ein Zahlenfeld "EAN-Prüf"
- ein Zahlenfeld "EAN-Code"
- ein Bildfeld "Barcode"
- eine Befehlsschaltfläche
Das Feld "EAN-Basis" wird mit dem unveränderlichen Teil des EAN befüllt. Dieser besteht in der Regel aus dem Ländercode (2-stellig) und dem Herstellercode (5-stellig)
Der EAN-Kreis beginnt bei mir mit 0001 - um die führenden Nullen darzustellen habe ich ein Textfeld benutzt...
Die Schaltfläche führt dann folgenden Code aus, welcher teilweise auch hier aus dem Forum stammt (Quersumme):
if not 'EAN-Kreis' then
'EAN-Kreis' := format(max((select Produkte).number('EAN-Kreis')) + 1, "0000")
end;
let myEAN := 0;
let gerade := false;
let Quersumme := 0;
if odd(length(text('EAN-Basis' + 'EAN-Kreis'))) = true then
gerade := false
else
gerade := true
end;
for ii in text('EAN-Basis' + 'EAN-Kreis') do
if gerade = false then
myEAN := myEAN + number(ii) * 3;
gerade := true
else
myEAN := myEAN + number(ii);
gerade := false
end
end;
Quersumme := myEAN;
'EAN-Prüf' := round(abs(Quersumme / 10 - ceil(Quersumme / 10)) * 10, 0);
'EAN-Code' := text('EAN-Basis') + 'EAN-Kreis' + text('EAN-Prüf');
importFile(this, "https://bwipjs-api.metafloor.com/?bcid=ean13&includetext&guardwhitespace&text=" + 'EAN-Code', "EAN_" + Artikelnummer + ".png");
Barcode := "EAN_" + Artikelnummer + ".png"
HINWEIS
in der Zeile "importFile(this... usw)" wird am Ende nach dem Komma der gewünschte Dateinamen vergeben, welchen ich mir aus der Artikelnummer generiere. (EAN_12345.png)
Das Bildfeld "Barcode" zieht sich diesen zuvor generierten Dateinamen anschließend, also bei Änderungen bitte diese beiden Zeilen anpassen...
Wenn dieser Code erfolgreich für einen Datensatz funktioniert, kann man ihn via Schleife auch auf alle Datensätze in der gewählten Tabelle anwenden:
Einen Button mit folgendem Code anlegen:
for p in select Produkte where not 'EAN-Code' do
p.(
if not 'EAN-Kreis' then
'EAN-Kreis' := format(max((select Produkte).number('EAN-Kreis')) + 1, "0000")
end;
let myEAN := 0;
let gerade := false;
let Quersumme := 0;
if odd(length(text('EAN-Basis' + 'EAN-Kreis'))) = true then
gerade := false
else
gerade := true
end;
for ii in text('EAN-Basis' + 'EAN-Kreis') do
if gerade = false then
myEAN := myEAN + number(ii) * 3;
gerade := true
else
myEAN := myEAN + number(ii);
gerade := false
end
end;
Quersumme := myEAN;
'EAN-Prüf' := round(abs(Quersumme / 10 - ceil(Quersumme / 10)) * 10, 0);
'EAN-Code' := text('EAN-Basis') + 'EAN-Kreis' + text('EAN-Prüf');
importFile(this, "https://bwipjs-api.metafloor.com/?bcid=ean13&includetext&guardwhitespace&text=" + 'EAN-Code', "EAN_" + Artikelnummer + ".png");
Barcode := "EAN_" + Artikelnummer + ".png"
)
end
Das nur mal so als Beispiel.
Wenn man natürlich schon EAN-Codes hat, reicht der untere Teil der Formel völlig aus:
importFile(this, "https://bwipjs-api.metafloor.com/?bcid=ean13&includetext&guardwhitespace&text=" + 'EAN-Code', "EAN_" + Artikelnummer + ".png");
Barcode := "EAN_" + Artikelnummer + ".png"
-
So sieht das ganze dann in der NINOX aus...
-
Muss es denn ein Barcode sein?
Eine andere Idee wäre einen QR Code zu generieren aus dem Deeplink des Datensatzes. Du müsstest dann mit dem scannenden Gerät angemeldet sein - evtl klappt das.
Du brauchst ein Bildfeld "QRCode", ein Feld "Artikelnummer" und einen Button mit folgendem Script:
let myLink := "https://app.ninox.com/#/teams/63cg2xMvfod8P9fc/database/ihju5qj08c1/module/Z/view/TgC3z9si2N9eE7ci/node/Z" + Nr + "/tab/0";
importFile(this, "https://api.qrserver.com/v1/create-qr-code/?size=150x150&data=" + myLink, Artikelnummer + "_QR.png");
QRCode := Artikelnummer + "_QR.png"
Nur so ne Idee...
-
T. Bartzsch mir ist dieses Thema komplett neu in Ninox. Könntest du mir einmal genauer erklären wie das mit dem QR-Code geht? Danke dir!
-
Hallo Felix, welche Fragen sind denn nach obigem Post noch offen? LG
-
Okay..
1. Woher bekomme ich den Deeplink des Datensatzes.
2. Wozu brauche ich das Bildfeld?
3. Womit scanne ich den QR-Code ein? -
Ok, also den Deeplink des Datensatzes siehst Du tatsächlich in der Adresszeile deines Browsers (natürlich nur in der Cloud-Version von NINOX). Dort ist auch angegeben, welches TAB Du gerade geöffnet hast... diesen Link legst du im obigen Scriptbeispiel in die Variable myLink
let myLink := "HIER KOMMT DEIN LINK REIN"
Im oberen Beispiel bleibt der Link fast immer gleich, es ändert sich nur nach dem Z die Nummer des Datensatzes, daher ist die Nr als Variable zwischen die unveränderlichen Teile gesetzt...
Im nächsten Schritt holst Du dir ein Bild via URL in deinen Datensatz. Diese Bild liegt aber nicht auf irgendeinem Server, sondern wird von einer QR-Code API erzeugt, mit den Daten die Du übermittelst. Im obigen Beispiel fragst Du die API "https://api.qrserver.com"... usw an, übermittelst die gewünschte Größe (150x150) und gibts Deinen Link auf den NINOX Datensatz mit... (data=)
Die Funktion importFile will wissen: (wohin, woher, welcher Name)
Also:
importFile(this, "https://api.qrserver.com/v1/create-qr-code/?size=150x150&data=" + myLink, Artikelnummer + "_QR.png");
In meinem Fall wird in den Datensatz in dem ich mich gerade befinde (this) ein Bild via URL importiert ("https://api.qrserver...usw") und unter dem Namen "12345_QR.png" angehängt. Dabei ist Artikelnummer ein Feld aus meiner Datenbank, kann bei Dir auch anders sein, Kundenname, Nr des Datensatzes usw...
Als letzten Schritt zeiht das obige Script das Bild aus dem Anhang in dein Bildfeld (Dafür das Bildfeld). Du kannst es auch im Anhang liegen lassen, musst dann aber in den Büroklammer Tab wechseln, um deinen QR Code zu sehen oder herunterzuladen.
So hast Du jetzt also einen QR-Code als png Datei erzeugt, welcher beim Einlesen mit einem Tablett oder Telefon über die Kamerafunktion direkt in den jeweiligen Datensatz der NINOX springt. Vorausgesetzt du bist mit dem scannenden Gerät bei Ninox angemeldet. So kann man dann durch sein Warenlager gehen, die QR Codes an den Regalen scannen und landet direkt im Datensatz in der Ninox.....
-
Aufgrund der vielen Anfragen hier nochmal in Kurzform zum generieren eines QR Codes welcher direkt in den Datensatz verweist. Man benötigt:
1. Ein Bildfeld "QRCode"
2. Einen Button mit folgendem Script:
let myDatensatz := raw(this); let myDeeplink := urlEncode(urlOf(this)); let myAPIcall := "https://api.qrserver.com/v1/create-qr-code/?size=150x150&qzone=3&data=" + text(myDeeplink); QRCode := importFile(this, myAPIcall, "QR_Code_" + myDatensatz + ".png")
Danke auch nochmal an Benjamin Kunzmann (pr) für die weiteren Ausführungen...
Content aside
-
3
„Gefällt mir“ Klicks
- vor 2 JahrenZuletzt aktiv
- 12Antworten
- 1771Ansichten
-
4
Folge bereits