KONTOPRUEF-Logo

Funktionen von KONTOPRUEF

Inhalt dieser Seite:

Online-Prüfungen

Für eine Beschreibung der Parameter und der Ergebnisfelder sehen Sie bitte auf der Seite der Bankverbindungsprüfung bzw. der Adreßprüfung nach. Falls Sie die HanftWddx-COM-Objekte unter Windows installiert haben, finden Sie die Beschreibung der Felder und Funktionen auf der HanftWddx-Seite.

Lokale Installationen

Die generellen Aufrufmechanismen, Datentypen usw. sind auf der Seite "Technik" beschrieben, so daß hier nur auf die universelle Funktionalität eingegangen wird.

Es gibt folgende Objekte:

  • Bank.KtoUpdate zur Datenverwaltung des Gesamtsystems: Datendateien und Updates herunterladen, entpacken und aktivieren;
  • Bank.KtoPruef zum Prüfen von Bankverbindungen und mit anderen Diensten rund um Bankleitzahlen und Kontonummern;
  • Bank.KtoRead zum Einlesen von MT940-Kontoauszügen in SQL-Datenbanken;
  • Bank.KtoDtaus zum Erzeugen und Prüfen von DTAUS-Dateien;
  • Bank.KtoSwift zur Abfrage der SWIFT-Website;
  • Bank.KtoArbeit zur Ermittlung der Arbeitstage in einem bestimmten Monat, Quartal oder Jahr.

Hinweis zur Nomenklatur: Eine procedure wird mit verschiedenen Parametern aufgerufen und gibt kein Ergebnis zurück (es können allerdings einige Parameter nach der Rückkehr einen neuen Wert haben - davon wird hier aber nirgendwo Gebrauch gemacht). Eine function wird ebenfalls mit verschiedenen Parametern aufgerufen, gibt aber ein Funktionsergebnis zurück.

An verschiedenen Stellen ist u.U. ein Fehler "-999" möglich: Dieser gibt an, daß momentan überhaupt keine Datendatei (weder "Demo" noch "vollständig") geladen ist.

Allen Objekten gemeinsam sind die beiden folgenden Funktionen:

  • function GetErrorMessage

    Eingabeparameter
    NameTypInhalt
    aErrorCodeIntegerFehlernummer dieses Objekts
    Ausgabeparameter
    NameTypInhalt
    FunktionsergebnisStringFehlernummer im Klartext

    Viele Funktionen liefern eine Fehlernummer zurück, wobei 0 meistens "kein Fehler" bedeutet. Die KONTOPRUEF-Fehlernummern (und einige andere) finden Sie auf der Seite mit der Online-Bankverbindungsprüfung; wenn Sie in Ihrer Software einen Fehlertext statt einer Fehlernummer benötigen, können Sie diese Funktion verwenden, die eine Fehlernummer in einen Fehlertext übersetzt. (Dies geht immer und überall - völlig unabhängig davon, ob tatsächlich ein Fehler aufgetreten ist oder nicht! Es handelt sich nur um eine "Zahl-zu-Text-Übersetzung", weiter nichts.)

  • function GetLastError

    Eingabeparameter
    NameTypInhalt
    ---
    Ausgabeparameter
    NameTypInhalt
    FunktionsergebnisStringGgf. zusätzliche Informationen zum zuletzt aufgetretenen Fehler

    Wenn ein Fehler aufgetreten ist, können Sie hier u.U. zusätzliche Informationen über die Fehlerursache erhalten (nicht bei allen Funktionen); so wird z.B. beim fehlgeschlagenen Öffnen von Datenbanken bei Bank.KtoRead die Klartext-Fehlermeldung des Betriebssystems abgelegt, mit deren Hilfe Sie dann unterscheiden können, ob die Verbindung zum SQL-Server nicht aufgebaut werden konnte oder ob lediglich Benutzername/Kennwort ungültig waren o.ä.

Hier nun die speziellen Prozeduren und Funktionen der einzelnen Objekte:

Nach oben

KtoUpdate

Bank.KtoUpdate kümmert sich um den Download und die Verwaltung von Datendateien und Updates. Der Name einer Datendatei ist bankxxyz.wbd (wbd=Windows-Bank-Daten) bzw. bankxxyz.lbd (lbd=Linux-Bank-Daten). (In der Demo-Version, in der nur ein Teil der Banken enthalten ist, ist bank durch demo ersetzt.) Neue Datendateien können vom Update-Server heruntergeladen werden, entweder per Softwareaufruf (s.u.) oder per manuellem Download. Die übertragenen Dateien heißen bankxxyz.wbp (wbp=Windows-Bank-Paket) bzw. bankxxyz.lbp (lbp=Linux-Bank-Paket) und sind zur schnelleren Übertragung gepackt (ca. 170 KB statt ausgepackt ca. 800 KB) und mit einer kryptographischen Signatur versehen, um Übertragungsfehler oder Hacker-Angriffe beim Download zu verhindern.

Die Stellen "xxyz" in den Dateinamen bedeuten:

  • xx = Endziffern des Jahres, in dem diese Datei erstellt wurde, also z.B. "04" für 2004;
  • y = Laufende Nummer im jeweiligen Jahr; gegenwärtig erscheinen vier Datendateien pro Jahr; d.h. diese Nummer bedeutet
    • 1 = März
    • 2 = Juni
    • 3 = September
    • 4 = Dezember
  • z = 0 bei den Originaldateien; sollte die Bundesbank innerhalb eines Quartals auf Fehler in ihren Daten aufmerksam machen, gibt es "Zwischen-Updates", die hier von 1 an aufwärts gezählt werden.

Die Datendateien und -pakete werden stets ohne Verzeichnisangabe verwendet. Die Verzeichnisse werden unter Windows bzw. unter Linux unterschiedlich festgelegt:

  • Unter Windows spielt sich das Herunterladen der wbp-Pakete und das Speichern der wbd-Dateien im selben Verzeichnis ab, in dem sich auch Bank.exe befindet. Das Benutzerkonto, unter dem Bank.exe läuft, muß also auf dieses Verzeichnis Schreibzugriff haben.
  • Unter Linux wird das Datendateiverzeichnis durch einen Eintrag in der Datei /etc/KtoPruef.conf festgelegt, der z.B. für das Verzeichnis /home/mh/data wie folgt aussehen muß:
    [Directories]
    data=/home/mh/data

