Onlinebanking mit SEPA

SEPA wird ab 1. Februar 2014 Standard beim Onlinebanking. Damit Sie gerüstet sind, zeigen wir Ihnen, wie Sie beispielsweise Kontostände abfragen, Buchungen einlesen und überweisungen durchführen. Grundlage ist die DDBAC-Bibliothek der Firma DataDesign. Die Bibliothek stellt die grundlegenden Funktionen zur Verfügung und kann zu Testzwecken kostenlos eingesetzt werden.

Warum SEPA

SEPA (Single Euro Payments Area, einheitlicher Euro-Zahlungsverkehrsraum) ist die Bezeichnung für ein Projekt für die Vereinheitlichung und Erleichterung des bargeldlosen Zahlungsverkehrs von Zahlungen in Euro.

Dies bezieht sich zum Beispiel darauf, dass der Zahlungsverkehr zwischen verschiedenen Ländern vereinfacht wird, dass Zahlungen schneller auf dem Zielkonto eingehen (bei Lastschriften sofort und bei überweisungen in einem Tag) und dass die Zahlungsinformationen in XML übertragen werden und somit weniger Probleme durch verschiedene Protokolle im internationalen Zahlungsverkehr auftreten.

Konkrete änderungen sind, dass Kontonummer und Bankleitzahl für Zahlungen bald nicht mehr genutzt werden können und diese durch IBAN und BIC ersetzt werden.

IBAN ist die International Bank Account Number und dient der Standardisierung der vielen verschiedenen Formate für Kontonummern in den verschiedenen Ländern. In Deutschland besteht die IBAN aus zwei Buchstaben für die Länderkennung (DE), zwei Zahlen für eine Prüfsumme, eine achtstellige Bankleitzahl und eine zehnstellige Kontonummer. In anderen Ländern variiert der Aufbau. BIC ist die Abkürzung für Business Identifier Code und dient prinzipiell als eine Art Bankleitzahl.

Sie besteht mindestens aus acht Zeichen, wobei die ersten vier dem Bank-Code entsprechen, die folgenden zwei dem Ländercode und die letzten zwei dem Ort. Zusätzlich kann mit drei Zeichen eine Kennzeichnung einer Filiale oder Abteilung hinzugefügt werden.

Voraussetzungen

Voraussetzung zum Nachvollziehen der Beispiele dieses Beitrags ist die Installation des DDBAC Software Development Kits, das Sie unter dem Link http://ddbac.de/index.php/menu-endanwender-user/menu-e-u-updates-download finden.

Achtung: Sie dürfen diese Software ohne Lizenz ausschließlich zu Testzwecken oder für private Zwecke einsetzen. Ohne Lizenz darf die Funktionsbibliothek weder für geschäftliche Zwecke genutzt noch als Teil einer Anwendung weitergegeben werden.

