{"id":55000488,"date":"2007-08-01T00:00:00","date_gmt":"2021-02-11T21:17:48","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=488"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Onlinebanking_mit_HBCI_Teil_2","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Onlinebanking_mit_HBCI_Teil_2\/","title":{"rendered":"Onlinebanking mit HBCI, Teil 2"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg07.met.vgwort.de\/na\/a187f381de35445d8091165477d23cc6\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Eine eigene Anwendung mit Zugriff auf das Konto oder die Konten des Benutzers &#8211; das k&ouml;nnte in vielen F&auml;llen eine enorme Erleichterung sein. So k&ouml;nnten Sie beispielsweise regelm&auml;&szlig;ig die auf dem Bankserver gespeicherten Vorg&auml;nge herunterladen und in einer passenden Tabelle speichern. Auf diese Weise haben Sie alle Daten digital verf&uuml;gbar anstatt nur diejenigen der letzten 90 Tage, wie es &uuml;blicherweise der Fall ist. Die Suche nach bestimmten Informationen und der Ausdruck individueller Auswertungen ist dann ein Kinderspiel, wie der vorliegende Beitrag zeigt.<\/b><\/p>\n<\/p><\/div>\n<div class=\"story\">\n<p>Im ersten Teil dieser Beitragsreihe (Shortlink 468) haben Sie erfahren, wie Sie den Kontostand eines Kontos ermitteln und die Kontoums&auml;tze einlesen. Dies sollen Sie nun ausnutzen und die gewonnenen Daten in die Tabelle einer Datenbank eintragen.<\/p>\n<p>Nebenher sollen diese Daten nat&uuml;rlich auch in ansprechender Form pr&auml;sentiert werden und auch eine neue Technik lernen Sie in diesem Beitrag kennen &#8211; n&auml;mlich das Absetzen einer &uuml;berweisung mit Access und der DDBAC-Bibliothek.<\/p>\n<p>Die Beispieldatenbank empf&auml;ngt den Benutzer mit dem Formular aus Bild 1. Es zeigt im Wesentlichen die Vorg&auml;nge eines bestimmten Zeitraums f&uuml;r das aktuell im Kombinationsfeld ausgew&auml;hlte Konto an.<\/p>\n<div class=\"image\">\n            <img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_04\/OnlinebankingMitHBCCI_II_3-web-images\/pic001_opt.jpeg\" alt=\"pic001.tif\" \/>\n        <\/div>\n<div class=\"story\">\n<p><b><span style=\"color:darkgrey\">Bild 1: Buchungsvorg&auml;nge im Formular<\/span><\/b><\/p>\n<\/p><\/div>\n<p>Zusammenfassend noch einmal die Voraussetzungen f&uuml;r den Online-Zugriff auf Ihre Konten:<\/p>\n<ul>\n<li class=\"aufz-hlung\">Die DDBAC-Software muss installiert sein. Sie finden diese Software entweder auf der Heft-CD oder in der jeweils aktuellsten Fassung unter [1].<\/li>\n<li class=\"aufz-hlung\">Sie m&uuml;ssen &uuml;ber ein f&uuml;r Onlinebanking eingerichtetes Konto verf&uuml;gen, was in der Regel der Fall sein d&uuml;rfte, wenn Sie via Internet auf das Konto zugreifen. Die DDBAC-Bibliothek erlaubt verschiedene Zugriffsarten &#8211; etwa HBCI\/FinTS mit Schl&uuml;sseldatei oder Chipkarte sowie HBCI+ oder FinTS mit PIN und TAN. Im Rahmen der Erstellung dieses Beitrags werden die Schl&uuml;ssel- sowie die PIN\/TAN-Variante getestet und f&uuml;r gut befunden.<\/li>\n<li class=\"aufz-hlung\">Sie haben das Konto f&uuml;r den Zugriff via DDBAC eingerichtet. Dies erledigen Sie nach der Installation der Software unter dem Punkt <b>Homebanking Kontakte <\/b>der Systemsteuerung. Fertig eingerichtete &#8222;Kontakte&#8220; sehen etwa wie in Bild 2 aus.<\/li>\n<li class=\"aufz-hlung\">Achten Sie unter neueren Access-Versionen (ab Access 2003) vorsichtshalber auch darauf, dass die Ausf&uuml;hrung des VBA-Codes der Anwendungen nicht durch entsprechende Sicherheitseinstellungen unterbunden wird (das nur, weil es dem Autor beim Vorf&uuml;hren passiert ist &#8230;).<\/li>\n<\/ul>\n<div class=\"image\">\n            <img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_04\/OnlinebankingMitHBCCI_II_3-web-images\/pic002_opt.jpeg\" alt=\"pic002.tif\" \/>\n        <\/div>\n<div class=\"abbildung\">\n<p><b><span style=\"color:darkgrey\">Bild 2: Festlegen der Homebanking-Kontakte<\/span><\/b><\/p>\n<\/p><\/div>\n<p>Dann kann es losgehen: Mit einem Klick auf die Schaltfl&auml;che <b>Vorg&auml;nge einlesen <\/b>starten Sie den Zugriff auf den Bankserver. Je nach dem verwendeten Zugriffsschutz erscheint eine passende Abfrage: Im Falle der Schl&uuml;sseldatei m&uuml;ssen Sie die Passphrase eingeben (siehe Bild 3), bei Verwendung von PIN\/TAN geben Sie den PIN in den nun erscheinenden Dialog ein (siehe Bild 4).<\/p>\n<div class=\"image\">\n            <img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_04\/OnlinebankingMitHBCCI_II_3-web-images\/pic003_opt.jpeg\" alt=\"pic003.tif\" \/>\n        <\/div>\n<div class=\"abbildung\">\n<p><b><span style=\"color:darkgrey\">Bild 3: Passphrase bei Verwendung eines Schl&uuml;ssels eingeben<\/span><\/b><\/p>\n<\/p><\/div>\n<div class=\"image\">\n            <img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_04\/OnlinebankingMitHBCCI_II_3-web-images\/pic004_opt.jpeg\" alt=\"pic004.tif\" \/>\n        <\/div>\n<div class=\"abbildung\">\n<p><b><span style=\"color:darkgrey\">Bild 4: Das Abfragen von Konten mit PIN\/TAN verlangt nach der PIN-Nummer.<\/span><\/b><\/p>\n<\/p><\/div>\n<p>Danach stellt die Anwendung die Verbindung her und speichert alle verf&uuml;gbaren Vorg&auml;nge in einer entsprechenden Tabelle. &#8222;Alle verf&uuml;gbaren&#8220; bezieht sich in der Regel auf die Vorg&auml;nge der letzten 90 Tage, zumindest lieferte keines der beim Testen angesprochenen Kreditinstitute &auml;ltere Daten.<\/p>\n<p>Falls bis dahin noch keine Vorg&auml;nge gespeichert wurden, legt die Anwendung den vor dem ersten eingelesenen Vorgang bestehenden Kontostand als initialen Kontostand fest. Dies ist notwendig, damit der sp&auml;ter vorgestellte Bericht jeweils den aktuellen Kontostand anzeigen kann. Auch diese Information liefern die Bankserver zwar, jedoch kann es auch interessant sein, vom Kontostand des ersten gespeicherten Vorgangs aus dessen Entwicklung nachzuverfolgen.<\/p>\n<p>Sind die Daten einmal vom Bankserver heruntergeladen, kann man ganz nach Bedarf alle paar Tage die aktuelleren Buchungen herunterziehen. Die Anwendung pr&uuml;ft jeweils, ob ein Vorgang bereits gespeichert wurde, und holt dies gegebenenfalls nach. Dabei werden immer die Vorg&auml;nge der letzten 90 Tage untersucht, Sie sollten also zumindest vor Ablauf dieser Zeitspanne die vorhandenen Daten in der Datenbank speichern, damit zwischendrin keine Daten fehlen. Sollte dies doch einmal passieren, haben Sie sicher gedruckte Exemplare des Kontoauszugs zur Verf&uuml;gung, um zumindest die wichtigsten Daten in die Tabelle zu &uuml;bernehmen und damit eine l&uuml;ckenlose Darstellung des Kontostandes &uuml;ber diesen Zeitraum zu gew&auml;hrleisten.<\/p>\n<p>Wollen Sie nur die Eintr&auml;ge eines bestimmten Zeitraums anzeigen lassen, k&ouml;nnen Sie diesen &uuml;ber die Schaltfl&auml;che <b>Zeitraum &auml;ndern <\/b>und den daraufhin erscheinenden Dialog anpassen. Dieser Dialog und die darin verwendete Technik wird ausf&uuml;hrlich im Beitrag <b>Zeitr&auml;ume komfortabel ausw&auml;hlen <\/b>beschrieben. Die Schaltfl&auml;che <b>Alle anzeigen <\/b>hebt den so festgelegten Filter wieder auf.<\/p>\n<p>Zum Ausdrucken der Informationen oder einfach f&uuml;r einen besseren &uuml;berblick liefert die Anwendung einen Bericht mit, der die wichtigsten Vorgangsdaten ausgibt. Diesen &ouml;ffnen Sie mit einem Klick auf die Schaltfl&auml;che <b>Bericht anzeigen<\/b> (siehe Bild 5).<\/p>\n<div class=\"image\">\n            <img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_04\/OnlinebankingMitHBCCI_II_3-web-images\/pic005_opt.jpeg\" alt=\"pic005.tif\" \/>\n        <\/div>\n<div class=\"abbildung\">\n<p><b><span style=\"color:darkgrey\">Bild 5: Ausgabe der Ums&auml;tze und des jeweils aktuellen Kontostandes per Access-Bericht<\/span><\/b><\/p>\n<\/p><\/div>\n<p>Der Bericht liefert genau die den im Formular festgelegten Einstellungen entsprechenden Vorg&auml;nge &#8211; also nur f&uuml;r das angegebene Konto und den passenden Zeitraum. Neben dem Buchungszeitpunkt enth&auml;lt eine jede Zeile des Berichts Informationen zu Empf&auml;nger\/Verwendungszweck (diese beiden Felder wurden der &uuml;bersichtlichkeit halber zusammengefasst), zum Betrag sowie zum aktuellen Kontostand. Zus&auml;tzlich ist die Ausgabe nach Monaten gruppiert. F&uuml;r jeden Monat gibt der Bericht au&szlig;erdem die Differenz zwischen Anfangs- und Endbestand aus.<\/p>\n<p>Eine weitere Funktion, die in dieser Anwendung nicht fehlen darf, dient zum Ausf&uuml;hren einer &uuml;berweisung. Um dies zu veranlassen, klicken Sie auf die Schaltfl&auml;che <b>Neue &uuml;berweisung <\/b>und f&uuml;llen die passenden Felder im nun erscheinenden Formular <b>frmUeberweisung <\/b>aus (siehe Bild 6).<\/p>\n<div class=\"image\">\n            <img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_04\/OnlinebankingMitHBCCI_II_3-web-images\/pic006_opt.jpeg\" alt=\"pic006.tif\" \/>\n        <\/div>\n<div class=\"abbildung\">\n<p><b><span style=\"color:darkgrey\">Bild 6: Eingabe von Umsatzdetails per Formular<\/span><\/b><\/p>\n<\/p><\/div>\n<p>Dabei hilft das Formular tatkr&auml;ftig mit: Mit dem oberen Kombinationsfeld w&auml;hlen Sie das Konto des Auftraggebers aus, sofern dies nicht das im aufrufenden Formular ausgew&auml;hlte ist. Im Bereich <b>Empf&auml;nger <\/b>tragen Sie den Namen, die BLZ und Kontonummer des Adressaten ein, im unteren Bereich schlie&szlig;lich noch den zu &uuml;berweisenden Betrag sowie den Verwendungszweck.<\/p>\n<p>Nach dem Bet&auml;tigen der Schaltfl&auml;che <b>&uuml;berweisen <\/b>m&uuml;ssen Sie je nach Zugriffsschutz entweder nur auf die Antwort warten (Schl&uuml;sseldatei) oder eine passende TAN eingeben (siehe Bild 7).<\/p>\n<div class=\"image\">\n            <img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_04\/OnlinebankingMitHBCCI_II_3-web-images\/pic007_opt.jpeg\" alt=\"pic007.tif\" \/>\n        <\/div>\n<div class=\"abbildung\">\n<p><b><span style=\"color:darkgrey\">Bild 7: Bei Bedarf fragt die HBCI-Schnittstelle TANs ab.<\/span><\/b><\/p>\n<\/p><\/div>\n<p>Sollte kein Fehler auftreten, liefert das Formular das &uuml;berweisungsdatum sowie die Antwort des Bankservers als Inhalt zweier Textfelder zur&uuml;ck.<\/p>\n<p>Komfortabel ist, dass der aktuell verwendete Empf&auml;nger in der Datenbank gespeichert wird und bei folgenden &uuml;berweisungen &uuml;ber das passende Kombinationsfeld ausgew&auml;hlt werden kann.<\/p>\n<p><b>Technischer Hintergrund<\/b><\/p>\n<p>Nachfolgend stellt Ihnen dieser Beitrag einige technische Finessen vor, die f&uuml;r den Betrieb dieser Anwendung wichtig sind.<\/p>\n<p>Vorweg folgender Hinweis: Die Anwendung enth&auml;lt nur die allernotwendigsten Fehlerbehandlungen. Wenn Sie also nicht vorschriftsgem&auml;&szlig; damit umgehen, k&ouml;nnte es hier und da krachen.<\/p>\n<p>Als Erstes betrachten Sie die Technik, die f&uuml;r das Speichern der Vorg&auml;nge in der Tabelle <b>tblVorgaenge <\/b>zum Einsatz kommt. Diese Tabelle enth&auml;lt Felder f&uuml;r alle Informationen, die DDBAC &uuml;berhaupt aus einem Buchungssatz vom Bankserver herausholen kann &#8211; sicher ist sicher: Die paar Daten mehr machen den Braten nicht fett, sind aber f&uuml;r Vorg&auml;nge, die l&auml;nger als 90 Tage zur&uuml;ckliegen und noch nicht gespeichert wurden, verloren.<\/p>\n<p>Neben diesen Feldern enth&auml;lt die Tabelle ein Prim&auml;rschl&uuml;sselfeld namens <b>VorgangID <\/b>und zwei Felder zum Speichern der BLZ und der Kontonummer des betroffenen Kontos (die Anwendung kann mehrere Konten verwalten!). Weiter vorne haben Sie erfahren, dass die Anwendung zwar jeweils alle Vorg&auml;nge der letzten 90 Tage einliest, aber nur diejenigen in der Datenbank speichert, die noch nicht vorhanden sind.<\/p>\n<p>Dazu brauchen Sie ein passendes Kriterium, das die vom Bankserver gelieferten Daten leider nicht bieten: Es gibt unter den vielen Eigenschaften eines Vorgangs kein einziges eindeutiges Merkmal.<\/p>\n<p>Da man davon ausgehen kann, dass &uuml;blicherweise niemals zwei &uuml;berweisungen auf das gleiche Konto erfolgen, bei denen Datum und Zweck &uuml;bereinstimmen, legen Sie f&uuml;r die passenden Felder einen zusammengesetzten, eindeutigen Index fest (siehe Bild 8). In der Routine, die f&uuml;r das Einlesen der Vorg&auml;nge zust&auml;ndig ist, l&ouml;st das Einf&uuml;gen eines &#8211; nach diesen Kriterien &#8211; schon vorhandenen Vorgangs einen Fehler aus, der mit einer passenden Fehlerbehandlung unsch&auml;dlich gemacht wird.<\/p>\n<div class=\"image\">\n            <img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_04\/OnlinebankingMitHBCCI_II_3-web-images\/pic008_opt.jpeg\" alt=\"pic008.tif\" \/>\n        <\/div>\n<div class=\"abbildung\">\n<p><b><span style=\"color:darkgrey\">Bild 8: Die Felder der Tabelle tblVorgaenge sind mit einem zusammengesetzten, eindeutigen Schl&uuml;ssel versehen.<\/span><\/b><\/p>\n<\/p><\/div>\n<p><!--30percent--><\/p>\n<p>Listing 1 liefert die Routine, die das Einlesen und Schreiben der Vorg&auml;nge in die passende Tabelle &uuml;bernimmt. Diese Routine ist eine erweiterte Version der Routine aus dem ersten Teil dieser Beitragsreihe (s. Shortlink 468). Hinzugekommen sind vor allem die Deklaration und die Instanzierung passender <b>Database<\/b>&#8211; und <b>Recordset<\/b>-Objekte. Ge&auml;ndert hat sich gegen&uuml;ber der vorherigen Variante nicht nur der Bereich, in dem die einzelnen Vorg&auml;nge im Direktfenster ausgegeben wurden.<\/p>\n<div class=\"abbildung\">\n<p class=\"kastentabelleheader\">Listing 1: Eintragen der Kontoums&auml;tze als Buchungen in die Tabelle tblVorgaenge (Teil 1)<\/p>\n<pre>Public Sub KontoauszugInTabelle(intCustomer As Integer, Optional dateStart As Date, _<br \/> Optional dateEnd As Date)<br \/>\r\n     ''Deklarationsteil siehe Beispieldatenbank\r\n     Set db = CurrentDb\r\n     Set rst = db.OpenRecordset(\"SELECT * FROM tblVorgaenge WHERE 1=2\", dbOpenDynaset)\r\n     Set objBanking = New BACBanking\r\n     Set objCustomer = objBanking.Customers(intCustomer)\r\n     Set objAccountSegment = objCustomer.AccountData.Segments(0)\r\n     Set objDialog = objCustomer.NewDialogUI\r\n     If objDialog Is Nothing Then\r\n         Exit Sub\r\n     End If\r\n     objDialog.BeginDialog\r\n     Set objKontoauszugSegment = objBanking.NewSegment(\"HKKAZ\", objCustomer(\"HBCIVersion\"))\r\n     objKontoauszugSegment(\"AuftraggeberKontoverbindung1\", \"Kontonummer1\") = _<br \/> objAccountSegment(\"Kontoverbindung1\", \"Kontonummer1\")\r\n     objKontoauszugSegment(\"AuftraggeberKontoverbindung1\", \"Laenderkennzeichen1\") = _<br \/> objAccountSegment(\"Kontoverbindung1\", \"Laenderkennzeichen1\")\r\n     objKontoauszugSegment(\"AuftraggeberKontoverbindung1\", \"Kreditinstitutcode1\") = _<br \/> objAccountSegment(\"Kontoverbindung1\", \"Kreditinstitutcode1\")\r\n     objKontoauszugSegment(\"AuftraggeberKontoverbindung1\", \"Unterkontomerkmal1\") = _<br \/> objAccountSegment(\"Kontoverbindung1\", \"Unterkontomerkmal1\")\r\n     objKontoauszugSegment(\"AlleKonten1\") = False\r\n     If dateStart &gt; 0 And dateEnd &gt; 0 And (dateEnd &gt;= dateStart) Then\r\n         objKontoauszugSegment(\"DatumVon1\") = dateStart\r\n         objKontoauszugSegment(\"DatumBis1\") = dateEnd\r\n     End If\r\n     Set objMessage = objDialog.ExecuteSegment(objKontoauszugSegment)\r\n     Set objTransaction = objMessage.Transactions(0)\r\n     If objTransaction.ResponseSegments.Count = 1 Then\r\n         Set objResponseSegment = objTransaction.ResponseSegments(0)\r\n         If Not IsEmpty(objResponseSegment) Then\r\n             Set objSwiftStatement = objResponseSegment(\"UmsaetzeGebucht1\")\r\n         End If\r\n     End If\r\n     If DCount(\"VorgangID\", \"tblVorgaenge\", \"BLZ = ''\" &amp; objCustomer.BankCode _<br \/> &amp; \"'' AND Kontonummer = ''\" &amp; objCustomer.UserID &amp; \"''\") = 0 Then\r\n         rst.AddNew\r\n         rst!BLZ = objCustomer.BankCode\r\n         rst!Kontonummer = objCustomer.UserID\r\n         rst!Purpose = \"Kontostand vor dem Speichern des ersten Vorgangs\"\r\n         rst!Amount = objSwiftStatement.OpeningBalanceAmount\r\n         rst!EntryDate = objSwiftStatement.OpeningBalanceDate\r\n         rst.Update\r\n     End If\r\n     For Each objLine In objSwiftStatement.StatementLines\r\n         With objLine\r\n             On Error Resume Next\r\n             rst.AddNew\r\n             rst!BLZ = objCustomer.BankCode\r\n             rst!Kontonummer = objCustomer.UserID\r\n             rst!AccountNumber = .AccountNumber\r\n             rst!Amount = .Amount\r\n             rst!BankCode = .BankCode\r\n             rst!EntryDate = .EntryDate\r\n             rst!Name_ = .Name\r\n             rst!Purpose = .Purpose\r\n             ''... weitere Felder ...\r\n             rst.Update\r\n             If Err.Number &gt; 0 Then\r\n                 Select Case Err\r\n                     Case 3022\r\n                     Case Else\r\n                         MsgBox \"Fehler: \" &amp; Err.Number\r\n                 End Select\r\n             Else\r\n                 i = i + 1\r\n             End If\r\n             On Error GoTo 0\r\n         End With\r\n     Next objLine\r\n     If i &gt; 0 Then\r\n         MsgBox \"Es wurden \" &amp; i &amp; \" neue Vorg&auml;nge gespeichert.\", vbOKOnly Or vbExclamation, _<br \/> \"Neue Vorg&auml;nge\"\r\n     End If\r\n     objDialog.EndDialog\r\nEnd Sub<\/pre>\n<\/p><\/div>\n<p>Die dazu notwendigen Anweisungen sind nun nicht mehr vorhanden, stattdessen werden die Buchungsdaten direkt in die passenden Felder der Tabelle geschrieben. Nach den bereits bekannten Zeilen zur Anmeldung und zum Zusammenstellen des an den Bankserver zu sendenden Segments pr&uuml;ft die Routine zun&auml;chst, ob bereits ein Vorgang f&uuml;r das aktuelle Konto gespeichert wurde.<\/p>\n<p>Ist das nicht der Fall, erzeugt sie einen generischen Eintrag, der den Kontostand zum Zeitpunkt des ersten verf&uuml;gbaren Vorgangs sowie sein Buchungsdatum enth&auml;lt. Damit ist die Grundlage f&uuml;r das Berechnen des aktuellen Kontostandes zu jedem beliebigen Zeitpunkt geschaffen. W&auml;hrend des Speicherns der Vorg&auml;nge l&auml;uft eine Z&auml;hlervariable mit, die anschlie&szlig;end in Form einer Meldung die Anzahl der eingelesenen Vorg&auml;nge ausgibt.<\/p>\n<p>Gegen&uuml;ber der ersten Version weist diese Variante der Routine vor allem einen weiteren Parameter auf, der den Index des zu verwendenden Kontos erwartet. Dieser hat, sofern Sie in der Systemsteuerung nur ein Konto festgelegt haben, immer den Wert <b>0<\/b>.<\/p>\n<p><b>Vorg&auml;nge anzeigen<\/b><\/p>\n<p>Das Formular <b>frmVorgaenge <\/b>und das darin enthaltene Unterformular <b>sfmVorgaenge<\/b> sind f&uuml;r die Anzeige der Vorg&auml;nge verantwortlich.<\/p>\n<p>Die Auswahl des gew&uuml;nschten Kontos erfolgt mit dem Kombinationsfeld <b>cboAccounts<\/b>, das durch eine in der Ereignisprozedur <b>Beim &ouml;ffnen <\/b>des Formulars aufgerufene Routine gef&uuml;llt wird und als gebundene Spalte den Index des Kontos in der gleichen Reihenfolge wie im passenden, &uuml;ber die Systemsteuerung erreichbaren Dialog besitzt.<\/p>\n<p>Das F&uuml;llen des Kombinationsfeldes &uuml;bernimmt die Routine <b>cboAccountsFuellen <\/b>(s. Listing 2). Die Routine erzeugt zun&auml;chst ein neues <b>BACContacts<\/b>-Objekt und f&uuml;llt es mit der <b>Populate<\/b>-Methode. Anschlie&szlig;end durchl&auml;uft es alle enthaltenen Eintr&auml;ge und setzt diese zu einer Zeichenkette zusammen, die anschlie&szlig;end der Datensatzherkunft des Formulars zugewiesen wird. Beachten Sie, dass hierzu kein Kontakt zu einem Bankserver erforderlich ist &#8211; die Daten werden alle beim Hinzuf&uuml;gen der Accounts zu den Homebanking-Kontakten &uuml;ber die Systemsteuerung hinzugef&uuml;gt und k&ouml;nnen bequem von dort ausgelesen werden.<\/p>\n<div class=\"abbildung\">\n<p class=\"kastentabelleheader\">Listing 2: F&uuml;llen des Account-Kombinationsfeldes<\/p>\n<pre>Private Sub cboAccountsFuellen()\r\n     Dim strAccounts As String\r\n     Dim objContact As BACContact\r\n     Dim objContacts As BACContacts\r\n     Dim strFilter As String\r\n     Dim i As Integer\r\n     Set objContacts = New BACContacts\r\n     objContacts.Populate \"\"\r\n     For Each objContact In objContacts\r\n         strAccounts = strAccounts &amp; i &amp; \";\" &amp; objContact.UserID _<br \/> &amp; \";\" &amp; objContact.BankCode &amp; \";\" _<br \/> &amp; objContact.Fields(\"Contact\") &amp; \";\"\r\n         i = i + 1\r\n     Next objContact\r\n     Me!cboAccounts.RowSourceType = \"Wertliste\"\r\n     Me!cboAccounts.RowSource = strAccounts\r\n     Me!cboAccounts = Me!cboAccounts.ItemData(0)\r\nEnd Sub<\/pre>\n<\/p><\/div>\n<p><b>Einlesen der Vorg&auml;nge starten<\/b><\/p>\n<p>Die Schaltfl&auml;che <b>cmdVorgaengeEinlesen <\/b>ruft die soeben beschriebene Routine <b>KontoauszugInTabelle <\/b>mit dem Index-Wert auf, der dem im Kombinationsfeld <b>cboAccounts <\/b>ausgew&auml;hlten Eintrag entspricht, und aktualisiert anschlie&szlig;end &uuml;ber die Routine <b>AlleAnzeigen <\/b>die Anzeige des Unterformulars mit den Vorg&auml;ngen. Der Rest der Funktionalit&auml;t des Formulars besteht im Ausw&auml;hlen alternativer Zeitr&auml;ume und dem Anpassen der im Unterformular angezeigten Daten, wobei zwei Variablen zum Festlegen des Zeitraums durch passende <b>Public Property Get<\/b>-Prozeduren f&uuml;r den &ouml;ffentlichen Zugriff deklariert werden &#8211; mehr dazu weiter unten.<\/p>\n<p><b>Kontoums&auml;tze per Bericht<\/b><\/p>\n<p>Bevor es gleich zu den &uuml;berweisungen geht, folgen noch einige Informationen zur Anzeige der Vorg&auml;nge im Bericht <b>rptVorgaenge<\/b>. Der Bericht bezieht seine Daten aus der Abfrage <b>qryVorgaenge <\/b>(siehe Bild 9). Hier ist wichtig, dass die beiden Felder <b>Name_ <\/b>und <b>Purpose <\/b>zu einem durch einen Zeilenumbruch getrennten Text zusammengefasst werden. Der Hintergrund ist, dass das Feld <b>Name_ <\/b>(das &uuml;brigens nicht wie die korrenspondierende Vorgangs-Eigenschaft <b>Name <\/b>hei&szlig;t, weil dieser Ausdruck als Feld- oder Variablenname unter Access Probleme bereiten kann) nicht immer gef&uuml;llt ist und daher gegebenenfalls eine h&auml;&szlig;liche L&uuml;cke im Bericht hinterlie&szlig;e.<\/p>\n<div class=\"image\">\n            <img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_04\/OnlinebankingMitHBCCI_II_3-web-images\/pic009_opt.jpeg\" alt=\"pic009.tif\" \/>\n        <\/div>\n<div class=\"abbildung\">\n<p><b><span style=\"color:darkgrey\">Bild 9: Die Felder der Tabelle tblVorgaenge sind mit einem zusammengesetzten eindeutigen Schl&uuml;ssel versehen.<\/span><\/b><\/p>\n<\/p><\/div>\n<p>Der Entwurf des Berichts sieht wie in Bild 10 aus und enth&auml;lt Gruppierungen nach der Bankleitzahl, der Kontonummer sowie nach dem Monat des Vorgangsdatums. Die ersten beiden sind nur interessant, wenn der Bericht mehrere Konten ausgeben soll. Die Gruppierung nach dem Monat soll zeigen, wie Sie den Gewinn oder Verlust innerhalb eines bestimmten Zeitraums ausgeben k&ouml;nnen. Genau dies passiert hier: Das Textfeld mit dem Inhalt <b>=Summe(Amount) <\/b>gibt n&auml;mlich die Summe aller Betr&auml;ge innerhalb der Gruppierung aus. Rechts neben dem zum Vorgang geh&ouml;renden Umsatz befindet sich noch ein Textfeld zur Anzeige des zum Zeitpunkt des Vorgangs aktuellen Kontostands. Dazu enth&auml;lt seine Eigenschaft <b>Steuerelementinhalt <\/b>den Wert <b>=[txtAmount] <\/b>und die Eigenschaft <b>Laufende Summe <\/b>den Wert <b>&uuml;ber alles<\/b>.<\/p>\n<div class=\"image\">\n            <img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_04\/OnlinebankingMitHBCCI_II_3-web-images\/pic010_opt.jpeg\" alt=\"pic010.tif\" \/>\n        <\/div>\n<div class=\"abbildung\">\n<p><b><span style=\"color:darkgrey\">Bild 10: Entwurfsansicht des Berichts zur Anzeige der Vorgangsliste<\/span><\/b><\/p>\n<\/p><\/div>\n<p><b>Filtern des Berichts ohne Beeinflussung des aktuellen Kontostands<\/b><\/p>\n<p>Eine Herausforderung ist folgende: Die Daten im Bericht sollen nach dem im Formular <b>frmVorgaenge <\/b>angegebenen Zeitraum gefiltert werden. Nun ist das nicht so einfach &uuml;ber die Angabe eines passenden <b>WhereCondition<\/b>-Ausdrucks beim &ouml;ffnen des Berichts m&ouml;glich, weil das Textfeld zum Ermitteln des zur Buchung passenden Kontostandes dann nicht auf allen vorherigen Vorg&auml;ngen, sondern nur auf den angezeigten basiert &#8211; was das Ergebnis nat&uuml;rlich grob verf&auml;lscht.<\/p>\n<p>Wie aber lassen sich sonst nur bestimmte Datens&auml;tze anzeigen, aber alle f&uuml;r den Kontostand relevanten Vorg&auml;nge ber&uuml;cksichtigen Die erste M&ouml;glichkeit w&auml;re, den Kontostand f&uuml;r den ersten angezeigten Vorgang per VBA zu ermitteln und zu allen angezeigten Kontost&auml;nden hinzuzuaddieren. F&uuml;r dieses Beispiel wurde aber eine andere M&ouml;glichkeit gew&auml;hlt. Der Bericht liest beim &ouml;ffnen zun&auml;chst die Grenzen des anzuzeigenden Zeitraums aus dem Formular <b>frmVorgaenge <\/b>in passende Variablen ein:<\/p>\n<pre>Private Sub Report_Open(Cancel As Integer)\r\n     dateStart = Forms!frmVorgaenge.Startdatum\r\n     dateEnd = Forms!frmVorgaenge.Enddatum\r\nEnd Sub<\/pre>\n<p>Er wird aber nicht nach diesen Werten gefiltert, sondern er soll lediglich die au&szlig;erhalb des angegebenen Zeitraums befindlichen Vorg&auml;nge ausblenden. Daf&uuml;r sorgen die folgenden drei Ereignisprozeduren, die jeweils beim Formatieren verschiedener Bereiche ausgel&ouml;st werden (s. Listing 3). Befindet sich der aktuelle Eintrag nicht innerhalb der angegebenen Grenzen, wird die Ausgabe des Bereichs durch Setzen des Parameters <b>Cancel <\/b>auf den Wert <b>True <\/b>unterbunden. Interessanterweise wirkt sich dies nicht auf die laufenden Summen aus, diese werden wie gehabt aus allen vorherigen Vorg&auml;ngen ermittelt.<\/p>\n<div class=\"abbildung\">\n<p class=\"kastentabelleheader\">Listing 3: Bereiche ausblenden<\/p>\n<pre>Private Sub Detailbereich_Format(Cancel As Integer, <br \/> FormatCount As Integer)\r\n     If Me!EntryDate &lt; dateStart Or Me!EntryDate &gt; dateEnd Then\r\n     Cancel = True\r\n End If\r\nEnd Sub\r\nPrivate Sub Gruppenfu&szlig;1_Format(Cancel As Integer, _<br \/> FormatCount As Integer)\r\n     If Me!EntryDate &lt; dateStart Or Me!EntryDate &gt; dateEnd Then\r\n         Cancel = True\r\n     End If\r\nEnd Sub\r\nPrivate Sub Gruppenkopf0_Format(Cancel As Integer, _<br \/> FormatCount As Integer)\r\n     If Me!EntryDate &lt; dateStart Or Me!EntryDate &gt; dateEnd Then\r\n         Cancel = True\r\n     End If\r\nEnd Sub<\/pre>\n<\/p><\/div>\n<p><b>&uuml;berweisungen vornehmen<\/b><\/p>\n<p>Nach diesem Praxisbeispiel lernen Sie nun noch eine weitere Funktion kennen, die Sie mit der DDBAC-Bibliothek realisieren k&ouml;nnen (es g&auml;be noch viele mehr, doch Lastschriften, Sammellastschriften, Sammel&uuml;berweisungen oder Zugriffe auf Depots bleiben im Rahmen dieses Beitrags au&szlig;en vor). Wer mag, kann sich die notwendigen Routinen aber im VB-Projekt HBCIPAD des Entwicklerpakets von DDBAC ansehen.<\/p>\n<p>Bei der nun vorgestellten Funktion handelt es sich um eine einfache &uuml;berweisung. Die Routine aus Listing 3 tut das, was Sie fr&uuml;her (oder vielleicht auch noch heutzutage) mit dem klassischen &uuml;berweisungstr&auml;ger erledigt haben (&#8222;Bitte m&ouml;glichst mit Schreibmaschine ausf&uuml;llen! Bei Handausschreibung in Druckschrift und &#8222;GROSSBUCHSTABEN&#8220;&#8220;). Die Routine erwartet einige Parameter zur &uuml;bergabe der Kontonummer, der Bankleitzahl und des Besitzers des Zielkontos sowie des Betrags und des Verwendungszwecks. F&uuml;r Letzteren gilt: Nicht mehr als 27 Zeichen pro Zeile!<\/p>\n<div class=\"abbildung\">\n<p class=\"kastentabelleheader\">Listing 3: Diese Routine nimmt eine einfache &uuml;berweisung vor.<\/p>\n<pre>Public Function Ueberweisung(intContact As Integer, strKontonummer As String, strBLZ As String, strEmpfaengername As String, curBetrag As Currency, strVerwendungszweck As String) As String\r\n     ''Deklaration siehe Beispieldatenbank\r\n     Set objBanking = New BACBanking\r\n     Set objCustomer = objBanking.Customers(intContact)\r\n     Set objAccountSegment = objCustomer.AccountData.Segments(0)\r\n     Set objDialog = objCustomer.NewDialogUI\r\n     objDialog.BeginDialog\r\n     Set objUeberweisungSegment = objBanking.NewSegment(\"HKUEB\", objCustomer(\"HBCIVersion\"))\r\n     objUeberweisungSegment(\"AuftraggeberKontoverbindung1\", \"Kontonummer1\") = _<br \/> objAccountSegment(\"Kontoverbindung1\", \"Kontonummer1\")\r\n     objUeberweisungSegment(\"AuftraggeberKontoverbindung1\", \"Laenderkennzeichen1\") = _<br \/> objAccountSegment(\"Kontoverbindung1\", \"Laenderkennzeichen1\")\r\n     objUeberweisungSegment(\"AuftraggeberKontoverbindung1\", \"Kreditinstitutcode1\") = _<br \/> objAccountSegment(\"Kontoverbindung1\", \"Kreditinstitutcode1\")\r\n     objUeberweisungSegment(\"AuftraggeberKontoverbindung1\", \"Unterkontomerkmal1\") = _<br \/> objAccountSegment(\"Kontoverbindung1\", \"Unterkontomerkmal1\")\r\n     objUeberweisungSegment(\"AlleKonten1\") = False\r\n     objUeberweisungSegment(\"EmpfaengerKontoverbindung1\", \"Kontonummer1\") = strKontonummer\r\n     objUeberweisungSegment(\"EmpfaengerKontoverbindung1\", \"Laenderkennzeichen1\") = 280\r\n     objUeberweisungSegment(\"EmpfaengerKontoverbindung1\", \"Kreditinstitutcode1\") = strBLZ\r\n     objUeberweisungSegment(\"EmpfaengernameEins1\") = strEmpfaengername\r\n     objUeberweisungSegment(\"Zahlungsbetrag1\", \"Wert1\") = curBetrag\r\n     objUeberweisungSegment(\"Zahlungsbetrag1\", \"Waehrung1\") = \"EUR\"\r\n     objUeberweisungSegment(\"Textschluessel1\") = 51\r\n     strZeile() = Split(strVerwendungszweck, vbCrLf)\r\n     j = 1\r\n     For i = LBound(strZeile()) To UBound(strZeile())\r\n         objUeberweisungSegment(\"Verwendungszweck1\", \"Zeile\" &amp; j) = strZeile(i)\r\n         j = j + 1\r\n     Next i\r\n     Set objMessage = objDialog.ExecuteSegment(objUeberweisungSegment)\r\n     Set objTransaction = objMessage.Transactions(0)\r\n     Set objErgebnis = objTransaction.Acknowledgement\r\n     For i = 1 To 100\r\n         If Len(objErgebnis(i, 3)) &gt; 0 Then\r\n             strErgebnis = strErgebnis &amp; vbCrLf &amp; objErgebnis(i, 3)\r\n         End If\r\n     Next i\r\n     Ueberweisung = strErgebnis\r\n     objDialog.EndDialog\r\nEnd Function<\/pre>\n<\/p><\/div>\n<p>Mit alldem arbeiten weitgehend die aus den Beispielen des ersten Teils bekannten Protagonisten. Im Mittelpunkt steht zun&auml;chst ein Segment namens <b>objUeberweisungssegment<\/b>, das nach dem Herstellen der Verbindung mit dem Bankserver zun&auml;chst mit den Auftraggeberdaten gef&uuml;llt wird &#8211; bis hierher nichts Neues. Dann aber kommt der Empf&auml;nger ins Spiel, zun&auml;chst &uuml;ber die Zuweisung der Kontonummer, der Bankleitzahl sowie der obligatorischen L&auml;nderkennung. Es folgen der Name des Empf&auml;ngers, der Betrag, die W&auml;hrung sowie ein weiterer notwendiger Wert namens <b>Textschluessel1<\/b>. Die als Verwendungszweck angegebene Zeichenfolge nimmt die Routine auseinander und tr&auml;gt die einzelnen Zeilen in je ein Element einer Auflistung ein. Das so zusammengestellte Segment wird schlie&szlig;lich mit der Methode <b>ExecuteSegment <\/b>ausgef&uuml;hrt. Hier handelt es sich nicht wie in den ersten beiden Beispielen zur Ermittlung des Kontostandes und der Kontoums&auml;tze um die Abfrage von Daten, sondern um die Ausf&uuml;hrung einer Transaktion. Dennoch liefert der Bankserver Informationen zur&uuml;ck, und zwar um den Erfolg oder den Misserfolg der Transaktion zu melden. Diese Informationen kommen in Form eines weiteren Segments, das Elemente mit den w&auml;hrend der Transaktion aufgelaufenen Meldungen liefert. Diese liest die letzte <b>For Next<\/b>-Schleife der Routine aus und gibt die resultierende Zeichenkette als Funktionswert an die aufrufende Routine zur&uuml;ck.<\/p>\n<p>Das Formular <b>frmUeberweisung <\/b>h&auml;lt wenig &uuml;berraschungen bereit, sodass der geneigte Leser an die Quellen in der Beispieldatenbank verwiesen wird. Dort findet er etwa eine &auml;hnliche Routine wie im Formular <b>frmVorgaenge<\/b>, um das Kombinationsfeld mit den Auftraggebern zu f&uuml;llen, oder die Funktion, die neue Empf&auml;nger einer &uuml;berweisung in der Tabelle <b>tblEmpfaenger <\/b>speichert und diese fortan im Kombinationsfeld zur Auswahl des Empf&auml;ngers zur Verf&uuml;gung stellt.<\/p>\n<p><b>Zusammenfassung und Ausblick<\/b><\/p>\n<p>Wenn auch die vorgestellten Techniken und die dazu geh&ouml;rende Beispielanwendung zum Einlesen von Vorg&auml;ngen und zum T&auml;tigen von &uuml;berweisungen taugen, darf dies nicht dar&uuml;ber hinwegt&auml;uschen, dass die Programmierung von Routinen, die &uuml;ber alle Unw&auml;gbarkeiten erhaben sind, viel mehr Code erfordern w&uuml;rde &#8211; etwa zur Plausibilit&auml;tspr&uuml;fung von Eingaben.<\/p>\n<p>Wer mag, kann sich dazu die im VB-Beispielprojekt HBCIPAD enthaltenen Prozeduren ansehen. Die hier vorgestellten Routinen sind von den dortigen Abl&auml;ufen abgeleitet und orientieren sich am optimalen Vorgang. Was den Funktionsumfang angeht, scheinen die hier abgedeckten Funktionen dem zu entsprechen, was man im Allgemeinen beim Onlinebanking erledigt &#8211; Kontost&auml;nde und -ums&auml;tze abfragen und &uuml;berweisungen t&auml;tigen. Alles andere geschieht wohl eher selten, sodass Sie dazu entweder auf die Internetvariante zur&uuml;ckgreifen oder sich die eine oder andere Funktion hinzuprogrammieren &#8211; das DDBAC-SDK liefert gen&uuml;gend Anregungen. Davon abgesehen ist eine solche Access-Anwendung wesentlich komfortabler als eine Web-Anwendung: Hier entscheiden Sie n&auml;mlich selbst, ob und wann die Benutzeroberfl&auml;che, an die Sie sich seit langer Zeit gew&ouml;hnt haben, ein Facelifting n&ouml;tig hat. Auch die Gewissheit, auf alle Vorg&auml;nge und nicht nur auf die der letzten 90 Tage zugreifen zu k&ouml;nnen, ist sehr tr&ouml;stlich. In diesem Sinne: Viel Spa&szlig; beim Onlinebanking!<\/p>\n<h3>Downloads zu diesem Beitrag<\/h3>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>HBCI.mdb<\/p>\n<p>HBCI.accdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/A7F6BD64-2606-4429-B142-F710F37E6AB7\/aiu_488.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Eine eigene Anwendung mit Zugriff auf das Konto oder die Konten des Benutzers &#8211; das k&ouml;nnte in vielen F&auml;llen eine enorme Erleichterung sein. So k&ouml;nnten Sie beispielsweise regelm&auml;&szlig;ig die auf dem Bankserver gespeicherten Vorg&auml;nge herunterladen und in einer passenden Tabelle speichern. Auf diese Weise haben Sie alle Daten digital verf&uuml;gbar anstatt nur diejenigen der letzten 90 Tage, wie es &uuml;blicherweise der Fall ist. Die Suche nach bestimmten Informationen und der Ausdruck individueller Auswertungen ist dann ein Kinderspiel, wie der vorliegende Beitrag zeigt.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[662007,66042007,44000034,44000026,44000030,44000027],"tags":[],"class_list":["post-55000488","post","type-post","status-publish","format-standard","hentry","category-662007","category-66042007","category-ImportExport","category-Interaktiv","category-Internet","category-Loesungen"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.9 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Onlinebanking mit HBCI, Teil 2 - Access im Unternehmen<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/access-im-unternehmen.de\/Onlinebanking_mit_HBCI_Teil_2\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Onlinebanking mit HBCI, Teil 2\" \/>\n<meta property=\"og:description\" content=\"Eine eigene Anwendung mit Zugriff auf das Konto oder die Konten des Benutzers - das k&ouml;nnte in vielen F&auml;llen eine enorme Erleichterung sein. So k&ouml;nnten Sie beispielsweise regelm&auml;&szlig;ig die auf dem Bankserver gespeicherten Vorg&auml;nge herunterladen und in einer passenden Tabelle speichern. Auf diese Weise haben Sie alle Daten digital verf&uuml;gbar anstatt nur diejenigen der letzten 90 Tage, wie es &uuml;blicherweise der Fall ist. Die Suche nach bestimmten Informationen und der Ausdruck individueller Auswertungen ist dann ein Kinderspiel, wie der vorliegende Beitrag zeigt.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Onlinebanking_mit_HBCI_Teil_2\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2021-02-11T21:17:48+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg07.met.vgwort.de\/na\/a187f381de35445d8091165477d23cc6\" \/>\n<meta name=\"author\" content=\"Andr\u00e9 Minhorst\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Andr\u00e9 Minhorst\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"19\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Onlinebanking_mit_HBCI_Teil_2\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Onlinebanking_mit_HBCI_Teil_2\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Onlinebanking mit HBCI, Teil 2\",\"datePublished\":\"2021-02-11T21:17:48+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Onlinebanking_mit_HBCI_Teil_2\\\/\"},\"wordCount\":3238,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Onlinebanking_mit_HBCI_Teil_2\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg07.met.vgwort.de\\\/na\\\/a187f381de35445d8091165477d23cc6\",\"articleSection\":[\"2007\",\"4\\\/2007\",\"Import\\\/Export\",\"Interaktiv\",\"Internet\",\"L\u00f6sungen\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Onlinebanking_mit_HBCI_Teil_2\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Onlinebanking_mit_HBCI_Teil_2\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Onlinebanking_mit_HBCI_Teil_2\\\/\",\"name\":\"Onlinebanking mit HBCI, Teil 2 - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Onlinebanking_mit_HBCI_Teil_2\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Onlinebanking_mit_HBCI_Teil_2\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg07.met.vgwort.de\\\/na\\\/a187f381de35445d8091165477d23cc6\",\"datePublished\":\"2021-02-11T21:17:48+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Onlinebanking_mit_HBCI_Teil_2\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Onlinebanking_mit_HBCI_Teil_2\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Onlinebanking_mit_HBCI_Teil_2\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg07.met.vgwort.de\\\/na\\\/a187f381de35445d8091165477d23cc6\",\"contentUrl\":\"http:\\\/\\\/vg07.met.vgwort.de\\\/na\\\/a187f381de35445d8091165477d23cc6\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Onlinebanking_mit_HBCI_Teil_2\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Onlinebanking mit HBCI, Teil 2\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"name\":\"Access im Unternehmen\",\"description\":\"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access\",\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/access-im-unternehmen.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\",\"name\":\"Andr\u00e9 Minhorst Verlag\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"contentUrl\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"width\":370,\"height\":111,\"caption\":\"Andr\u00e9 Minhorst Verlag\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\",\"name\":\"Andr\u00e9 Minhorst\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"caption\":\"Andr\u00e9 Minhorst\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Onlinebanking mit HBCI, Teil 2 - Access im Unternehmen","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/access-im-unternehmen.de\/Onlinebanking_mit_HBCI_Teil_2\/","og_locale":"de_DE","og_type":"article","og_title":"Onlinebanking mit HBCI, Teil 2","og_description":"Eine eigene Anwendung mit Zugriff auf das Konto oder die Konten des Benutzers - das k&ouml;nnte in vielen F&auml;llen eine enorme Erleichterung sein. So k&ouml;nnten Sie beispielsweise regelm&auml;&szlig;ig die auf dem Bankserver gespeicherten Vorg&auml;nge herunterladen und in einer passenden Tabelle speichern. Auf diese Weise haben Sie alle Daten digital verf&uuml;gbar anstatt nur diejenigen der letzten 90 Tage, wie es &uuml;blicherweise der Fall ist. Die Suche nach bestimmten Informationen und der Ausdruck individueller Auswertungen ist dann ein Kinderspiel, wie der vorliegende Beitrag zeigt.","og_url":"https:\/\/access-im-unternehmen.de\/Onlinebanking_mit_HBCI_Teil_2\/","og_site_name":"Access im Unternehmen","article_published_time":"2021-02-11T21:17:48+00:00","og_image":[{"url":"http:\/\/vg07.met.vgwort.de\/na\/a187f381de35445d8091165477d23cc6","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"19\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Onlinebanking_mit_HBCI_Teil_2\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Onlinebanking_mit_HBCI_Teil_2\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Onlinebanking mit HBCI, Teil 2","datePublished":"2021-02-11T21:17:48+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Onlinebanking_mit_HBCI_Teil_2\/"},"wordCount":3238,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Onlinebanking_mit_HBCI_Teil_2\/#primaryimage"},"thumbnailUrl":"http:\/\/vg07.met.vgwort.de\/na\/a187f381de35445d8091165477d23cc6","articleSection":["2007","4\/2007","Import\/Export","Interaktiv","Internet","L\u00f6sungen"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Onlinebanking_mit_HBCI_Teil_2\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Onlinebanking_mit_HBCI_Teil_2\/","url":"https:\/\/access-im-unternehmen.de\/Onlinebanking_mit_HBCI_Teil_2\/","name":"Onlinebanking mit HBCI, Teil 2 - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Onlinebanking_mit_HBCI_Teil_2\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Onlinebanking_mit_HBCI_Teil_2\/#primaryimage"},"thumbnailUrl":"http:\/\/vg07.met.vgwort.de\/na\/a187f381de35445d8091165477d23cc6","datePublished":"2021-02-11T21:17:48+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Onlinebanking_mit_HBCI_Teil_2\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Onlinebanking_mit_HBCI_Teil_2\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Onlinebanking_mit_HBCI_Teil_2\/#primaryimage","url":"http:\/\/vg07.met.vgwort.de\/na\/a187f381de35445d8091165477d23cc6","contentUrl":"http:\/\/vg07.met.vgwort.de\/na\/a187f381de35445d8091165477d23cc6"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Onlinebanking_mit_HBCI_Teil_2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Onlinebanking mit HBCI, Teil 2"}]},{"@type":"WebSite","@id":"https:\/\/access-im-unternehmen.de\/#website","url":"https:\/\/access-im-unternehmen.de\/","name":"Access im Unternehmen","description":"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access","publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/access-im-unternehmen.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/access-im-unternehmen.de\/#organization","name":"Andr\u00e9 Minhorst Verlag","url":"https:\/\/access-im-unternehmen.de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/","url":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","contentUrl":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","width":370,"height":111,"caption":"Andr\u00e9 Minhorst Verlag"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f","name":"Andr\u00e9 Minhorst","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","caption":"Andr\u00e9 Minhorst"}}]}},"_links":{"self":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000488","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/comments?post=55000488"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000488\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55000488"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55000488"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55000488"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}