Die einzelnen Prozeduren und Funktionen:

  • function KtoUpdate.GetCurrentFileName

    Eingabeparameter
    NameTypInhalt
    ---
    Ausgabeparameter
    NameTypInhalt
    FunktionsergebnisStringName der Datendatei, die gerade aktiviert ist. Leer, wenn überhaupt keine Datendatei aktiviert ist

    Gibt den Namen der momentan aktivierten Datendatei zurück. Beim Programmstart wird automatisch die neueste vorhandene Datendatei aktiviert. Falls überhaupt keine bank...-Datei existiert, wird nach demo...-Dateien gesucht und von diesen die neueste aktiviert.

  • function KtoUpdate.GetNewestFileName

    Eingabeparameter
    NameTypInhalt
    ---
    Ausgabeparameter
    NameTypInhalt
    FunktionsergebnisStringName der neuesten lokal verfügbaren Datendatei. Leer, wenn überhaupt keine Datendatei lokal verfügbar ist

    Durchsucht das Verzeichnis der Datendateien und gibt den Dateinamen der neuesten lokal verfügbaren Datendatei zurück. Diese Funktion wird auch intern beim Programmstart verwendet, um die damit ermittelte Datendatei automatisch zu aktivieren.

  • function KtoUpdate.GetDataDirectory
    Nur in Windows, nicht in Linux!
    Erst verfügbar ab KONTOPRUEF 2.1 vom 12.02.06!

    Eingabeparameter
    NameTypInhalt
    ---
    Ausgabeparameter
    NameTypInhalt
    FunktionsergebnisStringMomentan eingestelltes Verzeichnis für die nächsten Datendatei-Operationen

    Gibt das Verzeichnis zurück, in dem die nächste Datendatei-Operation (Herunterladen, Entpacken, Aktivieren) stattfinden wird. Das Verzeichnis ist immer mit einem Delimiter ("\" unter Windows) abgeschlossen.

  • procedure KtoUpdate.SetDataDirectory
    Nur in Windows, nicht in Linux!
    Erst verfügbar ab KONTOPRUEF 2.1 vom 12.02.06!

    Eingabeparameter
    NameTypInhalt
    aDataDirectoryStringVerzeichnisname
    Ausgabeparameter
    NameTypInhalt
    ---

    Setzt das Verzeichnis, in dem die nächste Datendatei-Operation (Herunterladen, Entpacken, Aktivieren) stattfinden soll. Ein evtl. fehlender Delimiter am Verzeichnisende ("\" unter Windows) wird ggf. automatisch ergänzt. Das übergebene Verzeichnis wird nicht auf Existenz geprüft.

  • procedure KtoUpdate.SetProxy

    Eingabeparameter
    NameTypInhalt
    aHostStringName des Proxy-Servers
    aPortIntegerPortnummer des Proxy-Servers
    Ausgabeparameter
    NameTypInhalt
    ---

    Falls Sie für den Update-Abruf einen Proxy-Server verwenden möchten oder müssen, können Sie hier die nötigen Angaben machen. Es wird nur dann ein Proxy-Server verwendet, wenn der angegebene Name nicht leer ist und wenn der Port von 0 verschieden ist.

  • procedure KtoUpdate.SetTimeout

    Eingabeparameter
    NameTypInhalt
    aTimeoutIntegerTimeout in Sekunden
    Ausgabeparameter
    NameTypInhalt
    ---

    Hier können Sie einen maximalen Grenzwert für das Warten auf die Antwort des Update-Servers einstellen. Wenn der Server nicht in der angegebenen Zeit antwortet, wird der Update-Versuch mit einem Fehlercode abgebrochen. Wenn Sie diese Prozedur nie aufrufen, wird Ihr systemweit konfigurierter Timeout-Wert verwendet.

  • function KtoUpdate.ServerCheck

    Eingabeparameter
    NameTypInhalt
    aUserStringBenutzername für den Update-Server
    aPassStringKennwort für den Update-Server
    Ausgabeparameter
    NameTypInhalt
    FunktionsergebnisStringBei Erfolg: '+' und Name des auf dem Update-Server vorhandenen Datendateipakets
    Bei Mißerfolg: '-' und Begleittext

    Fragt den Update-Server nach der momentan dort vorliegenden Datendatei. Ist eine Datei zum Abruf bereit, wird der Dateiname mit einem vorangestellten Pluszeichen zurückgeliefert, also z.B. +bank0430.wbp für die 3. Ausgabe 2004 des Windows-Bank-Pakets. Ist keine Datei vorhanden, ist die Benutzerkennung ungültig oder kann die Verbindung nicht hergestellt werden o.ä., beginnt der Rückgabewert mit einem Minuszeichen, hinter dem im Klartext der Grund des Scheiterns steht. Ggf. können Sie mit KtoUpdate.GetLastError weitere Informationen erhalten.

  • function KtoUpdate.ServerDownload

    Eingabeparameter
    NameTypInhalt
    aUserStringBenutzername für den Update-Server
    aPassStringKennwort für den Update-Server
    Ausgabeparameter
    NameTypInhalt
    FunktionsergebnisStringBei Erfolg: '+' und Name des heruntergeladenen Datendateipakets
    Bei Mißerfolg: '-' und Begleittext

    Im Prinzip das gleiche wie ServerCheck, nur daß die Datei im Erfolgsfall gleich heruntergeladen wird (in das Verzeichnis der Datendateien). Eine evtl. bereits vorhandene gleichnamige Datei wird dabei überschrieben.

  • function KtoUpdate.Unpack

    Eingabeparameter
    NameTypInhalt
    aFileNameStringDateiname eines heruntergeladenen Datendateipakets
    Ausgabeparameter
    NameTypInhalt
    FunktionsergebnisInteger0: Ok
    5: Zugriff verweigert (s.u.)
    13: Fehler in Datendateipaket

    Hiermit kann ein wbp- bzw. lbp-Datendateipaket zu einer wbd- bzw. lbd-Datendatei entpackt werden. Vorhandene Datendateien werden dabei überschrieben - dies funktioniert jedoch nicht, wenn die zu überschreibende Datendatei gerade aktiviert (d.h. in Gebrauch ist). Bei einem Fehler können Sie mit KtoUpdate.GetLastError weitere Informationen erhalten.

  • function KtoUpdate.Activate

    Eingabeparameter
    NameTypInhalt
    aFileNameStringDateiname einer lokal vorhandenen Datendatei (leer für neueste)
    Ausgabeparameter
    NameTypInhalt
    FunktionsergebnisInteger0: Ok
    3: Datei nicht vorhanden bzw. keine Datei gefunden
    13: Neue Datendatei konnte nicht geladen werden; alte Datendatei wurde wieder geladen
    14: Neue Datendatei konnte nicht geladen werden; auch alte Datendatei konnte nicht wieder geladen werden

    Hiermit kann eine lokal vorliegende Datendatei aktiviert und in KONTOPRUEF verwendet werden. Wird kein Dateiname übergeben, wird intern GetNewestFileName aufgerufen, um die neueste Datendatei zu ermitteln. Bei einem Fehler können Sie mit KtoUpdate.GetLastError weitere Informationen erhalten.

Hinweis: Alle Bank.KtoUpdate-Funktionen können im laufenden Betrieb aufgerufen werden!

Nach oben

KtoPruef

  • function KtoPruef.GetVersion

    Eingabeparameter
    NameTypInhalt
    ---
    Ausgabeparameter
    NameTypInhalt
    FunktionsergebnisStringVersionsangaben

    Liefert eine Versionsangabe ähnlich Version vom 17.08.04 (BLZ-Stand 06.09.04) zurück.

  • function KtoPruef.GetVersionExtended

    Eingabeparameter
    NameTypInhalt
    ---
    Ausgabeparameter
    NameTypInhalt
    FunktionsergebnisStringErweiterte Versionsangaben

    Liefert erweiterte Versionsangaben zurück, und zwar mehrere Angaben in einem String, die durch eine Tilde ("~") getrennt sind. Das Ende des Strings wird durch zwei Tilden ("~~") markiert. Die einzelnen Felder bedeuten:

    1. Lesbare Versionsangabe wie bei GetVersion
    2. Jahr der Daten, z.B. 2004
    3. Lfd. Nr. im Jahr, also 1 bis 4
    4. Korrekturnummer (0 bis 9)
    5. Datum des ersten Gütigkeitstags im Format TT.MM.JJ
    6. Datum des letzten Gütigkeitstags im Format TT.MM.JJ
    7. Angabe, ob es sich um eine Demo-Version handelt (True) oder nicht (False)

    Ein Rückgabewert könnte also wie folgt aussehen:
    Version vom 17.08.04 (BLZ-Stand: 06.09.04)~2004~3~0~06.09.04~05.12.04~True~~
    Es ist damit zu rechnen, daß in künftigen Version noch weitere Felder hinten an den String angehängt werden.

  • function KtoPruef.TestBlzKto

    Eingabeparameter
    NameTypInhalt
    aBlzStringZu prüfende Bankleitzahl
    aKtoStringZu prüfende Kontonummer
    Ausgabeparameter
    NameTypInhalt
    FunktionsergebnisIntegerPrüfergebnis

    Prüft die angegebene Bankleitzahl-/Kontonummernkombination auf Gültigkeit. Die möglichen Ergebnisse finden Sie hier.

  • function KtoPruef.TestIban

    Eingabeparameter
    NameTypInhalt
    aIbanStringZu prüfende IBAN
    Ausgabeparameter
    NameTypInhalt
    FunktionsergebnisInteger0: Ok
    13: Prüfzifferfehler

    Prüft die angegebene IBAN auf Gültigkeit (nur die der Prüfziffer, nicht auf Existenz der Bank wie bei deutschen Bankverbindungen). Es kann daher nur die Ergebnisse 0 (Ok) oder 13 (Prüfziffer falsch) geben.

  • function KtoPruef.TestCC

    Eingabeparameter
    NameTypInhalt
    aCCStringZu prüfende Kreditkartennummer
    Ausgabeparameter
    NameTypInhalt
    FunktionsergebnisInteger0: Ok
    1: Unbekannter Kartentyp
    12: Es sind nicht nur Ziffern enthalten
    13: Prüfzifferfehler

    Prüft die angegebene Kreditkartennummer auf Gültigkeit. Wichtiger Hinweis: Im Gegensatz zu den "amtlichen" Unterlagen bei den Bankverbindungen beruht die Kreditkartenprüfung auf unsicheren Unterlagen aus dem Internet. Die Verfahren sind zwar mit vorhandenen Kreditkarten getestet worden, aber es ist nicht völlig ausgeschlossen, daß diese Prüfung in Einzelfällen ein falsches Ergebnis anzeigt.

  • function KtoPruef.GetIban

    Eingabeparameter
    NameTypInhalt
    aBlzStringBankleitzahl
    aKtoStringKontonummer
    aSpaceFlagIntegerIBAN soll
    0: ohne
    1: mit
    Zwischenräume(n) zur besseren Lesbarkeit generiert werden
    Ausgabeparameter
    NameTypInhalt
    FunktionsergebnisStringGenerierte IBAN

    Generiert aus der angegebenen Bankverbindung eine IBAN. Wichtiger Hinweis: Sprechen Sie unbedingt mit Ihrer Bank, bevor Sie eine hier generierte IBAN verwenden. Bei manchen Banken ist die IBAN nicht eindeutig der Kontonummer zugeordnet, oder das Konto muß für die IBAN-Benutzung erst noch "freigeschaltet" werden o.ä. Verwenden Sie diese Funktion also nur als ersten Anhaltspunkt.

  • function KtoPruef.GetBic

    Eingabeparameter
    NameTypInhalt
    aBlzStringBankleitzahl
    Ausgabeparameter
    NameTypInhalt
    FunktionsergebnisStringBIC zur angegebenen Bankleitzahl

    Gibt den BIC (Bank Identifier Code) für die angegebene Bank zurück. Ist für diese Bank kein BIC vorhanden, wird ein Leerstring zurückgegeben.

  • function KtoPruef.GetBankName58

    Eingabeparameter
    NameTypInhalt
    aBlzStringBankleitzahl
    Ausgabeparameter
    NameTypInhalt
    FunktionsergebnisStringName der Bank, maximal 58 Zeichen lang

    Liefert den (maximal 58 Zeichen langen) Namen der über die angegebene Bankleitzahl identifizierten Bank zurück. Existiert diese Bankleitzahl nicht, wird ein Leerstring zurückgegeben.

  • function KtoPruef.GetBankName20

    Eingabeparameter
    NameTypInhalt
    aBlzStringBankleitzahl
    Ausgabeparameter
    NameTypInhalt
    FunktionsergebnisStringName der Bank, maximal 20 Zeichen lang

    Liefert den (maximal 20 Zeichen langen) Namen der über die angegebene Bankleitzahl identifizierten Bank zurück. Existiert diese Bankleitzahl nicht, wird ein Leerstring zurückgegeben.

  • function KtoPruef.GetBankName27

    Eingabeparameter
    NameTypInhalt
    aBlzStringBankleitzahl
    Ausgabeparameter
    NameTypInhalt
    FunktionsergebnisStringName der Bank, maximal 27 Zeichen lang

    Liefert den (maximal 27 Zeichen langen) Namen der über die angegebene Bankleitzahl identifizierten Bank zurück. Existiert diese Bankleitzahl nicht, wird ein Leerstring zurückgegeben. Hinweis: Dies ist der Name, der in früheren KONTOPRUEF-Versionen über GetBankName abrufbar war.

  • function KtoPruef.GetBankPlz

    Eingabeparameter
    NameTypInhalt
    aBlzStringBankleitzahl
    Ausgabeparameter
    NameTypInhalt
    FunktionsergebnisStringPostleitzahl der Bank

    Liefert die Postleitzahl der über die angegebene Bankleitzahl identifizierten Bank zurück. Existiert diese Bankleitzahl nicht oder hat die Bank keine Postleitzahl gemeldet, wird ein Leerstring zurückgegeben.

  • function KtoPruef.GetBankOrt

    Eingabeparameter
    NameTypInhalt
    aBlzStringBankleitzahl
    Ausgabeparameter
    NameTypInhalt
    FunktionsergebnisStringOrt der Bank

    Liefert den Ort der über die angegebene Bankleitzahl identifizierten Bank zurück. Existiert diese Bankleitzahl nicht, wird ein Leerstring zurückgegeben. Hinweis: Der hier zurückgegebene Ort beinhaltet nicht notwendigerweise die korrekte Schreibweise für Anschriften auf Postsendungen! Prüfen Sie daher die korrekte Schreibweise mit der KONTOPRUEF-Adreßprüfung.

  • function KtoPruef.GetFirstBank

    Eingabeparameter
    NameTypInhalt
    ---
    Ausgabeparameter
    NameTypInhalt
    FunktionsergebnisStringBankleitzahl der ersten Bank in der momentan aktivierten Datendatei

    Wenn Sie alle Banken der momentan aktivierten Datendatei auslesen wollen, rufen Sie zuerst GetFirstBank auf, und danach so lange GetNextBank, bis ein Leerstring zurückgegeben wird.

  • function KtoPruef.GetNextBank

    Eingabeparameter
    NameTypInhalt
    ---
    Ausgabeparameter
    NameTypInhalt
    FunktionsergebnisStringBankleitzahl der nächsten Bank in der momentan aktivierten Datendatei

    Wenn Sie alle Banken der momentan aktivierten Datendatei auslesen wollen, rufen Sie zuerst GetFirstBank auf, und danach so lange GetNextBank, bis ein Leerstring zurückgegeben wird.

  • function KtoPruef.GetFirstMatch

    Eingabeparameter
    NameTypInhalt
    aSearchStringStringEin oder mehrere Wörter oder Wortbestandteile, nach denen gesucht werden soll (UND-verknüpft)
    aFragmentsFlagIntegerEs soll
    0: nur nach ganzen Wörtern
    1: auch nach Wortbestandteilen
    gesucht werden
    Ausgabeparameter
    NameTypInhalt
    FunktionsergebnisStringBankleitzahl der ersten Bank, die die Suchkriterien erfüllt

    Hiermit können Sie die Bankleitzahl einer Bank anhand ihres Namens suchen (es wird der "BankName27" verwendet). Geben Sie mehr als einen Begriff mit Zwischenräumen ein. Wenn bereits hier als Ergebnis ein Leerstring zurückkommt, gibt es überhaupt keine Banken, die Ihre Suchkriterien erfüllen; ansonsten rufen Sie danach so lange GetNextMatch auf, bis ein Leerstring zurückkommt.

  • function KtoPruef.GetNextMatch

    Eingabeparameter
    NameTypInhalt
    ---
    Ausgabeparameter
    NameTypInhalt
    FunktionsergebnisStringBankleitzahl der nächsten Bank, die die Suchkriterien erfüllt

    Arbeitet die Suchergebnisse ab, die Sie mit GetFirstMatch spezifiert haben. Wenn keine weitere Bank gefunden wird, wird ein Leerstring zurückgegeben.

Veraltete Interfaces:

  • GetReg: Liefert einen String zurück, in dem steht, daß es keine Registrierungsinformationen mehr gibt.
  • Init, InitFile, InitReg, SetRegCode: Tun nichts und liefern 0 (Ok) zurück.
  • GetBankName: Wird intern auf GetBankName27 abgebildet.

Nach oben

KtoRead

Nur in der Windows-, nicht in der Linux-Version!

Das Objekt Bank.KtoRead bietet Ihnen die Möglichkeit, elektronische Kontoausüge im MT940-Format, die Sie von Ihrer Bank abgerufen haben, in eine SQL-Datenbank einzulesen. Unter Windows wird dazu die "ADO"-Technologie genutzt; Sie können alle Datenbanken verwenden, für die es einen ODBC-Treiber gibt; außerdem steht ein spezieller Treiber für den MS-SQL-Server zur Verfügung. mySQL-Datenbanken können Sie verwenden, wenn Sie den ODBC-Treiber für mySQL installieren und in KONTOPRUEF den Typ "ODBC" angeben.

Es muß dazu eine Datenbank mit zwei Tabellen geben, die vorab von Ihnen angelegt werden müssen, und zwar wie folgt:

CREATE TABLE KONTOAUSZUEGE (NR INTEGER NOT NULL,
        BLZ VARCHAR(8) NOT NULL,
        KONTO VARCHAR(23) NOT NULL,
        AUSZUGNR INTEGER NOT NULL,
        ALTGUTDATUM DATE NOT NULL,
        ALTGUTWAE CHAR(3) NOT NULL,
        ALTGUTBETRAG NUMERIC(15, 2) NOT NULL,
        NEUGUTDATUM DATE NOT NULL,
        NEUGUTWAE CHAR(3) NOT NULL,
        NEUGUTBETRAG NUMERIC(15, 2) NOT NULL,
        USERID INTEGER NOT NULL,
PRIMARY KEY (NR));

CREATE TABLE KONTOUMSAETZE (NR INTEGER NOT NULL,
        AUSZUGNR INTEGER NOT NULL,
        VALUTA DATE NOT NULL,
        BUCHUNG DATE NOT NULL,
        BETRAG NUMERIC(15, 2) NOT NULL,
        ORIWAE CHAR(3),
        ORIBETRAG NUMERIC(15, 2),
        GVC INTEGER NOT NULL,
        BUTEXT VARCHAR(27),
        PN VARCHAR(10),
        BLZ CHAR(8),
        KONTO VARCHAR(10),
        ABSENDER VARCHAR(54),
        VERWEND VARCHAR(378),
        TSE INTEGER,
        USERID INTEGER NOT NULL,
PRIMARY KEY (NR));

Anmerkung: Bei manchen Datenbanken kann für den Betrag auch der Datentyp Money statt Numeric(15,2) verwendet werden bzw. für die Datumsfelder SmallDateTime statt Date. Bitte sehen Sie in der Dokumentation der Datentypen Ihrer Datenbank nach.

Hinweis: Das Feld AuszugNr in der Tabelle KontoUmsaetze ist im Prinzip ein Foreign Key auf das Feld Nr (nicht AuszugNr!) in der Tabelle KontoAuszuege. Den Foreign Key Restraint darf man aber in SQL nicht verwenden, da die Umsätze vor den Auszügen in die Datenbank eingefügt werden). Das Feld AuszugNr in der Tabelle KontoAuszuege ist rein informatorisch (dort wird das von der Bank gelieferte Feld unverändert übernommen).

Wichtiger Hinweis zum Feld KONTO: Obwohl es in Deutschland maximal zehnstellige Kontonummern gibt, ist dieses Feld länger, da Sie von Ihrer Bank möglicherweise systeminterne Kontonummern bereitgestellt bekommen (z.B. mit vorangestellter Filialennummer, mit angefügter Unterkontonummer und/oder Währungskennzeichen). KtoRead versucht beim Einlesen das "normale" Schema BBBBBBBB/KKKKKKKKKK (B=8stellige Bankleitzahl, K=10stellige Kontonummer) auszuwerten; falls dies bei Ihnen nicht richtig funktioniert, weil Ihre Bank die Kontonummer mit zusätzlichen Daten "anreichert", können Sie (ab Version 0831) den Dateinamen mit einem angehängten "+" übergeben (also z.B. Auszug080922.STA+ und erhalten dann die im Kontoauszug enthaltenen Daten unverändert in Ihrer Datenbank.

Beispiele, was (bei Verwendung des "+") im MT940-Auszug alles enthalten sein kann, wenn Ihre Kontonummer 123456 lautet:

Empfangene KontonummerBemerkung
123456"Normale" Kontonummer
000000000000123456Mit führenden Nullen
12345600Mit angehängter Unterkontonummer 00
0000123456888Führende Nullen, angehängte 888
416000123456Filiale vor der Kontonummer
0000123456EURFührende Nullen, angehängte Währungsbezeichnung
41600012345600888EURKombination aus allen obigen Möglichkeiten
Es ist außerdem auch möglich, daß im Auszug keine Bankleitzahl enthalten ist;
das Feld BLZ in der Datenbank enthält in diesem Fall einen Leerstring!

Neben den allgemeinen beiden Fehlerfunktionen gibt es nur eine einzige spezifische Funktion:

  • function KtoRead.ReadMt940

    Eingabeparameter
    NameTypInhalt
    aDatabaseTypeInteger0: ODBC
    1: MS-SQL
    aDatabaseNameStringBei ODBC: Der System- oder User-DSN-Name aus der ODBC-Verwaltung
    Bei MS-SQL: Der Servername; falls nicht die Default-Datenbank auf diesem Server genutzt werden soll, kann der Datenbankname hinter einem Schrägstrich ("/") noch angehängt werden (also z.B. my.database.xy/Accounting).
    Neu ab Version 0510: Hinter den Datenbanknamen können noch im Format "#Auszugtabellenname#Umsatztabellenname" die Namen der gewünschten Tabellen angehängt werden, falls nicht die Standardtabellennamen (s.o.) verwendet werden sollen.
    aUsernameStringDer Benutzername, mit dem auf die Datenbank zugegriffen werden soll; ist dieser Name leer, wird die Windows-Authentifizierung verwendet
    aPasswordStringDas Kennwort, mit dem auf die Datenbank zugegriffen werden soll
    aFileNameStringDer Dateiname der MT940-Datei; kann leer sein, dann wird lediglich eine kurze Testverbindung zur Datenbank aufgebaut. Ab Version 0831 können Sie an den Dateinamen ein Pluszeichen ("+") anhängen (also z.B. Auszug080923.STA+); dann erhalten Sie die vollständige Kontonummer 1:1 aus dem MT940-Datensatz (siehe oben)
    aTranslationStringParameter, wie Non-Swift-Auszüge übersetzt werden sollen, siehe unten
    aUserIdIntegerBeliebige Zahl, die in die letzte Spalte der Datenbank geschrieben wird, um z.B. die Herkunft eines Datensatzes zu dokumentieren
    Ausgabeparameter
    NameTypInhalt
    FunktionsergebnisInteger0: Ok
    1: Datenbanktyp ungültig
    2: ADO ist nicht installiert
    3: Datenbank kann nicht geöffnet werden
    4: MT940-Datei kann nicht geöffnet werden
    5: Auszug kann nicht in die Datenbank geschrieben werden
    6: Umsatz kann nicht in die Datenbank geschrieben werden

    Diese Funktion liest die angegebene MT940-Datei in die angegebene Datenbank ein. Bei allen Fehlern können Sie mit KtoRead.GetLastError weitere Informationen abrufen.

    Mit dem Parameter aTranslation können beliebige "Non-Swift"-Auszüge in ein geeignetes Format konvertiert werden. Normalerweise geht KONTOPRUEF von einem Swift- Format mit dem Mehrzweckfeld :86: aus (siehe Beschreibung des Swift-Formats). In diesem Fall brauchen Sie bei aTranslation nichts angeben. Sollte Ihre Bank jedoch Non-Swift-Auszüge senden (Mehrzweckfeld :NS:, siehe Beschreibung des Non-Swift-Formats), können Sie hier einen String übergeben, der die einzelnen Felder zuordnet. Dieser String hat das Format XX:YY,XX:YY,XX:YY,XX:YY usw., wobei jedes Feld XX des Non-Swift-Formats in das Feld YY des Swift-Formats übersetzt wird. Ich hatte z.B. einmal einen Auszug, bei dem der String 01:20,02:32,03:00,04:10 lauten mußte, was bedeutet:

    • NS-Feld 01 wird in 20 übersetzt (Verwendungszweck)
    • NS-Feld 02 wird in 32 übersetzt (Auftraggeber)
    • NS-Feld 03 wird in 00 übersetzt (Buchungstext)
    • NS-Feld 04 wird in 10 übersetzt (Primanota)
    • NS-Feld 05 wird ignoriert (unbekannt; hätte eine Uhrzeit sein können; die kommt aber in Swift ohnehin nicht vor).

    Die Belegung ist bei verschiedenen Banken aber leicht unterschiedlich - es empfiehlt sich also, den MT940-Auszug der jeweiligen Bank vor dem ersten Einlesen genau zu untersuchen, damit eine vernünftige Übersetzungstabelle übergeben werden kann.

Nach oben

KtoDtaus

Mit dem KtoDtaus-Objekt lassen sich DTAUS-Dateien, mit denen man Überweisungen und Lastschriften an Banken senden kann, sowohl erzeugen als auch prüfen. Ab Version 0442 der Datendatei ist außerdem die Erzeugung des DTAUS-"Spezialformats" für den Auslands-Lastschrifteinzug der Landesbank Baden-Württemberg enthalten. Spezielle Parameter für diesen Dienst, die von den normalen inländischen DTAUS-Dateien abweichen, sind in den folgenden Funktionsbeschreibungen mit "LBBW:" markiert.

Die Funktionen im einzelnen:

  • function KtoDtaus.CreateFile

    Eingabeparameter
    NameTypInhalt
    aFileNameStringDatei, in die die DTAUS-Datei geschrieben werden soll
    aBlzStringEigene Bankleitzahl
    LBBW: 99935000
    aKtoStringEigene Kontonummer
    LBBW: Pseudokontonummer des jeweiligen Landes:
    • 2020202020 für Österreich
    • 2121212121 für Belgien
    • 2222222222 für Frankreich
    • 2323232323 für Schweiz
    • 2424242424 für Niederlande
    • 2525252525 für Italien
    • 2626262626 für Großbritannien
    aNameStringKontobezeichnung des eigenen Kontos (maximal 54stellig; längere Namen werden nach 54 Zeichen abgeschnitten)
    LBBW: Nach der Kontobezeichnung müssen (nach einem Zwischenraum) noch Währung und Landeskennung, getrennt durch einen Bindestrich folgen, also z.B. "MUSTERMANN EUR-IT" für EUR-Lastschriften in Italien. Die Gesamtlänge aus Kontobezeichnung, Wührung und Land darf maximal 27 Zeichen betragen!
    aNumberStringNummer (als String) dieser DTAUS-Datei. Frei wählbar (maximal zehnstellig); bei den meisten Banken wird diese Nummer bei der Buchung im Kontoauszug mit ausgedruckt
    aTypeInteger1: Überweisungen (Gutschriften)
    2: Einzug (Lastschriften)
    LBBW: Hier ist nur 2 für Lastschriften möglich.
    aCheckFlagInteger0: Die angegebenen Bankverbindungen werden ohne Prüfung in die DTAUS-Datei geschrieben
    1: Die angegebenen Bankverbindungen (inkl. der eigenen!) werden nur dann in die DTAUS-Datei geschrieben, wenn eine Prüfung durch KONTOPRUEF ergeben hat, daß die Bankverbindung in Ordnung ist; ansonsten erfolgt eine Fehlerrückmeldung, und der Datensatz wird nicht in die DTAUS-Datei geschrieben. Sollte bei CreateFile die eigene Bankverbindung bereits ungültig sein, wird die DTAUS-Datei gar nicht erst erzeugt und kann daher auch nicht weiter beschrieben werden
    LBBW: Hier muß 0 angegeben werden, da ausländische Bankverbindungen so nicht geprüft werden können.
    aDaysAheadIntegerNormalerweise 0, damit die Datei bei der Bank sofort bearbeitet wird. Soll die Datei erst später bearbeitet werden (z.B. bei Terminüberweisungen), ist hier die Anzahl der Tage anzugeben, die zwischen der Erstellung der Datei und ihrer Bearbeitung liegen sollen (d.h. 1=morgen, 2=übermorgen usw.)
    Ausgabeparameter
    NameTypInhalt
    FunktionsergebnisInteger0: Ok
    401: Es ist noch eine andere Datei von vorher geöffnet. Diese muß erst geschlossen werden (mit CloseFile), bevor eine neue Datei erzeugt werden kann
    402: Der angegebene Typ ist nicht 1 (Gutschriften) oder 2 (Lastschriften)
    403: Die eigenen Kontodaten sind unültig. Datei wurde nicht angelegt
    404: Die Datei konnte vom Betriebssystem nicht angelegt werden
    405: Die Datei wurde angelegt und kann beschrieben werden; allerdings ist beim Schreiben des A-Satzes ein Fehler aufgetreten. Die Datei ist daher vermutlich von der Bank nicht auswertbar
    LBBW: 406: Aus dem Kontobezeichnungsfeld "aName" konnte die Währung nicht herausgelesen werden. Die Datei wurde nicht angelegt.

    Diese Funktion legt eine neue DTAUS-Datei an (eine evtl. bereits vorhandene Datei gleichen Namens wird dabei ungefragt überschrieben). Bei allen Fehlern können Sie mit KtoDtaus.GetLastError weitere Informationen abrufen.

  • function KtoDtaus.WriteFile

    Eingabeparameter
    NameTypInhalt
    aBlzStringBankleitzahl des Zahlungsempfängers/-pflichtigen
    LBBW: Kann leer gelassen werden, dann wird 99935000 eingesetzt; ansonsten kann hier die Bankleitzahl des eigenen Hausbank-Kontos angegeben werden.
    aKtoStringKontonummer des Zahlungsempfängers/-pflichtigen
    LBBW: Kann leer gelassen werden, dann wird das Füllzeichen "1111111111" eingesetzt; ansonsten kann hier die Kontonummer des eigenen Hausbank-Kontos angegeben werden.
    aNameStringKontobezeichnung des Zahlungsempfängers/-pflichtigen (maximal 54stellig; längere Namen werden nach 54 Zeichen abgeschnitten)
    LBBW: Hier sind maximal 27 Zeichen zulässig.
    aVerwendStringVerwendungszweck der Überweisung/Lastschrift (maximal 378stellig; längere Verwendungszwecke werden nach 378 Zeichen abgeschnitten)
    LBBW: Der hier übergebene "Verwendungszweck" wird in Teile zu je 27 Zeichen aufgebrochen. Die ersten 27 Zeichen ergeben den tatsächlichen Verwendungszweck; jede weiteren 27 Zeichen ergeben den 1., 2., 3. usw. Erweiterungsteil. Die Erweiterungsteile sind gemäß der LBBW-Spezifikation für das jeweilige Land zu belegen (Kontonummer, Filiale, Bankleitzahl, Postleitzahl, Bankname o.ä. des Schuldners). Die vorgeschriebenen Erweiterungsteil-Aufteilungen sind durch Auffüllen der einzelnen Teile auf 27 Stellen genau einzuhalten!
    aInternStringGgf. interne Nummer (als String), die die einzelne Buchung innerhalb der Datei kennzeichnet und die z.B. für Rückrufe benötigt wird
    aTSIntegerTextschlüssel (bezeichnet die Zahlungsart):
    Bei Gutschriften:
    51: "Normale" Überweisung
    53: Lohn/Gehalt
    54: Vermögenswirksame Leistung
    56: Bezüge öffentlicher Kassen
    Bei Lastschriften:
    4: Abbuchungsauftrags-Lastschrift
    5: Einzugsermächtigungs-Lastschrift
    aTSEIntegerTextschlüsselergänzung (gibt zusätzliche Informationen zur Zahlungsart an); wird von KONTOPRUEF unverändert und ohne weitere Prüfung in die Datei geschrieben. I.d.R. ist hier 0 anzugeben; bei TS=54 geben Sie hier bitte die Endziffer des Jahres an, für das die VL gezahlt wird (also 4 für 2004). Evtl. andere zu benutzende Werte für dieses Feld erfahren Sie bei Ihrer Bank
    aBetragWindows: CurrencyBetrag in EUR mit Cent-Nachkommastellen
    Linux: unsigned longBetrag in Cent (Ganzzahl ohne Nachkommastellen)
    Ausgabeparameter
    NameTypInhalt
    FunktionsergebnisInteger0: Ok
    411: Es ist keine Datei geöffnet. Die Datei muß erst mit CreateFile erzeugt werden
    412: Der angegebene Textschlüssel paßt nicht zum Auftragstyp
    413: Die angegebene Bankverbindung ist ungültig. Datensatz wurde nicht geschrieben
    414: Datensatz konnte vom Betriebssystem nicht geschrieben werden. Die Datei ist daher vermutlich von der Bank nicht auswertbar

    Diese Funktion schreibt einen Datzensatz in die (zuvor mit CreateFile erzeugte) DTAUS-Datei. Bei allen Fehlern können Sie mit KtoDtaus.GetLastError weitere Informationen abrufen.

  • function KtoDtaus.CloseFile

    Eingabeparameter
    NameTypInhalt
    ---
    Ausgabeparameter
    NameTypInhalt
    FunktionsergebnisInteger0: Ok
    421: Es ist keine Datei geöffnet. Die Datei muß erst mit CreateFile erzeugt werden
    422: Die Datei wurde geschlossen, allerdings ist beim Schreiben des E-Satzes ein Fehler aufgetreten. Die Datei ist daher vermutlich von der Bank nicht auswertbar

    Diese Funktion schließt die Datei. Bei allen Fehlern können Sie mit KtoDtaus.GetLastError weitere Informationen abrufen.

  • function KtoDtaus.CheckFile

    Eingabeparameter
    NameTypInhalt
    aFileNameStringDTAUS-Datei, deren Bankverbindungen geprüft werden sollen
    Ab Datendatei 0442 kann man diese Funktion zuätzlich verwenden, um Informationen über die gerade mit KtoDtaus.CreateFile, KtoDtaus.WriteFile und KtoDtaus.CloseFile erzeugte Datei zu erhalten (z.B. um daraus einen sog. "Diskettenbegleitzettel" zu erzeugen). Dazu wird als Dateiname einer der folgenden speziellen - normalerweise unmöglichen - Dateinamen übergeben:
    *A liefert beim nächsten Aufruf von KtoDtaus.GetLastError die Anzahl der geschriebenen Datensätze in der DTAUS-Datei
    *B liefert beim nächsten Aufruf von KtoDtaus.GetLastError die Summe der Beträge in der DTAUS-Datei
    *C liefert beim nächsten Aufruf von KtoDtaus.GetLastError die Summe der Kontonummern in der DTAUS-Datei
    *D liefert beim nächsten Aufruf von KtoDtaus.GetLastError die Summe der Bankleitzahlen in der DTAUS-Datei
    Ausgabeparameter
    NameTypInhalt
    FunktionsergebnisInteger-431: Die angegebene Spezialfunktion (nach "*" im Dateinamen) existiert nicht
    -3: Datei konnte nicht geöffnet werden
    0: Es befinden sich keine fehlerhaften Bankverbindungen in der Datei
    1..N: Es befinden sich so viele fehlerhafte Bankverbindungen in der Datei

    Diese Funktion prüft die Bankverbindungen in einer vorhandenen DTAUS-Datei. Werden Fehler festgestellt, wird im Verzeichnis der geprüften Datei eine gleichnamige Datei, nur mit dem Typ .out, angelegt, in die die fehlerhaften Datensätze im Klartext geschrieben werden. Beim Ergebnis "-3" können Sie mit KtoDtaus.GetLastError die Fehlermeldung des Betriebssystems abrufen. Mit einem Pseudo-Dateinamen, der mit "*" beginnt, können Informationen über eine soeben geschriebene DTAUS-Datei abgerufen werden (ab Datendatei Version 0442).

Nach oben

KtoSwift

Mit diesem Modul können Sie die Swift-Website abfragen. Bitte beachten Sie, daß dies eine relativ unsichere Funktion ist, da der Swift-Server lediglich eine menschen- (und nicht maschinen-) -lesbare Antwortseite erzeugt, die von KONTOPRUEF nach bestem Wissen und Gewissen ausgewertet wird - aber falls sich das Format der Website einmal ändern sollte, kann es passieren, daß KONTOPRUEF die Antwort nicht mehr auswerten kann. Verwenden Sie diese Abfrage also bitte nicht in kritischen Anwendungen als letzte Entscheidung, ob ein bestimmter BIC gültig ist oder nicht!

  • procedure KtoSwift.SetProxy

    Eingabeparameter
    NameTypInhalt
    aHostStringName des Proxy-Servers
    aPortIntegerPortnummer des Proxy-Servers
    Ausgabeparameter
    NameTypInhalt
    ---

    Falls Sie für die Online-Abfrage einen Proxy-Server verwenden möchten oder müssen, können Sie hier die nötigen Angaben machen. Es wird nur dann ein Proxy-Server verwendet, wenn der angegebene Name nicht leer ist und wenn der Port von 0 verschieden ist.

  • procedure KtoSwift.SetTimeout

    Eingabeparameter
    NameTypInhalt
    aTimeoutIntegerTimeout in Sekunden
    Ausgabeparameter
    NameTypInhalt
    ---

    Hier können Sie einen maximalen Grenzwert für das Warten auf die Antwort des Swift-Servers einstellen. Wenn der Server nicht in der angegebenen Zeit antwortet, wird die Abfrage mit einem Fehlercode abgebrochen. Wenn Sie diese Prozedur nie aufrufen, wird Ihr systemweit konfigurierter Timeout-Wert verwendet.

  • function KtoSwift.TestBic

    Eingabeparameter
    NameTypInhalt
    aBicStringZu prüfender BIC (oder Anfang davon)
    Ausgabeparameter
    NameTypInhalt
    FunktionsergebnisInteger-200: Verbindung zum Server kann nicht hergestellt werden
    -300: Antwort des Servers ist nicht auswertbar
    -1: Es gibt definitiv keine BICs, die mit dem angegebenen Suchbegriff beginnen
    0: Es gibt anscheinend BICs, die mit dem angegebenen Suchbegriff beginnen, aber die Anzahl ist aus der Server-Antwort nicht auswertbar
    1..N: Es gibt so viele BICs, die mit dem angegebenen Suchbegriff beginnen

    Übergibt den eingegebenen Begriff an die Suchfunktion des Swift-Servers und wertet die Antwort aus. Bei Verbindungsproblemen (Ergebnis "-200") können Sie mit KtoSwift.GetLastError weitere Informationen erhalten.

Hinweis: Da der Swift-Server grundsätzlich nur nach dem Anfang des eingegebenen Suchbegriffs sucht, kommt es in seltenen Fällen vor, daß KONTOPRUEF als Ergebnis "1" liefert, was eigentlich darauf hindeutet, daß der geprüfte BIC gültig ist, aber trotzdem nicht stimmt (z.B. wird für "PBNKDEFF76" das Ergebnis "1" gemeldet, weil es nur einen BIC gibt, der mit "PBNKDEFF76" beginnt, nämlich "PBNKDEFF760" - aber dadurch ist "PBNKDEFF76" natürlich kein gültiger BIC). Wie oben bereits angemerkt, sollte das KONTOPRUEF-Ergebnis eines solchen Tests also nicht als die endgültige Weisheit betrachtet werden. Eine ergänzende Funktion, die eine Liste aller gefunden BICs mit dem angegebenen Anfang zurückliefert, ist in Vorbereitung - anhand einer solchen Liste kann man dann die Eindeutigkeit eines bestimmten Suchbegriffs genau bestimmen. Diese Funktion wird in einem der nächsten Updates enthalten sein.

Nach oben

KtoArbeit

Mit diesem Modul können Sie die Anzahl der Arbeitstage in einem bestimmten Monat, Quartal oder Jahr ermitteln.

  • function KtoArbeit.Arbeitstage

    Eingabeparameter
    aYearIntegerGewüschtes Jahr (z.B. 2004)
    aMonthIntegerEiner der folgenden Werte:
    1 bis 12: Monat
    41 bis 44: Quartal
    0: Gesamtes Jahr
    aSaturdaysFlagInteger0: Samstage zählen nicht als Arbeitstage
    1: Samstage zählen als Arbeitstage
    aFeiertageSetIntegerAngabe, welche Tage als Feiertage gelten sollen (siehe unten)
    Ausgabeparameter
    NameTypInhalt
    FunktionsergebnisIntegerAnzahl der Arbeitstage gemäß der angegebenen Parameter (bei ungültigen Parametern, z.B. aMonth=13, wird -1 zurückgegeben - ebenso bei 30% der Antworten der Demoversion)

    Ermittelt die Anzahl der Arbeitstage anhand der angegebenen Parameter. Für die Angabe der Tage, die als Feiertage gelten sollen, zählen Sie die Werte der folgenden Tage zusammen:

    TagWert
    Heilige drei Könige1
    Christi Himmelfahrt2
    Fronleichnam4
    Friedensfest8
    Mariä Himmelfahrt16
    Reformationstag32
    Allerheiligen64
    Allerseelen128
    Buß- und Bettag256
    Heiliger Abend512
    Silvester1024
    Immer als Feiertag gelten:
    • Neujahr
    • Karfreitag
    • Ostermontag
    • Tag der Arbeit
    • Pfingstmontag
    • Tag der deutschen Einheit
    • 1. Weihnachtstag
    • 2. Weihnachtstag

Nach oben