Wir arbeiten jedoch an einer günstigen Lizenzform für die Leser von Access im Unternehmen – mehr dazu im Newsletter (Anmeldung: http://access-im-unternehmen.de/index.phpid=380).

Nach der Installation des Pakets müssen Sie zunächst Ihre Bankverbindungen einrichten. Dies erledigen Sie zunächst noch völlig ohne Hilfe von Access, nämlich über die Systemsteuerung.

Sie finden dort einen Eintrag namens Homebanking Kontakte, der nach einem Doppelklick den Dialog aus Bild 1 anzeigt.

Der noch leere Dialog der Banking-Kontakte

Bild 1: Der noch leere Dialog der Banking-Kontakte

Mit der Schaltfläche Neu legen Sie nun einen neuen Eintrag an. Ein Homebanking-Kontakt ist eine Zusammenfassung eines oder mehrerer Konten bei einem Kreditinstitut. Geben Sie hier zunächst die Bankleitzahl der Bank ein und klicken Sie dann auf Weiter (s. Bild 2). Der Dialog ermittelt nun alle Zugangsarten für diese Bank und zeigt diese zwei Dialoge später an (s. Bild 3).

Auswahl einer Zugangsart

Bild 2: Auswahl einer Zugangsart

Anlegen eines neuen Banking-Kontakts

Bild 3: Anlegen eines neuen Banking-Kontakts

Wenn Sie sich wundern, dass beispielsweise die Option PIN/TAN nicht aktiviert ist, springen Sie nochmal einen Schritt zurück: Wenn Sie dort die Option Zugangsdaten manuell eingeben (für Experten) aktivieren, werden gegebenenfalls weitere Zugangsoptionen angezeigt.

In Abhängigkeit von der gewählten Zugriffsart geben Sie in den folgenden Dialogen verschiedene Informationen an – bei Verwendung einer Schlüsseldatei müssen Sie etwa deren Speicherort angeben.

Oder Sie müssen sicherstellen, dass bei Verwendung eines Chipkartenlesers auch ein entsprechendes Gerät angeschlossen ist. Je nach der Zugangsart müssen Sie unter Umständen Informationen oder Geräte von Ihrem Kre-dit-in-stitut anfordern. Sind die für die Konfiguration der Zugangsart nötigen Schritte erledigt, wählen Sie eine der angebotenen HBCI-Versionen aus (s. Bild 4).

Auswahl der HBCI-Version

Bild 4: Auswahl der HBCI-Version

Schließlich geben Sie die Verbindungsdaten für das Kreditinstitut ein, die aber normalerweise schon vorhanden sein sollten (zum Beispiel hbci.commerzbank.de).

Klicken Sie im Dialog aus Bild 5 dann auf die Schaltfläche Verbindung testen, um die Funktion zu prüfen. Ein frisch erstellter Kontakt sieht schließlich wie in Bild 6 aus. Legen Sie die gewünschten Banking-Kontakte an und schließen Sie den Dialog – von nun an geht es mit Access weiter.

Verbindungsdaten des Kreditinsituts

Bild 5: Verbindungsdaten des Kreditinsituts

Frisch erstellter Kontakt

Bild 6: Frisch erstellter Kontakt

Customers und Accounts

Unter VBA heißt das, was Sie soeben über den entsprechenden Dialog der Systemsteuerung angelegt haben, BACCustomer.

Ein BACCustomer kann jedoch ein oder mehrere Konten besitzen, die Sie über die Accounts-Auflistung ermitteln. Ein Konto entspricht wiederum einem BACAccount-Objekt. Konten können Giro-Konten sein, aber auch Tagesgeldkonten, Kreditkarten und mehr. übrigens: Der BACContact kann in den hier vorgestellten Beispielen synonym zum BACCustomer verwendet werden.

Wie verwalten

In einer Datenbankanwendung stellt sich immer die Frage, wie Daten in Tabellen verwaltet werden. Wenn die Basisdaten, also die Bankkonten, mit einer externen Anwendung verwaltet werden, muss man diese Daten dann noch zusätzlich in Tabellen vorhalten Tatsache ist: Es kann sein, dass Sie mit dem Assistenten ein Bankkonto anlegen.

Wenn Sie dieses zusätzlich in einer Tabelle speichern, liegen die Daten doppelt vor. Sie können dann allerdings die in Zusammenhang mit diesem Konto anfallenden Daten wie etwa die Buchungen in einer Tabelle speichern und von dieser Tabelle aus das entsprechende Konto referenzieren.

Damit würden Sie dem vorbeugen, dass ein Konto einmal gelöscht und nicht mehr über DDBAC zugreifbar ist oder dass sich Daten ändern, die mit dem Konto zusammenhängen. Aber letztlich benötigt man zum Speichern einer Buchung doch nur die üblicherweise anfallenden Metadaten – im Falle des eigenen Bankkontos die Kontonummer und die Bankleitzahl, unter welcher die Buchung durchgeführt wurde.

Was aber, wenn Sie beispielsweise mit Ihrer mit Access erstellten Homebanking-Lösung auf einen anderen Rechner ziehen, der die Bankverbindungen noch nicht kennt Von dort aus können Sie dann weder Kontostände noch -bewegungen abrufen noch Aktionen wie überweisungen initiieren.

Aber können Sie das, wenn die Bankdaten in einer Tabelle der Datenbank gespeichert sind Nein: Die Daten müssen der DDBAC-Komponente bekannt sein und an der entsprechenden Stelle in der Registry gespeichert sein. Die Kontakte lassen sich auch nicht einfach per VBA anlegen – Sie werden beim Umzug also die Kontakte neu anlegen müssen.

Oder Sie kopieren die Datei mit den benutzerdefinierten DDBAC-Daten, die Sie unter dem Namen ddusers.dat im Verzeichnis C:\Users\\AppData\Roaming\DataDesign\DDBAC finden, vom alten auf den neuen Rechner. Wir belassen es also dabei, die Kombination aus Bankleitzahl und Kontonummer mit Daten wie etwa den Buchungen zu speichern und verzichten auf das Anlegen einer Tabelle für die Bankkonten.

Kontakte und Konten auslesen

Listing 1 zeigt, wie Sie per VBA auf die Kontakte und Konten zugreifen, die DDBAC in der Datei ddusers.dat gespeichert hat. Die Prozedur benötigt zunächst das Hauptobjekt des Typs BACBanking. In einer äußeren For Each-Schleife durchläuft die Prozedur nun die Elemente der Auflistung Customers. Dieses liefert als Eigenschaften beispielsweise die übergeordnete Benutzernummer (die in manchen Fällen der Kontonummer plus weiteren Zahlen entspricht), die Bankleitzahl oder die Anzahl der in diesem Kontakt enthaltenen Konten.

Die Konten wiederum sprechen Sie über die Auflistung Accounts des BACCustomer-Objekts an. Das BACAccount-Objekt liefert mit AcctName die bankinterne Bezeichnung der Kontenart, mit AccountNumber die Kontonummer und weitere Informationen.

SEPA oder nicht SEPA

Interessant ist in Zusammenhang mit dem vorliegenden Beitrag die Information, ob ein Account SEPA-fähig ist oder nicht. Dies bekommen Sie relativ einfach per VBA heraus – das BACAccount-Objekt liefert nämlich mit einer Eigenschaft namens IsSepa die Antwort. Hat diese den Wert True, können Sie das Konto für SEPA nutzen.

BIC und IBAN

Die bereits weiter oben vorgestellten Eigenschaften BIC und IBAN können Sie ebenfalls aus dem BACAccount-Objekt auslesen, und zwar über die gleichnamigen Eigenschaften. Bevor wir zur SEPA-überweisung kommen, schauen wir uns jedoch noch an, was die Beispieldatenbank noch zu bieten hat.

Kontostand und Umsätze

Das Formular aus Bild 7 bietet die Möglichkeit, Bankverbindungen und Konten auszuwählen und den aktuellen Kontostand und die Umsätze einzulesen.

Anzeigen von Bankverbindungen, Konten, Kontostand und Umsätzen

Bild 7: Anzeigen von Bankverbindungen, Konten, Kontostand und Umsätzen

Bankverbindungen eintragen

Das Eintragen der Bankverbindungen geschieht beim Laden des Formulars. Die Form_Load-Ereignisprozedur liest dann die in der oben angegebenen Textdatei enthaltenen Bankverbindungs- und Kontodaten in das Kombinationsfeld cboContacts ein.

Aus einer Tabelle namens tblOptionen holt das Formular sich den zuletzt ausgewählten Datensatz für dieses Feld, soweit vorhanden. Falls ja, wird die Bankverbindung eingestellt und das Formular liest auf die gleiche Weise das zuletzt verwendete Konto ein. In diesem Fall werden auch gleich die bereits gespeicherten Umsätze eingelesen und im Unterformular angezeigt (s. Listing 2). Wählt der Benutzer eine neue Bankverbindung aus, liest das Formular alle Konten zu dieser Bankverbindung ein und bietet diese im unteren Kombinationsfeld zur Auswahl an (s. Listing 3). Anschließend muss er noch das Konto auswählen, damit die entsprechenden Umsätze im Unterformular erscheinen:

Private Sub Form_Load()
     Dim intLastContact As Integer
     Dim intLastAccount As Integer
     Me!cboContacts.RowSource = GetContacts
     intLastContact = Nz(DLookup("LetzterBankkontakt", "tblOptionen"), -1)
     If Not intLastContact = -1 Then
         Me!cboContacts = Me!cboContacts.ItemData(intLastContact)
         Me!cboAccounts.RowSource = GetAccounts(intLastContact)
         intLastAccount = Nz(DLookup("LetztesKonto", "tblOptionen"), -1)
         If Not intLastAccount = -1 Then
             Me!cboAccounts = Me!cboAccounts.ItemData(intLastAccount)
             UnterformularFiltern
         End If
     End If
End Sub

Listing 1: Laden des Formulars frmHomebanking

Private Sub cboAccounts_AfterUpdate()
     If IsNull(Me!cboAccounts) Then
         UnterformularLeeren
     Else
         UnterformularFiltern
     End If
End Sub

Die Daten des Unterformulars stammen aus der Tabelle tblUmsaetze. Das Unterformular wird durch die Prozedur UnterformularFiltern gefüllt. Die Prozedur liest die Bankverbindung und das Konto aus den beiden Kombinationsfeldern cboContacts und cboAccounts ein und stellt einen entsprechenden Filter zusammen, der die gewünschten Datensätze der Tabelle tblUmsaetze liefert (s. Listing 4).

Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

den kompletten Artikel im PDF-Format mit Beispieldatenbank

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar