Zufälliger Artikel

Problemstellung:

Wie kann ich einen Feldnamen mittels ADO(X) ändern?
{xtypo_alert}
Verweis auf die Microsoft ActiveX Data Objects 2.X Library erforderlich
Verweis auf die Microsoft ADO Ext. 2.X for DDL and Security Library erforderlich

{/xtypo_alert} 

Public Sub NewFieldNameADOX(strTableName As String, strFieldName As String, strNewFieldName As String)
'*******************************************
'Name:      NewFieldNameADOX   (Sub)
'Purpose:   Ändert den Name eines Feldes in der gewählten DB mittels ADOX
'Author:    Tommyk
'Date:      Februar 29, 2004, 03:32:46
'Inputs:    strTableName=Name der gewählten Tabelle,
'           strFieldName=Name des Feldes,strNewFieldName=Neuer Name des Feldes
'Output:
'*******************************************
On Error GoTo ErrHandler
Dim cn As New ADODB.Connection
Dim cat As New ADOX.Catalog
Dim tbl As ADOX.Table
Dim col As ADOX.Column
Set cn = CurrentProject.Connection
Set cat.ActiveConnection = cn
Set tbl = cat.Tables(strTableName)
Set col = tbl.Columns(strFieldName)
    col.Name = strNewFieldName
    tbl.Columns.Refresh
ExitHere:
    Exit Sub
ErrHandler:
    Dim strErrString As String
    strErrString = "Error Information..." & vbCrLf
    strErrString = strErrString & "Error#: " & Err.Number & vbCrLf
    strErrString = strErrString & "Description: " & Err.Description
    MsgBox strErrString, vbCritical + vbOKOnly, "Error in Sub: NewFieldNameADOX"
    Resume ExitHere
End Sub

Aufruf:

Call NewFieldNameADOX("tblNeu", "fld_Test2", "fld_NewTest2")

würde eine Tabelle "tblNeu" das Feld "fld_Test2" in "fld_NewTest2" umbenennen.

Ähnliche Artikel

Home

1 1 1 1 1 1 1 1 1 1 Rating 0.00 (0 Votes)
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
    
    'Rerrechnen 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:
(0 Stimmen)

Errechnen einer IBAN mit Access

ab A00

Die Zip-Datei enthält eine Version ab A2000
 
Datum 05.02.2018
Dateigröße 22.9 KB
Download 1.285

Ähnliche Artikel

Kommentar schreiben

Sicherheitscode
Aktualisieren

Login Form

1.png1.png9.png1.png6.png6.png7.png
Heute1
Gestern84
Diese Woche224
Dieser Monat1600
Total1191667

  • IP: 54.161.45.156
  • Browser: Unknown
  • Version:
  • OS: Unknown

Online

1
Online

26. April 2018