Search  

   

Latest News  

Problemstellung:Wenn man Etiketten drucken will steht man oft vor einigen Problemen.1. Man möchte nur ein paar Etiketten drucken und beim nächsten Druck braucht man wieder   ein neues Blatt weil freie...
   

Latest Forumposts  

  • Keine Beiträge vorhanden
   

Kommentare  

Tut mir leid Hella, ich kann Dir nicht folgen? 13.04.2017 - 14.04.2017 ergibt bei mir 1 13.04.2017 -...
Gast - Hella
Hallo, Berechne wie folgt, ob "zu früh" oder "zu spät" Rückmeldet. Früher sollte auch mit negativer ...
Gast - Hella
Hallo, mit negativen Werten meine ich z.B. -5 Tage (ohne Wochenende) u.ä. Zur Zeit wird nur die 0 au...
Hallo Hella, wie negative Werte? Kannst Du es erläutern was Du machen willst? Gruß Tommy
Gast - Hella
Hallo, ich bräuchte auch negative Werte bei der Anzahl, wie kann man das realisieren? Liebe Grüße He...
   

Counter  

1113835
HeuteHeute566
GesternGestern1041
Diese WocheDiese Woche566
Dieser MonatDieser Monat22047
GesamtGesamt1113835
Highest 07.12.2017 : 1250
US
UNITED STATES
US

