Zunächst erst mal Glückwunsch zu Eurokass. Es bietet für den Privatanwender eine gelungene Kassenverwaltung !
Als Neuling bei Eurokass musste ich gleich einige Features testen. Am interessantesten fand ich den Import der Kontodaten (CSV oder MTD940)
mit der automatischen Zuordnung der nach Verwendungszweck.
Leider bin ich mit den 'eingebauten' Referenzen nicht ganz zurecht gekommen.
Zum einen funktioniert die Filterung irgendwie nicht so, wie ich sie verstehe. Zum anderen hätte ich gerne eine Übersicht der bisherigen aktiven Referenzen.
Kurzum :
Ich habe mir eine externe Filterliste angelegt, die von einem InterRun Programm auf die eingelesenen Daten angewendet wird.
Die Namengebung und der Ort der Filterliste ist festgelegt:
Datei-Format : Text
Datei-Name: ImportFilter.txt
Datei-Verzeichnis: Eurokass-Programm-Verz\EBanking\Import\Kassenbuch-Name
z.B. Eurokass in : C:\Programme\Eurokass
Kassenbuch ist : Meier_2006
C:\Programme\Eurokass\EBanking\Import\Meier_2006\ImportFilter.txt
Filter Syntax: eigenwillig, nicht schön, aber funktioniert.
- JEDE Zeile endet mit dem Zeichen @
- Führende und dem @ Zeichen folgende Leerzeichen werden ignoriert
- In jeder Zeile steht eine Filterregel
- Jede Filterregel besteht aus beliebig vielen Feldern die voneinander mit # abgetrennt sind.
- Des letzte Feld vor dem @ bezeichnet das Zielkonto
(Voll ausggeschrieben)
- Alle anderen Felder sind Teilstrings die im Verwendungszweck vorkommen müssen.
- Wenn alle Teilstrings gefunden wurden (logisches UND), wird das Zielkonto eingetragen und die Suche für die aktuelle Buchung beendet und zu der nächsten Buchung weitergegangen (Erste positive Filterzeile ist dominant)
Beispiel:
3 Kommentarzeilen:
|--------------------------@
|Meine private Filterliste@
|--------------------------@
1 Filterzeile
Verwendungszweck soll enthalten :
"Gesang" "Schule Düsseldorf" "123222"
Zielkonto : "Kind1.Musikschule"
Gesang#Schule Düsseldorf#123222#Kind1.Musikschule@
Installation:
Filterdatei anlegen (Programm meckert sonst schon

Eurokass starten
Kassenbuch öffnen (falls nicht schon offen)
Programm-Center öffnen (Menü Extras oder Strg+P)
Baum aufklappen:
Kassenbuch-Name
|_ Homebanking
|_Beim Referenzieren einer Bankbewegung (doppelklick)
Die leere Routine auf der rechten Seite durch folgende (s.u.) ersetzen
(Copy & Paste). Speichern und Ausprobieren mit Êxtras->Importieren->Geldinstitut (Strg+I)
Falls ein Filter nicht funktioniert, Filterfile ändern und neu importieren
(rechter Klick auf eine zu importierende Buchung-> Datei laden)
Viel Erfolg,
PS: Falls mal ein Filter nicht fkt. zuerst auf @ am Zeilende prüfen

-- schnipp --
Procedure OnCheckReferenceAccount(Index : Integer; var aDate : String; var aValue : Double; var aDescription : String; var aReference : String; var aReferenceAccount : String; var IsReady : Boolean)
var des : String
var erg : Integer
var filterliste : String
var filterfile : String
var fzahl : Integer
var f : Integer
var c : Integer
var aktfilter : String
var konto : String
var cmpstring : String
var czahl : Integer
var hit : boolean
var errormsg : string
| Filterfile Verzeichnis + Name
filterfile = ApplicationPath + "\EBanking\Import\" + CashBook.ShortFileName + "\ImportFilter.txt"
| Meckern wenn kein Filterfile gefunden
if FileExists(filterfile)= false
ShowMessage("Kein Filterfile gefunden unter"+CR+filterfile)
stop
endif
| Verwendungszweck in Grossbuchstaben wandeln
des = UpperCase(aDescription)
| filterliste parsen und suchen
filterliste = LoadTextFromFile(filterfile)
| Anzahl gefundener Filterzeilen
fzahl = TokenCount( filterliste,"@") - 1
| Alle Filter durchgehen
for f = 1 to fzahl
|Führende + folgende Leerzeichen enfernen
aktfilter= Trim(Token(filterliste,"@",f))
cmpstring = Copy(aktfilter,1,1)
| Ist erstes Zeichen der Zeile '|' und letztes Zeichen '@'
| => Kommentarzeile
if cmpstring = "|"
break
endif
|Anzahl Keys für diesen Filter ermitteln
czahl = TokenCount(aktfilter,"#") - 1
|Zielkontobezeichnung lesen
konto = Token(aktfilter,"#",czahl+1)
| alle keys vergleichen (UND)
hit = true
for c = 1 to czahl
| Key Nummer c extrahieren
cmpstring = UpperCase(Token(aktfilter,"#",c))
| Key ist Teil des Verwendungszwecks ?
erg = Pos(cmpstring,des)
if erg = 0
hit = false
endif
next
| gefundene Kontozuordnung eintragen
If hit = true
| Wenn das Konto nicht existiert, meckern
if Accounts.Exists(konto) = false
errormsg = "Fehler in "+CR+filterfile+CR+"Zeile "+IntToSTr(f) + CR + "Konto unbekannt: " + konto
ShowMessage(errormsg)
break;
endif
| Zielkonto eintragen
aReferenceAccount = konto
IsReady = True
| Nach erstem Treffer die Suche abbrechen
break;
endif
next
EndProcedure