19. April 2010 11:37
Hi,
das mit dem Wochentag war nur ein exemplarisches Beispiel für die gewünschte Funktionalität.
Das "echte" Beispiel ist wie folgt:
Es gibt eine Tabelle, die beinhaltet alle deutschen Feiertage für alle deutschen Bundesländer.
Diese Tabelle hat nur 4 Felder:
Datum, Bezeichnung (des Feiertages), Bundesland, Wochentag
Das Feld "Bezeichnung" ist ein Optionsfeld mit den Werten:
(Alle),Allerheiligen,Augsburger Friedensfest,Buß- und Bettag,Christi Himmelfahrt,Fronleichnam,Gründonnerstag,Heilige drei Könige,Karfreitag,Mariä Himmelfahrt,Neujahrstag,Ostermontag,Ostersonntag,Pfingstmontag,Pfingstsonntag,Reformationstag,Tag der Arbeit,Tag der deutschen Einheit,1. Weihnachtstag,2. Weihnachtstag
Das Feld "Bundesland" ist ein Optionsfeld mit den Werten:
(Alle),Nordrhein-Westfalen,Hamburg,Bremen,Niedersachsen,Bayern,Baden-Württemberg,Berlin,Brandenburg,Hessen,Mecklenburg-Vorpommern,Rheinland-Pfalz,Saarland,Sachsen,Thüringen,Schleswig-Holstein,Sachsen-Anhalt
Der erste Wert ist also jeweils "(Alle)".
Die Funktion "FilterTable" soll nun je nach übergebenem Parameter die Datensätze in der Tabelle nach Jahr filtern.
In die Funktion übergeben werden von einem Form aus: Datum, Bezeichnung, Bundesland
***********
FilterTable(in_Jahr : Integer;in_Feiertag : '(Alle),Allerheiligen,Augsburger Friedensfest,Buß- und Bettag,Christi Himmelfahrt,Fronleich.... (Bundesland mit allen Optionen wird ebenfalls übergeben)
- Die Funktion "FilterTable":
recFeiertage.RESET;
locDateStart := DMY2DATE(1,1,in_Jahr);
locDateEnd := DMY2DATE(31,12,in_Jahr);
IF in_Feiertag > 0 THEN BEGIN
IF in_Bundesland > 0 THEN BEGIN
recFeiertage.SETFILTER("Datum",'%1..%2',locDateStart,locDateEnd);
recFeiertage.SETFILTER("Bezeichnung",in_Feiertag);
recFeiertage.SETFILTER("Bundesland",in_Bundesland);
END ELSE BEGIN
recFeiertage.SETFILTER("Bezeichnung",in_Feiertag);
END;
END ELSE BEGIN
IF in_Bundesland > 0 THEN BEGIN
recFeiertage.SETFILTER("Bundesland",in_Bundesland);
END;
END;
Wenn eines der Optionsfelder den Wert "(Alle)" enthält, sollen dafür alle Datensätze angezeigt werden.
Beispiel 1:
Datum: 01.05.2010
Bezeichnung: (Alle)
Bundesland: Bayern
Im Ergebnis sollen alle Datensätze (also alle Feiertage) für 2010 angezeigt werden, die in Bayern gelten.
Beispiel 2:
Datum: 24.03.2010
Bezeichnung: Christi Himmelfahrt
Bundesland: Thüringen
Im Ergebnis soll nur ein Datensatz für 2010 angezeigt werden, nämlich der mit "Christi Himmelfahrt" und "Thüringen.
Wie gesagt, das Problem liegt darin, dass beim kompilieren die Optionsfelder mit der Meldung "Typkonvertierung" angemeckert werden, sobald ich sie variabel halten will.
Ich hoffe das hilft weiter