Autor Beitrag
Dia
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 26



BeitragVerfasst: Do 21.07.11 15:19 
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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1581
Erhaltene Danke: 279


Delphi 10 Seattle Prof.
BeitragVerfasst: Do 21.07.11 15:22 
Du musst noch dsReport.DataSet.Filtered := True setzen.

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
mandras
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 432
Erhaltene Danke: 107

Win 10
Delphi 6 Prof, Delphi 10.4 Prof
BeitragVerfasst: Do 21.07.11 15: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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 26



BeitragVerfasst: Fr 22.07.11 18: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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 432
Erhaltene Danke: 107

Win 10
Delphi 6 Prof, Delphi 10.4 Prof
BeitragVerfasst: Fr 22.07.11 20:43 
nein.

In Spezialfällen (zb Quickreport) gibt es weitergehende Filtermöglichkeiten,
bei DBGrid aber nicht.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 22.07.11 21:16 
Zumindest bei ClientDataSets gibt es auch CloneCursor, aber ich vermute das passt hier nicht.
Dia Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 26



BeitragVerfasst: Fr 22.07.11 21:27 
Alles klar. Vielen Dank nochmal.
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: Sa 23.07.11 12: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:

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

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)