Entwickler-Ecke

Datenbanken - nach Datum filtern


Dia - Do 21.07.11 14:19
Titel: nach Datum filtern
Hallo,

ich bin ein absoluter Datenbank-Neuling was Delphi angeht und stelle mich gerade ziemlich dumm an.
Ich habe einen cDate : TCalendar, ein dbgReport : TBDGrid der seine Daten aus dsReport : TDatasource bekommt.
Wenn ich jetzt ein Datum in cDate anklicke, möcht ich, dass in dbgReport nur die Einträge aus dsReport angezeigt werden, die das Datum haben (also in der ds zu Grunde liegenden Tabelle gibt es ein Feld Datum).

Meine Idee war bisher

var today : string;
begin
today := datetostr(cDate.CalendarDate);
dsReport.DataSet.Filter := 'Datum='+today;
end;

Das klappt nur nicht. Es tut einfach mal gar nix :o

Kann mir jemand helfen?

Danke schonmal

Claudia


Nersgatt - Do 21.07.11 14:22

Du musst noch dsReport.DataSet.Filtered := True setzen.


mandras - Do 21.07.11 14:23

Ich weiß nicht mit welchen DataSets du arbeitest, daher kann das folgende evtl.
auch nicht stimmen, aber mein erster Eindruck:

Es muß noch die Eigenschaft filtered auf true gesetzt werden
Und dann schauen, in welchem Format das Datum im Filter-String angegeben werden muß.


Dia - Fr 22.07.11 17:50

Hallo,
vielen Dank für die schnellen Antworten. Jetzt funktioniert es. Allerdings filtert es nicht nur die Daten, die ich aus dieser DataSource beziehe, sondern die ganz zu Grunde liegende Tabelle. Das ist blöd, weil andere DataSourcen auch auf sie zugreifen. Ich hab dsReport jetzt einfach eine eigene Tabelle gegeben, wollte aber mal trotzdem fragen, ob es da nicht noch eine andere Lösung gibt.

Danke

Claudia


mandras - Fr 22.07.11 19:43

nein.

In Spezialfällen (zb Quickreport) gibt es weitergehende Filtermöglichkeiten,
bei DBGrid aber nicht.


jaenicke - Fr 22.07.11 20:16

Zumindest bei ClientDataSets gibt es auch CloneCursor, aber ich vermute das passt hier nicht.


Dia - Fr 22.07.11 20:27

Alles klar. Vielen Dank nochmal.


Xion - Sa 23.07.11 11:16

Filtern tut man normalerweise mit einem Query. Dort kannst du direkt per SQL reinschreiben, was du filtern möchtest.

Soweit ich weiß (schon ne Weile nichtmehr mit gearbeitet) kannst du dein DBGrid an das Query hängen, und das Query an die DataSource.

SQL sähe dann in etwa so aus:


Delphi-Quelltext
1:
SQLString := 'SELECT * FROM tabellen_name WHERE (Datum = '+datetostr(cDate.CalendarDate)+')';