0

IBAN Rechner

Hallo.

Ich möchte in meiner PKV Datenbank einen IBAN Rechner aus Kontonummer und BLZ einbauen und dann die erzeugte IBAN in meine Rechnungsmaske übertragen.

Wie stelle ich das an?

Ich weiß, dass die IBAN einmal aus der Länderkennung (DE für Deutschland), dann aus einer zweistelligen Prüfziffer, der BLZ und der Kontonummer mit führenden Nullen besteht. Am Ende sind es 22 Stellen.

Hat jemand die Idee, wie man dafür in Ninox ein Script erstellen kann und einem FX-Feld zuordnen kann?

LG

Peer

12 Antworten

null
    • Peer
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Ich habe gerade noch recherchiert, dass die Länge Länderabhängig ist. Mist.

    Versuchen wir es erstmal für Deutschland.

    Ich habe die Kontonummer zu allererst mit einen "Hilfs"FXFeld mit führenden Nullen erzeugt [format(IBAN,"0000000000")]

    • Peer
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Ich habe im Bezug zu der Prüfziffer folgenden Link gefunden.

    https://www.sparkonto.org/manuelles-berechnen-der-iban-pruefziffer-sepa/

    Bis jetzt habe ich in einem FX-Feld gemacht ...

    let myPruf := "00"; 'Anfangsprüfvariable
    let Code1 := substr('Länderkürzel', 0, 1);
    let Code2 := substr('Länderkürzel', 1, 2);
    let myPrufZiff := BLZ + 'Voll-Kontonummer' + Code1 + Code2 + myPruf;
    myPrufZiff  'Ausgabe der Variable zum Prüfen des Ergebnisses

    • Peer
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Inzwischen habe ich die Lösung gefunden.

    Sie ist zwar kein Meisterwerk der Programmierkunst, erfüllt aber erstmal den Zweck.

    Sicher kann man es schöner und einfacher schreiben und ich bin dankbar für jeden Tipp.

    let myPruf := "00";
    let Code1 := substr('Länderkürzel', 0, 1);
    let Code2 := substr('Länderkürzel', 1, 2);
    let Code3 := "1314";
    let myPrufZiff := BLZ + 'Voll-Kontonummer' + Code3 + myPruf;
    let Block1 := number(substr(myPrufZiff, 0, 9));
    let modBlock1 := Block1 % 97;
    let Block2 := modBlock1 + substr(myPrufZiff, 9, 7);
    let numbBlock2 := number(Block2);
    let modBlock2 := numbBlock2 % 97;
    let Block3 := modBlock2 + substr(myPrufZiff, 16, 7);
    let numbBlock3 := number(Block3);
    let modBlock3 := numbBlock3 % 97;
    let Block4 := modBlock3 + substr(myPrufZiff, 23, 1);
    let numbBlock4 := number(Block4);
    let modBlock4 := numbBlock4 % 97;
    let PrZiff := 98 - modBlock4;
    PrZiff

    LG

    Peer

    • Peer
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo.

    Ich hoffe, das ich hier nicht AlleinUúnterhalter bin. ;-)

    Ich habe in diesem Projekt ein weiteres Problem, dass für die meisten hier kein Kopfzerbrechen auslösen wird, aber ich komme aktuell nicht weiter, weil die NX Programmiersprache und ich noch nicht miteinander klar kommen.

    Ich habe eine importierte Tabelle mit allen deutschen BLZ unteranderem mit den Spalten 'Bankleitzahl', 'BIC' und 'Bezeichnung'. Und ich habe eine Tabelle 'IBAN-Rechner'. Beide Tabellen sind nicht miteinander verknüpft.

    Nun möchte ich bei Eingabe der 'BLZ' in 'IBAN-Rechner' die Bankleitzahl aus 'BLZ.csv' suchen lassen und die dazugehörige 'Bezeichnung' ins Fx-Feld 'Bank' bzw. 'BIC' von IBAN-Rechner eintragen lassen.

    Ich denke, ich brauche eine Select-Anweisung, komme aber aktuell nicht drauf, wie?

    LG Peer

    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Peer,

    ---

    let myBLZ:=BLZ;

    first(select 'BLZ.csv' ['Bankleitzahl'=myBLZ])

    ---

    Leo

    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    let myBLZ:=BLZ;

    (first(select 'BLZ.csv' ['Bankleitzahl'=myBLZ])).Bezeichnung

    • Peer
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Leo.

    Vielen Dank für deine schnelle Hilfe.

    Ich probiere die ganze Zeit mit dieser Syntax, aber wahrscheinlich stehe ich auf dem Schlauch.

    Zum Verständnis...

    Zweiter Post ist Korretur?

     

    LG

    Peer

    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Peer,

    Ja, ich habe vergessen die Bezeichnung hinzufügen

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

    Halo, ich habe das mit der IBAN-Berechnung auch mal so ähnlich gemacht (das Ergebnis allerdings in ein Datenfeld geschrieben, damit die Prozedur nicht immer wieder durchgeführt werden muss):

    let myRest := "";
    let myPZ := "00";
    let myLK := substr(upper(trim(LK)), 0, 2);
    let myLKZ := "1314";
    let myBLZ := replacex(BLZ, "\D", "");
    let myKTO := replacex(KTO, "\D", "");
    if length(myKTO) < 10 then
        myKTO := lpad(myKTO, 10, "0");
    end;
    let Mod97 := myBLZ + myKTO + myLKZ + myPZ;
    let Mod97_1 := number(substr(Mod97, 0, 9));
    myRest := format(Mod97_1 % 97, "00");
    let Mod97_2 := myRest + substr(Mod97, 9, 7);
    myRest := format(number(Mod97_2) % 97, "00");
    let Mod97_3 := myRest + substr(Mod97, 16, 7);
    myRest := format(number(Mod97_3) % 97, "00");
    let Mod97_4 := myRest + substr(Mod97, 23, 7);
    myRest := format(number(Mod97_4) % 97, "00");
    let myPS := format(98 - number(myRest), "00");
    IBAN := myLK + myPS + myBLZ + myKTO

    PROBLEM: Bei Einführung der IBAN wurde festgelegt, dass die Nummern nur von den Banken selbst generiert werden dürfen, weil diese zum Teil unterschiedliche Verfahren zur Positionierung der Kontonummer nutzen und sich dadurch die Prüfsummen ändern. Man bekommt nach dem Standard-Schema in Einzelfällen also falsche Ergebnisse.

    Auch eine Datei mit allen deutschen BLZ würde also m. E. nur dann helfen, wenn dort das jeweilige Verfahren zum Generieren der IBAN dokumentiert wäre, so dass man obige Berechnung ggf. anpassen könnte. Um nur den Namen des jeweiligen Instituts auszulesen, wie Leo es in seinem Beispiel zeigt, ginge es aber natürlich.

    Zum 100-prozentig sicheren Ermitteln der IBAN anhand von BLZ und Kontonummer hilft wahrscheinlich nur eine API-Abfrage entsprechender Web-Services.

    • Peer
    • vor 5 Jahren
    • Gemeldet - anzeigen

    @Leo.

    Danke.

    @Copytexter

    Ich habe das auch gelesen und ich gebe dir recht. Leider gibt es keine "offizielle" API. Und die BLZ werden alle 3 Monate geändert (gelöscht, angepasst usw.)

    Zum Lernen war es aber durchaus hilfreich.

    Und deine Zeilen sind meinen ähnlich, nur professioneller.

     

    LG

    Peer

    • Peer
    • vor 5 Jahren
    • Gemeldet - anzeigen

    @ Leo

    Die Klammer am Anfang und am Ende kann man auch weglassen. Sie ist nicht nötig, oder?

    • Th_Schmitz
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Unter dem Rahmenbedingung, dass sich die häufigsten Bankverbindungen nicht so schnell ändern ist die Wahrscheinlichkeit, dass sich ein Fehler bei der Berechnung einschleicht, verhältnismäßig klein. Es kommt im Zweifel darauf an, welche Bedeutung die IBAN hat. Ich möchte die Berechnung der IBAN dazu nutzen, um meine Eingabe der IBAN des Kunden zu überprüfen. Im Zweifel ergibt sich ein "wahr"-Wert, der eine separate Überprüfung über die im Internet verfügbaren Überprüfungstools erübrigt. Ergibt die Überprüfung jedoch einen "nicht wahr"-Wert, kann der (sonst übliche) Überprüfung erfolgen. 

    Bankleitzahlentabelle mit 15.000 BLZ sowie Hinweisen zur Prüfziffernberechnung Link
    Prüfziffernberechnungsmethoden: Link