This page uses the IP-to-Country Database provided by WebHosting.Info (http://www.webhosting.info), available from http://ip-to-country.webhosting.info

   

Download Statistik  

Diese Site enthält 187 Downloads in 30 Kategorien. Gesamtdownloads bisher: 234281
   
Free live stats and visitor counter for Joomla, Wordpress, Drupal, Magento and Prestashop
   

Login

   

User Online

Total: 66 Members: 0 Guests: 66
No members online
   

Errechnen einer IBAN mit Access

Bewertung:  / 1
SchwachSuper 
Details
Problemstellung:
Wie kann man in MS-Access ein IBAN (International Bank Account Number) berechnen?

Voraussetzungen:
Das Bsp ist ab A2000 lauffähig. (Download enthält eine mdb-Datei)

Lösung:
Dazu muss man den Aufbau der IBAN kennen. Sie steht aus max. 34 Stellen.
z.B. für Deutschland
DE21200500000123456000
Die ersten beiden Stellen enthalten das Länderkennzeichen.
Einige Länder sind in der Bsp-DB enthalten.
Ausführliche Informationen hier
Die 3. und 4. Stelle enthält die Prüfziffer die es gilt zu berechnen.
Dann kommt die BLZ und die Kontonummer. Diese haben je nach Land unterschiedliche Längen.
In der Bsp-DB sind für einige Länder diese Daten bereits enthalten.
Die Berechnung der Prüfziffer erfolgt nach der Modulus 97-10 Methode nach ISO 7064.
Da am Anfang die Prüffziffer unbekannt ist wird 00 eingesetzt.
Beispiel: DE00672500200001234560
DE Länderkenzzeichen
00 Prüfziffer noch unbekannt
67250020  BLZ in Deutschland immer 8 Stellen
1234560 Kontonummer (10 Stellen erforderlich, bei weniger werden die fehlenden Stellen mit führenden Nullen aufgefüllt)

1. Schritt
Die ersten 4 Stellen werden an das Ende gesetzt

2. Schritt
Die beiden Buchstaben des Länderkürzels müssen in numerische Werte umgewandelt werden.
Die Übersetzung dafür ist A=10, B=11,..., Z=35
Das Zwischenergebnis sähe so aus:

67250020 0001234560 1314 00
Stelle 1-8 BLZ
Stelle 9-18 Kontonummer
Stelle 19-20 D=13
Stelle 21-22 E=14
Stelle 23-24 Prüfziffer derzeit noch 00

3. Schritt
Berechnung nach Modulo 97 Methode

672500200001234560131400 Mod 97


Das geht aber nicht da es zu einem Buffer Overrun kommt. VBA ist nicht in der Lage mit
solchen großen Zahlen richtig umzugehen.
Deshalb greifen wir auf eine Hilfsmethode zurück (Division großer Zahlen (9 Stellen-Methode))
Es wird der Rest der ersten 9 Stellen berechnet, also in unserem Bsp:

672500200 Mod 97


Der Rest wird diese an den Anfang des nächsten Blocks gesetzt und mit den weiteren Zahlen unseres IBAN Strings bis
zur 9. Stelle aufgefüllt usw..
Die letzte Berechnung ergibt dann die IBAN-Prüfziffer.
Die Bsp.-DB funktioniert dann folgendermaßen:
Im Modul "mod_Global" sind 2 Prozeduren und 2 globale Variablen enthalten.

'Arrayvariable für die Zuordnung des LKZ zu numerisch
Public vArray(26, 2) As Variant
'Anfangswert der Prüfziffer ist 0
Public Const cPP As Integer = 0
Public Function Fill_LKZ_Array()
    Dim i As Integer
    For i = 0 To 25
        vArray(i, 0) = i + 10
        vArray(i, 1) = Chr(i + 65)
    Next i
End Function
Public Function SearchArray(sSearch As String) As Integer
    Dim i As Integer
    For i = 0 To 25
        If vArray(i, 1) = sSearch Then
            SearchArray = vArray(i, 0)
            Exit For
        End If
    Next i
End Function

Die Erste füllt beim Aufruf ein Array mit den Zuordnungen der LKZ zu den Zahlen.
Die Zweite wird dann benötigt um nach der Länderauswahl die jeweiligen Zahler aus dem Array zu ermitteln.

Die Berechnung erfolgt dann mit dem Klick auf den Button "IBAN berechnen" in dem Form:

Private Sub cmd_IBAN_Click()
    Dim vLetter1 As Variant, vLetter2 As Variant
    Dim vEmptyPP As Variant, vTempKtoNr As Variant, iKtoLength As Integer, iIBANLength As Integer
    Dim vTempIBAN As Variant, k As Integer, i As Integer, iRest As Integer
    Dim iRestLength As Integer, iAllLength As Integer, vResult As Variant
    '******************************************************************************
    'Prüfen ob Felder BLZ und KtoNr gefüllt sind
    If Me.txt_BLZ = "" Or IsNull(Me.txt_BLZ) Then
        MsgBox "Keine BLZ eingegeben!", vbCritical + vbOKOnly, "Fehler"
        Me.txt_BLZ.SetFocus
        Exit Sub
    Else
        If Len(Me.txt_BLZ) <> CInt(Me.cbo_Land.Column(3)) Then
            MsgBox "Die BLZ muss für das gewählte Land muss " & Me.cbo_Land.Column(3) & " Stellen haben!", vbCritical + vbOKOnly, "Fehler"
            Me.txt_BLZ.SetFocus
            Exit Sub
        End If
    End If
    If Me.txt_KtoNr = "" Or IsNull(Me.txt_KtoNr) Then
        MsgBox "Keine KtoNr eingegeben!", vbCritical + vbOKOnly, "Fehler"
        Me.txt_KtoNr.SetFocus
        Exit Sub
    End If
    '******************************************************************************
    'Prüfziffer zum Start auf 00 setzen
    vEmptyPP = Format(cPP, "00")
    'Zuordnung der Kennzahlen des LKZ's aus dem Array
    vLetter1 = SearchArray(Left(Me.cbo_Land.Column(1), 1))
    vLetter2 = SearchArray(Right(Me.cbo_Land.Column(1), 1))
    'Länge der KtoNr bestimmen und bei Bearf mit Nullen vorn auffüllen
    iKtoLength = Len(Me.txt_KtoNr)
    If iKtoLength < Me.cbo_Land.Column(4) Then
        vTempKtoNr = Format(0, String$(Me.cbo_Land.Column(4) - iKtoLength, "0")) & Me.txt_KtoNr
    Else
        vTempKtoNr = Me.txt_KtoNr
    End If
    'Aufbau der temporären IBAN und deren länge bestimmen
    vTempIBAN = Me.txt_BLZ & vTempKtoNr & vLetter1 & vLetter2 & vEmptyPP
    iIBANLength = Len(vTempIBAN)
    'Anzahl der Durchläufe in 9er Schritten bestimmen da VBA nicht mit solch großen Zahlen rechnen kann
    k = Int(iIBANLength / 9) + 2
    'Durchlaufen der temp. IBAN in 9er Schritten und berechnen der jeweiligen Prüfziffer
    For i = 1 To k
        If i = 1 Then
            '1. Durchlauf immer 9 Stellen
            iRest = Left(vTempIBAN, 9) Mod 97
            iRestLength = Len(iRest)
            iAllLength = 9
        ElseIf i = 2 Then
            '2. Durchlauf Anzahl der Stellen der 1. Prüfziffer und weiteren Stellen der
            'temp IBAN auffüllen bis 9 Stellen
            iRest = (iRest & Mid(vTempIBAN, 10, 9 - iRestLength)) Mod 97
            iRestLength = Len(iRest)
            iAllLength = iAllLength + (9 - iRestLength)
        Else
            iRest = (iRest & Mid(vTempIBAN, iAllLength + 1, 9 - iRestLength)) Mod 97
            iRestLength = Len(iRest)
            iAllLength = iAllLength + (9 - iRestLength)
            'Ist die Länge der temp. IBAN ereicht dann raus hier
            If iAllLength >= iIBANLength Then
                vResult = iRest
                Exit For
            Else
                vResult = iRest
            End If
        End If
    Next i
    'Errechnen der Prüfziffer
    vResult = 98 - vResult
    'Komplette IBAN anzeigen
    Me.txt_IBAN = Me.cbo_Land.Column(1) & Format(vResult, "00") & Me.txt_BLZ & vTempKtoNr
End Sub


Das Ergebnis in unserem Fall wäre als Prüfziffern die "09"



Dateien:
Errechnen einer IBAN mit Access

Errechnen einer IBAN mit Access
ab A2000

Die Zip-Datei enthält eine Version ab A2000
Datum 16.06.2011 Dateigröße 21.62 KB Download 1273

Einen Kommentar verfassen

Als Gast kommentieren

0 / 300 Zeichen Beschränkung
Dein Text sollte zwischen 10-300 Zeichen lang sein
Nutzungsbedingungen.

Personen in dieser Konversation

  • Gast - Ralf

    habe mir die Datenbank angesehen und funktioniert auch super.
    Bei den Konten der Deutschen Bank hat es für die Erstellung der IBAN Veränderungen gegeben !
    Frage: Kann da jemand behilflich sein und die Berechnung in der Funktion entsprechend ändern ??
    Danke!!!

  • Als Antwort auf: Gast - Ralf

    Hallo Ralf,

    was hat sich denn verändert?
    Du kannst auch im Forum mit Deiner Frage einen Thread eröffnen.

    Gruß Tommy