3

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

null
    • UweG
    • vor 3 Jahren
    • Gemeldet - anzeigen

    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.

    • T_Bartzsch
    • vor 3 Jahren
    • Gemeldet - anzeigen

    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"

    • T_Bartzsch
    • vor 3 Jahren
    • Gemeldet - anzeigen

    So sieht das ganze dann in der NINOX aus...

    Bildschirmfoto 2021-07-01 um 14.36.44

    • T_Bartzsch
    • vor 3 Jahren
    • Gemeldet - anzeigen

    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...

    • Felix_Husch
    • vor 2 Jahren
    • Gemeldet - anzeigen

    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!

    • T_Bartzsch
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo Felix, welche Fragen sind denn nach obigem Post noch offen? LG

    • Felix_Husch
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Okay..

    1. Woher bekomme ich den Deeplink des Datensatzes. 
    2. Wozu brauche ich das Bildfeld?
    3. Womit scanne ich den QR-Code ein?

    • T_Bartzsch
    • vor 2 Jahren
    • Gemeldet - anzeigen

    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..... 

    • T_Bartzsch
    • vor 2 Jahren
    • Gemeldet - anzeigen

    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...