0

QR Code URL erzeugen und als Bild importieren

Hallo,

ich möchte gerne einen QR Code zum Bezahlen in meine Rechnung einfügen. Bin schon recht weit gekommen mit diesem Code:

 

let bic := "yyy";
let iban := "xxx";
let url := "https://api.qrserver.com/v1/create-qr-code/?size=150x150&data=" + "BCD" + "
" + "001" + "
" + "1" + "
" + "SCT" + "
" + bic + "
" + "vorname nachname" + "
" + iban + "
" + BruttoSumme + "
" + "
" + "
" +  Rechnungsnummer;
importFile(this, url, Rechnungsnummer + "_QR.png");
testqr := Rechnungsnummer + "_QR.png";
'QR URL' := urlDecode(url)

 

Was funktioniert: es wird die Korrekte URL erzeugt (diese kann auch aus dem Feld "testqr" im Browser geöffnet werden). Der QR Code ist generell richtig (meine Banking App z.B. erkennt die richtigen Daten für die Überweisung, wenn ich das Bild vom Browser scanne).

 

Nur wird leider das PNG nicht als bilddatei gespeichert. Es klappt schon der Import nicht (und dadurch natürlich auch nicht das Speichern des Anhangs in das Bildfeld).

 

Wo ist denn da der Fehler?

22 Antworten

