Gültigkeit IBAN

Hallo *,

ich versuche gerade, für ein Base-Formular die Gültigkeit einer IBAN mit
einem einfachen Makro zu überprüfen.

Mit CDbl(…………) kann ich die 24 Stellen nicht in eine Zahl pressen.
Dachte ich: Versuche einfach das Ganze mit CDec. Die Funktion steht in
der Hilfe, mal sehen, ob die auch eine Dezimalzahl mit mehr Stellen
kann. Lasse ich das ausführen, dann kommt ein "Nicht implementiert".

Ich werde das Ganze jetzt im Stufenverfahren durchgehen - eben wie eine
schriftliche Rechnung in der Schule. Was ich nur merkwürdig finde: Ich
finde zum einen keine Bezeichnung der Variablen und ihrer Größen in der
Hilfe und zum anderen eine Funktion, die anscheinend gar nicht dabei ist …

Gruß

Robert

Hallo Robert,

ich habe vor einiger Zeit mal in Calc eine Formel gebastelt die mir die Prüfziffer aus einer IBAN herausrechnet. Damit kann man dann die Gültigkeit überprüfen. Eventuell hilft dir das ja bei deinen Überlegungen. Ich stand damals vor dem gleichen Problem. Ich habe die IBAN dann auseinandergenommen, und die Berechnung mit beiden Teilen vorgenommen. Wie es genau ging, weiß ich heute auch nicht mehr. Da müsste ich mich erst wieder tiefer mit der Formel beschäftigen. Vielleicht hast du ja Lust sie zu analysieren und dann für BASE daraus etwas abzuleiten.

Annahme in A1 steht die IBAN:
=WENNFEHLER(98-REST(REST(LINKS(VERKETTEN(TEIL(WECHSELN(A1;" ";"");5;8);TEIL(WECHSELN(A1;" ";"");13;10);UNICODE(LINKS(A1;1))-55;UNICODE(TEIL(A1;2;1))-55;"00");12);97)*10^12+RECHTS(VERKETTEN(TEIL(WECHSELN(A1;" ";"");5;8);TEIL(WECHSELN(A1;" ";"");13;10);UNICODE(LINKS(A1;1))-55;UNICODE(TEIL(A1;2;1))-55;"00");12);97);"Keine gültige IBAN")

mfg

Jürgen

Das ist schon der erste, zweite und dritte Denkfehler gleichzeitig:
Erstens ist die deutsche IBAN nur 22-stellig. Zweitens kann sie im
internationalen Verkehr bis zu 34-stellig sein. Und drittens beinhaltet
sie *auch* *Buchstaben*.

Was zumindest sicher ist, sind die ersten beiden Stellen der Ländercode
(Buchstaben), und die beiden folgenden Stellen eine Prüfziffer. Alles
danach ist länderabhängig, vgl.
https://de.wikipedia.org/wiki/Internationale_Bankkontonummer#IBAN-Struktur_in_verschiedenen_Ländern
.

D.h. du musst überhaupt erst mal den Ländercode auswerten, und abhängig
davon die exakte Länge und Aufteilung ermitteln. das alles muss
eigentlich über Textfunktionen erfolgen, nur so kannst du die einzelnen
Abschnitte sinnvoll extrahieren.

Und dann kommt noch ein vierter Denkfehler dazu: Die größte in OO
verwendbare Variablentype ist IIRC BigInt mit 17 signifikanten Stellen.
Größere Zahlen sind einfach nicht verarbeitbar, zumindest nicht
als
direkte Zahl. Da musst du sowieso entweder auf irgend welche
Hilfskonstruktionen oder (besser, weil einfacher) auf String ausweichen.
Was aber eigentlich keine große Sache ist, denn mit der IBAN selbst
wirst du kaum rechnen wollen (und selbst die Prüfsumme ist ja keine
/Rechnung/ mit der IBAN selbst, sondern lediglich eine mit den einzelnen
Stellen aka *Ziffern* darin.

Wolfgang

Hallo Wolfgang,

ich versuche gerade, für ein Base-Formular die Gültigkeit einer IBAN mit
einem einfachen Makro zu überprüfen.

Mit CDbl(…………) kann ich die 24 Stellen nicht in eine Zahl pressen.

Das ist schon der erste, zweite und dritte Denkfehler gleichzeitig:
Erstens ist die deutsche IBAN nur 22-stellig. Zweitens kann sie im
internationalen Verkehr bis zu 34-stellig sein. Und drittens beinhaltet
sie *auch* *Buchstaben*.

Bitte: Nur die IBAN mit DE. Und aus DE wird bei der Berechnung 1314
(also statt der 22 Stellen eben 24 Stellen)
Beispiel Wikipedia
1 IBAN DE68 2105 0170 0012 3456 78
2 Umstellung 2105 0170 0012 3456 78DE 68
3 Modulo 210501700012345678131468 mod 97 = 1

Und hier ist dann der Code, den ich eben nur für die DE-IBAN erstellt habe:
stStart1 = Trim(Str(CDbl(Mid(stIBAN,5,7)) Mod 97)
stStart2 = Trim(Str(CDbl(stStart1 & Mid(stIBAN,12,7)) Mod 97)
stStart3 = Trim(Str(CDbl(stStart2 & Mid(stIBAN,19)) Mod 97)
IF CDbl(stStart3 & 1314 & stIBAN_PZ) Mod 97 = 1 THEN
ELSE
  msgbox "Die IBAN ist falsch."
END IF

… aber das hatte ich alles in der Vormail ja schon beschrieben. Was mich
im Moment am meisten irritiert ist einfach der Aufbau und die
Verlässlichkeit der Hilfe für LibreOffice (und damit da kein
Missverständnis aufkommt: Der Hilfe, die ich aus dem Programm heraus
aufrufen kann, nicht der, die ich hier bekomme).

Gruß

Robert

Hallo Robert,

im Kapitel 13 Einführung Makros des Handbuchs Erste Schritte habe ich als Beispiel die IBAN-Ermittlung gezeigt, vielleicht hilft dir das weiter.
Und was deine erste Beschreibung der Frage betrifft, möchte ich Wolfgang in Schutz nehmen, ich habe auch nicht genau verstanden, was da kritisiert wird.

Viele Grüße
Gerhard