|
|||
KONTOPRUEF-Navigation: |
IBAN-Konverter für KONTOPRUEF-OFFLINEAuf dieser Seite finden Sie das Grundgerüst eines IBAN-Konverters in Visual Basic. Das Programm ruft die KONTOPRUEF-Funktionen GetIban und GetBic geeignet auf. Das Projekt (inkl. ausführbarer EXE-Datei) kann hier heruntergeladen werden: Es ist nur ein sehr rudimentäres Programm ohne jegliche Fehlerbehandlung, das lediglich die Grundlagen zeigen soll, wie man die Konvertierung angeht: Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonStart.Click If OpenFileDialog.ShowDialog() = DialogResult.OK Then If SaveFileDialog.ShowDialog() = DialogResult.OK Then Dim myKtoPruef As Object Dim myLine As String, myKto As String, myBlz As String, myIbanBic As String, myUN As String myKtoPruef = CreateObject("Bank.KtoPruef") TextBox.AppendText(myKtoPruef.GetVersionExtended() + vbCrLf) Dim myLines() As String = Nothing myLines = IO.File.ReadAllLines(OpenFileDialog.FileName) Dim myCount As Integer = myLines.GetLength(0) For I = 0 To myCount - 1 myLine = myLines(I) TextBox.AppendText("IN: " + myLine + vbCrLf) Dim myParts() As String = Split(myLine, ",") If myParts.GetLength(0) = 3 Then myKto = myParts(1).Replace("""", "") ' ggf. Anführungszeichen entfernen myBlz = myParts(2).Replace("""", "") ' ggf. Anführungszeichen entfernen myIbanBic = myKtoPruef.GetIban(myBlz + "*", myKto, 0) If myIbanBic = "*24 UN" Then ' nicht eindeutig ermittelbar myIbanBic = myKtoPruef.GetIban(myBlz + "*", myKto + "00", 0) myUN = '1' ' Uneindeutigkeitsflag auf 1 setzen Else myUN = "0" ' Uneindeutigkeitsflag auf 0 setzen End If myLine = myParts(0) + ",""" + myIbanBic + """," + myUN TextBox.AppendText("OUT: " + myLine + vbCrLf) My.Computer.FileSystem.WriteAllText(SaveFileDialog.FileName, myLine, I > 0) End If Next I End If End If End Sub Es konvertiert eine (CSV-)Eingabedatei, in der sich drei Werte pro Zeile befinden (ID – z.B. Kundennummer –, Kontonummer und Bankleitzahl) in eine (CSV-)Ausgabedatei, in der sich wiederum die ID befindet, IBAN~BIC und das Uneindeutigkeitsflag (siehe unten). In der gegenwärtigen Version darf als Feldtrenner nur das Komma verwendet werden, und es dürfen auch nur diese drei Felder in einer Zeile stehen! Sie können das Programm natürlich beliebig Ihren Erfordernissen anpassen (Visual Basic Express kann kostenlos von der Microsoft-Website heruntergeladen werden, falls Sie es nicht schon installiert haben). Als Beispiel ist folgende Quelldatei enthalten: 1,"1856","76010085" 2,"7399918","76040061" die folgende Zieldatei ergibt: 1,"DE08760100850000001856~PBNKDEFF760",0 2,"DE79760400610739991800~COBADEFFXXX",1 Wenn in der Zieldatei das hinterste Feld 0 ist, ist die ermittelte IBAN sicher richtig. Wenn hinten eine 1 enthalten ist, ist folgendes passiert: Bei bestimmten Banken (Commerzbank inkl. Ex-Dresdner Bank, Deutsche Bank) können die Kunden Unterkonten haben (die Hauptkontonummer endet dann auf 00, die Unterkonten auf 01, 02, 03 usw.). Wer das nicht braucht oder nutzt, kann die 00 am Ende der Hauptkontonummer im Zahlungsverkehr auch weglassen. Die IBAN muss jedoch immer mit der Unterkontonummer gebildet werden (auch wenn gar keine Unterkonten genutzt werden)! KONTOPRUEF ermittelt anhand Prüfzifferberechnungen, ob für die IBAN das Unterkonto 00 angehängt werden muss oder nicht. Leider ist diese Berechnung nicht in allen Fällen eindeutig, so dass manche IBAN nur "zweifelhaft" ermittelt werden können. In diesen Fällen wird die IBAN mit angehängtem Unterkonto "00" zurückgeliefert (das ist auch die wahrscheinlichere Variante) und das "Zweifel-Flag" auf 1 gesetzt. Die obige Beispielkontonummer "7399918" könnte wie folgt zusammengesetzt sein:
In diesem Beispiel ist (nach meiner langjährigen Erfahrung) die zweite Möglichkeit viel wahrscheinlicher, und zwar aus zwei Gründen:
Das ist aber – zugegebenermaßen – alles nur "sinnvoll geraten". Nach meiner Erfahrung kommen diese Fälle jedoch ohnehin nur höchst selten vor, so dass Sie am besten Ihren Kunden bzw. Geschäftspartner nach der korrekten IBAN fragen sollten, wenn Sie sich nicht sicher sind. |
||
|