Entwickler-Ecke

Datenbanken - Filter in DBgrid


Philipp_Reitter - Do 25.05.06 11:00
Titel: Filter in DBgrid
hi

ich hab ne datenbank in einem DBgrid nur jetzt will cih so was wie nen filter drinnen haben.... es sieht so aus

Kategorie Name Bezeichnung
10 1 k10n1
10 2 k10n2
11 1 k11n2
...
..

kann man da irgendwie sagen dass er nur die die am anfang 10 haben hineintzun soll...??

hoffe mir kann jemand helfen

danke im vorraus


Xion - Do 25.05.06 11:06

dazu brauchst du ein query und sql. Verknüpfe die DBGrid mit dem Query und schreibe ins Query
SELECT * FROM Deine_Tabelle WHERE dasFeld LIKE ''10%''

Das % bedeudet, dass nach der 10 noch beliebig viele Zeichen kommen können

Xion

EDIT: ich glaube das Table hat ein Feld namens 'Filter' im Object Inspector. da kannst dann dasFeld LIKE ''10%'' reinschreiben und Filter aktivieren (da muss auch noch ne boolean-variable im OI sein ;) )


EDIT 2: nenn dein Topic besser in 'BDE: Filter in DBGrid' um


Philipp_Reitter - Do 25.05.06 12:08

nix check..... hab das jetzt volle oft prbiert aber es kommt nichts heraus....


Xion - Do 25.05.06 12:17

du hast doch ein Table, oder? Klick das an und schreibe unter Filter:
FELD LIKE '10%'
und schalte Filtered auf TRUE

so müsste es gehen.

oder aber mit SQL (Stichwort Query)


Philipp_Reitter - Do 25.05.06 17:49

dann sagt er aber 'Operation nicht anwendbar'


thommy f - Fr 26.05.06 20:08

Probier´s mal so:


Delphi-Quelltext
1:
2:
    Datenmodul.Table1.Filter :='Kategorie = ''10''';
    Datenmodul.T_Kunden.Filtered := True;


Auf die Zahl der Hochkommas aufpassen und den Quellcode z.B. beim OnShow-Ereignis deines DBGrid einbauen.

Sollte gehen


mkinzler - Fr 26.05.06 20:13

Das Problem mit den Hochkommas kann man z.B, auch so umgehen:

Delphi-Quelltext
1:
Datenmodul.Table1.Filter :='Kategorie = '+QuotedString('10%');                    


Clientseitige Filter per .Filter-Eigenschaft sind aber nicht optimal, besser wäre es einen TQuery anstatt eines TTable zu nehmen und dann ein "Filter" per SQL-Where-Clause zu machen.


raiguen - Di 30.05.06 15:45

Moin :)
user profile iconmkinzler hat folgendes geschrieben:
Das Problem mit den Hochkommas kann man z.B, auch so umgehen:

Delphi-Quelltext
1:
Datenmodul.Table1.Filter :='Kategorie = '+QuotedString('10%');                    


Prinzipiell richtig, wenn der Filterbegriff ein String ist. Allerdings bei TTable (unter Verwendung der BDE) ist das WildCardZeichen %nicht richtig und versucht den beschriebenen Fehler 'Unzlässige Operation' bzw 'Operation nicht anwendbar'. Wenn Clientseitig gefiltert werden soll (oder muss) dann muss der Filterausdruck so heißen:

Quelltext
1:
Datenmodul.Table1.Filter :='Kategorie = '+QuotedString('10*');