null
    • Selbständiger Sprecher
    • info.23
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Übrigens habe ich statt der Zeilenumbrüche via "

    "

    auch schon "%0A" probiert. Erfüllt beides seinen Zweck, hat aber keine Auswirkung auf die Erstellung des Anhang...

    • Leonid_Semik
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo,

    "url" ist bei Ninox als Befehl reserviert, ich würde da lieber myURL verwenden. Dazu würde ich noch Format "png" in dei URL rein schreiben. und als letztes importFile direkt in das Feld schreiben:

    ---

    let bic := "yyy";
    let iban := "xxx";
    let myQRArray:=["BCD","001","1","SCT",bic,"vorname nachname",iban,text(BruttoSumme),,,,Rechnungsnummer];
    let myData:=join(myQRArray,"
    ");
    let myURL := url("https://api.qrserver.com/v1/create-qr-code/",{
    data: myData,
    format: "png",
    ecc: "M",
    size:"150x150"});
    testqr :=importFile(this,myURL,Rechnungsnummer + "_QR.png")

    ---

    Habe jetzt nicht geprüft aber so ähnlich funktioniert bei mir mit der schweizer QR-Rechnung. 

    Leo

    • Selbständiger Sprecher
    • info.23
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Leonid,

     

    vielen Dank für die Hilfe! Und du hast sogar noch an das ecc gedacht, das hatte ich nur so lose als noch zu lösendes Problem im Hinterkopf :-)

    In dem Array funktioniert das mit den 4 Kommas nacheinander nicht.  Ich habe stattdessen .... text(bruttoSumme),"","",Rechnungsnummer .... geschrieben, das scheint jetzt zu klappen.

    Also danke nochmal, das war wirklich erstklassige Hilfe!

     

    Viele Grüße

    Dominic

    • Selbständiger Sprecher
    • info.23
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hmmm... jetzt habe ich noch das Problem, dass die BruttoSumme (in Form von text(BruttoSumme) oder string(BruttoSumme)) nicht von der Banking App aktzeptiert wird.

    Da wird wohl eine "echte" Zahl erwartet, vermute ich. Ich finde ja das mit dem Array sehr elegant, Leo (dazu wäre ich selbst auch gar nicht in der Lage gewesen). Aber kriegt man dieses Problem damit in den Griff?

    • Leonid_Semik
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Dominic,

    wenn BruttoSumme bei dir als Währung kodiert ist dann bringt text(BruttoSumme) auch die Währung mit. Also 326,00 €. Versuch es mit   text(number(BruttoSumme))

    • Selbständiger Sprecher
    • info.23
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Danke, Leo. Funktioniert jetzt perfekt :-)

    • chrismmeier_gmailcom
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Vielleicht kann mir auch jemand bei meinem Versuch, den ich von Leonid abgeleitet habe, weiter helfen. Ich muß dazu sagen, ich bin alles andere als fit im Verständnis der Formeln, verstehe nur in Ansätzen warum etwas genau so sein soll, beim Rest gar nichts (was man auch sicher merken wird). Sorry dafür…..
    Ich hab folgendes versucht:

    1 let iban := "ATxxxxxxxxxx";

    2 let myQRArray:= ["Empfänger”, iban, Rechnungsnummer, text(number(Zahlungsbetrag), Verwendungszweck];

    3 let myData:= join(myQRArray,"");

    4 let myURL := url("https://api.qrserver.com/v1/create-qr-code/", {data: myData, format: "png", ecc: "M", size:"150x150"});

    5 testqr :=importFile(this, myURL, Rechnungsnummer + “_QR.png")

    Daraufhin kommt folgende Fehlermeldung:
    Symbol erwartet ] /, in Zeile 4, Spalte 23 (worauf bezieht sich eigentlich Spalte 23?)

    Wofür stehen die beiden "" in Zeile 3?

    Wofür 'this`in Zeile 5? Und wofür konkret steht “_QR.png"?

    Die Felder Rechnnungsnummer, Zahlungsbetrag und Verwendungszweck sind meiner der DB genau so bezeichnet. Ich hätte ein Bild-Feld namens 'QR-Code' für eben diesen erstellt, über einen Button (eben mit dem obigen Befehlen) soll das befüllt werden.....

    • chrismmeier_gmailcom
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Sorry für mein Post oben, nach dem 3. Versuch hat die Version von Leonid auch bei mir perfekt geklappt!:-)

    Warum die ersten beiden Versuche solche Probleme gemacht haben (trotz kopieren) ist mir im Nachhinein ein Rätsel.

    Wie auch immer: vielen Dank Leonid für das Reinstellen hier!

    • torsten_esdar
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo,
    ich habe versucht auf der Basis dessen, was hier im Thread steht, den EPC QR code auf meine Rechnung zu bekommen. Die url wird mit folgendem Code korrekt erzeugt:
    let bic := "PBNKDEFF";
    let iban := "DE95360100430*********";
    let verwendung := urlEncode("Rechnungsnummer: " + text(Rechnungsnummer));
    let summe := replace(text(format('Summe Brutto', "0.00")), ",", ".");
    let myURL := "https://epc-qr.eu/?bic=" + bic + "&bname=" + urlEncode("Consulting and Office Services") + "&iban=" + iban + "&euro=" + summe + "&info=" + verwendung;
    URL := myURL;

    URL ist ein Textfeld in meiner Datenbank und der Code wird durch die Änderung eines anderen Feldes in der Tabelle getriggert. Soweit funktioniert das alles, die erzeugte url kann man in den Browser kopieren, und zurück bekommt man den EPC QR code als .png (wenn ich das richtig verstehe; Safari speichert das Webseitenbild so).

    Mein Problem ist jetzt das Bild dem Bildfeld zuzuweisen, das ich als Datenfeld "Bild" als Feld in derselben Tabelle abgelegt habe. Das Feld hat den Namen 'Bild' und daher sollte der Code

    Bild := importFile(this, text(myURL), "bild.png")

    funktionieren, wenn ich die obige Zeile als letzten Befehl dem obigen Code hinzufüge. Leider geht das aber nicht, auch das Feld URL wird dann nicht mehr gefüllt, also scheint wohl mein importFile Befehl falsch zu sein. Leider gibt Ninox keine Fehlermeldung aus, und egal was is versuche, ich kriege es nicht hin.
    Kann mir jemand sagen, was ich falsch mache?
    Wie kann man sich Fehler anzeigen lassen, die bei der Ausführung eines Triggers entstehen?

    Am liebsten wäre es mir ja, wenn man weder url noch QR code in der Datenbank ablegen müsste, die Information ist eigentlich überflüssig, wenn man den QR code einfach in der Druckvorlage über die epc-qr Website einfügen könnte, dass ist mir allerdings auch nicht gelungen, Ninox erzeugt dann mit dem importFile Befehl nur den Fehler, das man den Inhalt des Feldes nicht verändern darf.

    Ich würde mich wirklich sehr über Hilfe freuen, vielen Dank im voraus schon einmal dafür,
    Gruß, Torsten

    • Josef_Koenig
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Kleine Anmerkung:
    Über die EU-Seite https://epc-qr.eu/ kann man kostenlos QR-Codes generieren.
    Funktioniert perfekt.

    • torsten_esdar
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo,

    genau, das ist mein Plan. myURL beinhaltet die url um den QR Code generieren zu lassen. Das Problem ist die erzeugte Grafik auf die Rechnung zu bekommen.

    Gruß, Torsten

    • torsten_esdar
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo,

    gibt es den niemanden der mit bei meinem Problem mit

    Bild := importFile(this, text(myURL), "bild.png")

    helfen kann?

    • UweG
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Versuche mal die erzeugte Url direkt in ImportFile() zu integrieren ohne den Zwischenschritt ihn erstmal abzuspeichern.
     

    let bic := "PBNKDEFF";let iban := "DE95360100430*********";let verwendung := urlEncode("Rechnungsnummer: " + text(Rechnungsnummer));let summe := replace(text(format('Summe Brutto', "0.00")), ",", ".");Bild := importFile(this,"https://epc-qr.eu/?bic=" + bic + "&bname=" + urlEncode("Consulting and Office Services") + "&iban=" + iban + "&euro=" + summe + "&info=" + verwendung,"Test.png");
    • torsten_esdar
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo,

    vielen Dank für die Antwort.

    Habe ich probiert, ändert aber leider nichts.

    Gruß, Torsten

      • Ninox-Professional
      • planoxpro
      • vor 2 Jahren
      • Gemeldet - anzeigen

      torsten. esdar Versuch's mal mit dem Dateinamen "Download.png":

      Bild := importFile(this, text(myURL), "Download.png")
      
      • Ninox-Professional
      • planoxpro
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Das war auch Blödsinn, sorry. Keine Ahnung, was da gerade in meinem Kopf vorgegangen ist.

    • torsten_esdar
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo,

    geht leider auch nicht.

    • UweG
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Bei mir funktioniert es aber. Ist die IBAN ausgeschrieben?

    • UweG
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Ich habe es gerade nochmals getestet. Die IBAn muss gültig sein!

    • torsten_esdar
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Ja, klar, die Daten müssen gültig und komplett sein. Sind sie auch, da die url die ich erzeuge in Safari funktioniert und mir der QR angezeigt wird.

    Ich habe natürlich hier in meinem Post nicht alle Daten angegeben.

    Wenn es bei Dir funktioniert, kann ich mir nur noch denken, dass ich etwas falsch mache mit dem Bild Feld.

    Das Bild gibt es als Datenfeld ja nur einmal. Oder ist das schon mein Fehler?

    Dann habe ich Dateihandhabung auf "Beliebige Datei" gesetzt. Größe auf "Original" und Zuweisung auf "Pro Datensatz im Server (Standard).

    Ich habe weder Trigger, noch Hinweis, Feld nur anzeigen wenn oder Schreibar wenn gesetzt.

    Die Eingabe ist auf auf "nicht erforderlich" gesetzt.

    Könntest Du das mal mit Deinen Einstellungen vergleichen?

    Wahrscheinlich mache ich einen ziemlich blöden Fehler...

    Gruß, Torsten

    • UweG
    • vor 2 Jahren
    • Gemeldet - anzeigen
    • torsten_esdar
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo Uwe,

    vielen Dank für deine Beispieldatenbank.

    Es geht jetzt. Das Problem war, dass ich versucht habe, den Code über "Trigger nach Änderung" eines Feldes auszuführen, Du hingegen einen Button dafür benutzt.

    Den Button wollte ich eigentlich vermeiden; der QR Code sollte automatisch erzeugt werden. Wie dem auch sei, vielen vielen Dank nochmals für Deine Hilfe!

    Gruß,

    Torsten

Content aside

  • vor 2 JahrenZuletzt aktiv
  • 22Antworten
  • 1095Ansichten
  • 4 Folge bereits