Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   DBGrid Filter (https://www.delphipraxis.net/164487-dbgrid-filter.html)

t0mmy 15. Nov 2011 13:12

DBGrid Filter
 
Hallo!

Also ich lese aus einer Datenbank bestimmte Werte aus und schreibe diese dann in ein DBGrid.
Jetzt würd ich gern wissn wie ich gewisse sachen filtern kann z.B.: wenn in der zweiten spalte in einer zeile "keine Ausgabe" drinnen steht dann möcht ich gern diese zeile ganz löschen oder nicht anzeigen. (in der DBGrid)

Sir Rufo 15. Nov 2011 13:58

AW: DBGrid Filter
 
Zitat:

Zitat von t0mmy (Beitrag 1136292)
Also ich lese aus einer Datenbank bestimmte Werte aus und schreibe diese dann in ein DBGrid

Das kann ich nicht so ganz glauben ... kann es nicht vielleicht eher sein, dass du dem DBGrid ein DataSource zuweist?
Und dem DataSource hast du vorher noch ein DataSet zugewiesen?

Das DBGrid zeigt nun alle Zeilen vom DataSet an. Beim DataSet hast du die Möglichkeit einen Filter zu setzen, und das hat wiederum direkte Auswirkungen auf das DBGrid. ;)

shmia 15. Nov 2011 15:26

AW: DBGrid Filter
 
Grundsätzlich gibt es drei verschiedene Möglichkeiten, um Daten (die in einem DBGrid angezeigt werden) zu filtern:

1.) über SQL
Vorteil: schnell, wenig Resourcenverbrauch
Nachteil: nur mässig flexibel, aufwändig wenn Filter zur Laufzeit generiert werden soll
2.) über Property Filter
Vorteil: einfach zu verwenden, Filter dynamisch zur Laufzeit änderbar
Nachteil: je nach Datenmenge teilweise sehr schlechte Performance
3.) über Event OnFilterRecord
Vorteil: sehr komplexe Filterbedinungen sind möglich
Nachteil: wie 2.)

Alle diese 3 Filtertechniken setzen am TDataset bzw. TQuery an.
Ein DBGrid kann selbst nicht filtern, sondern es zeigt nur das an, was sich in der Datenmenge befindet.

Palme 6. Aug 2013 20:42

AW: DBGrid Filter
 
Hallo zusammen,

ich habe genau das gleiche problem, wie kann ich meine Datenbank filtern?, ich habe eine tabelle über datasource und dbf erstellt. Nun möchte ich beispielsweise, dass alle Namen in der Tabelle alphabetisch sortiert werden, wie geht das ?

danke schon mal im Vorraus

haentschman 6. Aug 2013 21:28

AW: DBGrid Filter
 
Hallo...
bitte benutze einfach mal die Suchfunktion oder die Delphi-Referenz. :zwinker:
1 Minute Sucharbeit: http://docwiki.embarcadero.com/Libra...DataSet.Filter

Nachtrag:
..ich sollte mal zu Ende lesen. Filtern hat nix mit Sortieren zu tun. Beschäftige dich mal mit TQuery und SQL. Dazu findes du reichlich Seiten. http://www.google.de/#bav=on.2,or.r_...q=sql+tutorial

Palme 6. Aug 2013 21:41

AW: DBGrid Filter
 
danke :)

haentschman 6. Aug 2013 21:50

AW: DBGrid Filter
 
Alternativ, wenn du eine Tabelle benutzt: http://docwiki.embarcadero.com/Libra...able.IndexName
...ist aber, sagen wir mal veraltet. :zwinker: Der entsprechende Index muß in der Tabelle angelegt sein. Besser du beschäftigst dich gleich mit SQl. Da hast du beim Umstieg von der BDE weg weniger Schwierigkeiten mit anderen DBMS. :thumb:

Perlsau 7. Aug 2013 00:33

AW: DBGrid Filter
 
Zitat:

Zitat von Palme (Beitrag 1223761)
wie kann ich meine Datenbank filtern?, ich habe eine tabelle über datasource und dbf erstellt. Nun möchte ich beispielsweise, dass alle Namen in der Tabelle alphabetisch sortiert werden, wie geht das ?

"Sortierte Ausgabe" und "Filter setzen" sind zwei völlig verschiedene Stiefel.

Ein Filter benennt Werte von einer oder mehreren Spalten, die gegeben sein müssen, damit der Datensatz zur Anzeige ausgewählt wird. Die Filterbedingung kann bei den meisten Datasets im Property FILTER gesetzt werden, wobei zuvor das Property FILTERED zu deaktivieren und anschließend wieder zu aktivieren ist. Alternativ – wenn du ein Query mit entpsrechendem Select-Befehl einsetzt – kannst du auch über die Where-Bedingung filtern:
Code:
select * from TABELLE where NACHNAME = 'Meier';
listet dir alle Datensätze auf, die in der Spalte NACHNAME die Zeichenfolge 'Meier' stehen haben. Wildcards sind ebenfalls möglich:
Code:
select * from TABELLE where NACHNAME like 'M%';
zeigt alle Datensätze, deren Zeichenfolge in der Spalte NACHNAME mit einem großen M beginnen.

Die Sortierung erfolgt in dem meisten Datasets mit dem Property IndexFieldNames oder alternativ, wenn du ein Query einsetzt, auch bereits im Select-Befehl:
Code:
select * from TABELLE order by NACHNAME;
Für weitergehende Informationen suchst du dir bitte ein passendes Tutorial zum Erlernen von SQL (Structured Query Language), um wenigstens die Grundlagen der Datenbankabfrage zu verstehen.

Furtbichler 7. Aug 2013 06:41

AW: DBGrid Filter
 
@Perlsau: :thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:35 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz