IBAN Berechnung

  • VB.NET

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von petaod.

    IBAN Berechnung

    Hallo, ich möchte anhand von Kontonummer und BLZ die IBAN (Prüfziffer) berechnen.
    Da diese Zahl sehr groß ist bekomme ich schon bei der Deklaration einen Überlauf.
    Wie kann ich eine sehr große Zahl (24 Stellen) deklarieren, damit ich mit ihr rechnen kann

    VB.NET-Quellcode

    1. Dim Zahl As Decimal = 700901001234567890131400
    Beim Test auf eine gültige IBAN ist aber wieder ein BigInteger notwendig …



    Oder auch nicht.

    Hier ein (nicht .net) Basic-Beispiel



    VB.NET-Quellcode

    1. Dim ibanstr as String
    2. Dim x as integer
    3. ibanstr = "210501700012345678131468"
    4. 'zur MOD-Berechnung String in max. 9 Stellen lange Stücke aufteilen
    5. WHILE LEN(ibanstr) > 9
    6. x = VAL(LEFT$(ibanstr, 9)) MOD 97
    7. ibanstr = cstr(x) & MID$(ibanstr, 10)
    8. ?x,ibanstr
    9. WEND
    10. x = VAL(LEFT$(ibanstr, 9)) MOD 97
    11. If x = 1 Then Print "OK"


    Die IBAN-Nr. ist übrigens OK.
    Ja, so geht's auch (hab's nach VB übersetzt und getestet)...

    VB.NET-Quellcode

    1. Dim ibanstr = "210501700012345678131468"
    2. Dim x = 0
    3. 'zur MOD-Berechnung String in max. 9 Stellen lange Stücke aufteilen
    4. While ibanstr.Length > 9
    5. x = CInt(ibanstr.Substring(0, 9)) Mod 97
    6. ibanstr = CStr(x) & ibanstr.Substring(9)
    7. Console.WriteLine("{0} -- {1}", x, ibanstr)
    8. End While
    9. x = CInt(ibanstr) Mod 97
    10. If x = 1 Then Console.WriteLine("OK")
    Vorsicht.
    Die oben beschriebenen Verfahren testen in der Tat die Richtigkeit der Prüfziffer für eine numerische Zeichenfolge
    NICHT geprüft wird nach diesem Verfahren zulässige Länger des Zeichenstrings in Abhängigkeit vom IBAN-Staat (ist nämlich durchaus unterschiedlich), sowie die Validität von Bankidentifikation und Kontoidentifikation.
    Hier gibts dann viel Spass bei den 999.999 Verfahren zur Prüfziffernberechnung einer Kontonummer - Ist bestimmt leistbar, aber eine Fleissaufgabe.

    Hier geht's um Geld, wenn Prüfung, dann komplett !!!! (Haftung beachten)

    Referenzen:
    IBAN - International Bank Account Number
    Bundesbank IBAN-Regeln
    Danke erst mal für die vielen Hilfreichen Antworten. Hatte bisher noch keine Zeit mich weiter damit zu beschäftigen, werde auch die nächsten Tage nicht dazu kommen.

    Es geht eigentlich nur darum für unseren Sportverein in der Mitgliederverwaltung aus den bestehenden BLZ' und Kontonummern die gültige IBAN zu ermitteln, damit man nicht jede von Hand eingeben muss. Diese werden dann natürlich noch überprüft. Alternativ überlege ich mir diese Überprüfung oder schon gleich die Erstellung der IBAN über eine Webseite(z.B. Sparkasse) durchzuführen.
    Hier noch ein VBa-Beispiel um eine komplette IBAN zu prüfen:
    (Sollte für Deutschland reichen).

    VB.NET-Quellcode

    1. Sub IbanTest()
    2. Dim IBAN As String
    3. Dim x As Boolean
    4. IBAN = "DE68 2105 0170 0012 3456 78"
    5. If IBANOK(IBAN) Then
    6. MsgBox (IBAN & vbLf & "OK")
    7. Else
    8. MsgBox (IBAN & vbLf & "Falsch")
    9. End If
    10. End Sub
    11. Function IBANOK(ByVal IBAN As String) As Boolean
    12. Dim IBANstr As String, t As String
    13. Dim i As Long, x As Long
    14. IBANstr = UCase$(Replace(IBAN, " ", ""))
    15. If Len(IBANstr) < 5 Then
    16. IBANOK = 0
    17. Exit Function
    18. End If
    19. IBANstr = Mid$(IBANstr, 5) & Mid$(IBANstr, 1, 4)
    20. 'Buchstaben durch Zahlen ersetzen
    21. For i = 65 To 90
    22. IBANstr = Replace(IBANstr, Chr$(i), CStr(i - 55))
    23. Next
    24. 'Oder DE einfach durch 1314 ersetzen
    25. 'zur MOD-Berechnung String in max. 9 Stellen lange Stücke aufteilen
    26. While Len(IBANstr) > 9
    27. x = Val(Left$(IBANstr, 9)) Mod 97
    28. IBANstr = CStr(x) & Mid$(IBANstr, 10)
    29. Wend
    30. x = Val(Left$(IBANstr, 9)) Mod 97
    31. 'Debug.Print x
    32. IBANOK = (x = 1)
    33. End Function
    @Eierlein
    Schöner Code in VBA.
    Aber ... eine IBAN besteht in DEUTSCHLAND aus dem Länder-Kennzeichen DE, der 2-stelligen Prüfziffer des restlichen Ziffernstrings.
    Die ersten 8 Zeichen, linksbündig mit "0" aufgefüllt repräsentieren IN DEUTSCHLAND die bisherige Bankleitzahl, danach können bis zu 30 Stellen Konto-ID angegeben werden.
    Im leeren raum:
    Die 8 Stellen Bankleitzahl und die 30 Stellen Kontonummer können beliebiger Schrott sein. Wenn die Prüfziffer aus diesem Schrott in der IBAN richtig angegeben wird, so wird die Funktion sagen: OK, is ne gültige IBAN.
    Bei einer ernsthaften Prüfung MUSS die Bankleitzahl auf Validität geptüft werden (Bankleitzhalverzeichnis im Excel-Format gibt's bei der Bundesbank.
    Dann hat jede Bank einen eigenen aufbau der Kontonummer. Nix genormt. Und jede Bank hat ein eigenes Prüfziffernverfahren (auch in der genannten Excel-Datei), mit dem die Validität einer Kontonummer überprüft werden kann.
    Ohne Werbung zu betrieben: Deutsche Bank macht was grundsächlich Anderes als z.B. die Sparkassen.
    Nur dann gibt's eine Aussage über die Gültigkeit einer IBAN.