Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi DevExpress: Filter mißbrauchen (https://www.delphipraxis.net/195155-devexpress-filter-missbrauchen.html)

haentschman 7. Feb 2018 07:20

DevExpress: Filter mißbrauchen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Moin...:P

Mir geht es erstmal darum, ob mein Vorhaben realisierbar ist. 8-)

Gegeben:

cxGrid mit Filterleiste (Bild). Die dahinterliegende Datenmenge wird über einen zusätzlichen Dialog eingeschränkt. (Zeitraum)
Es kommt vor das der User aber Daten sehen möchte die nicht in der Einschränkung liegen. Da bedeutet, das der User wissen müßte, in welchem Zeitraum die Daten liegen. :roll:

Vorstellung:

Ich hätte gern die Auswahl wie gehabt eingeschränkt. Aber wenn ein Filterkriterium eingetragen wird, wird ein komplettes SQL ausgeführt statt nur die Datenmenge visuell eingeschänkt. Wird das Kriterium wieder entfernt, wird die Datemenge auf die Ausgangseinschränkung gesetzt.

Frage:
Geht das über die Filterleiste (Event mit dem Filtertext) oder muß ich mir eine eigene Lösung ausdenken?

Danke...:wink:

Nersgatt 7. Feb 2018 07:42

AW: DevExpress: Filter mißbrauchen
 
Da gibt es ja mehrere Events, die vielversprechend klingen, um dort einzuhaken.
Z.B. DataController.OnFilterRecord oder DataController.Filter.OnBeforeChange, DataController.Filter.OnChanged.

uligerhardt 7. Feb 2018 07:47

AW: DevExpress: Filter mißbrauchen
 
Zitat:

Zitat von haentschman (Beitrag 1393264)
Vorstellung:
Ich hätte gern die Auswahl wie gehabt eingeschränkt. Aber wenn ein Filterkriterium eingetragen wird, wird ein komplettes SQL ausgeführt statt nur die Datenmenge visuell eingeschänkt. Wird das Kriterium wieder entfernt, wird die Datemenge auf die Ausgangseinschränkung gesetzt.

Heißt das nicht, dass du immer die dahinterliegenden Daten filtern willst - entweder nur über Voreinschränkung oder (auch) über Kriterium aus der Filterleiste? :?:

haentschman 7. Feb 2018 08:00

AW: DevExpress: Filter mißbrauchen
 
Beispiel:

Der Vorgabezeitraum sind 3 Monate. Diese Daten werden im Grid angezeigt. (z.B. 50 Datensätze) Jetzt möchte ich eine Auftragsnummer sehen die 6 Monate zurück liegt. Die ist in der Originaldatenmenge nicht drin. Jetzt möchte ich über den "Filtertext" und die Spalte
ein SQL erzeugen welches NUR die Datensätze mit dem "Filtertext" unabhängig vom Zeitraum liefert. (jetzt habe ich im Dataset z.B. einen Auftrag)

Die Frage ist die, ob ich den "Filtertext" für das SQL mißbrauchen kann und wie ich den geliefert kriege. :wink:

Zitat:

DataController
...gute Idee.

uligerhardt 7. Feb 2018 08:03

AW: DevExpress: Filter mißbrauchen
 
Zitat:

Zitat von haentschman (Beitrag 1393268)
Die Frage ist die, ob ich den "Filtertext" für das SQL mißbrauchen kann un die ich den geliefert kriege. :wink:

Ich kenn mich mit den DB-Controls nicht aus, aber kann man die nicht so konfigurieren, dass sie die Filterung selbständig per SQL durchführen? Server mode oder so?

haentschman 7. Feb 2018 09:07

AW: DevExpress: Filter mißbrauchen
 
Zitat:

Ich kenn mich mit den DB-Controls nicht aus, aber kann man die nicht so konfigurieren, dass sie die Filterung selbständig per SQL durchführen?
...in diesem Falle nicht. Die Filterung im Grid erfolgt nur lokal.:?

himitsu 7. Feb 2018 09:35

AW: DevExpress: Filter mißbrauchen
 
Also du willst, dass nur die angezeigten Records im Grid gefiltert haben, aber auf die Vorschlagsliste der Filter-Funktion soll der Filter nicht angewendet werden.

Müsstest mal nachsehn wie/wo diese Daten her kommen und ob dort der Filter umgangen werden kann.
Nicht aus den bereits gefilterten Daten sondern aus den ungefilterten Rohdaten.
Ich denke die gehen auf die "Cache" im DataController, aber ich vermute der DataController hat keine Kopie der kompletten Daten, sondern nur die Gefilterte. Also müsste diese Vorschlagsliste "langsamer" aus der DataSource/DataSet kommen.

Oder direkt die von DevExpress fragen.

haentschman 7. Feb 2018 13:26

AW: DevExpress: Filter mißbrauchen
 
Zitat:

Müsstest mal nachsehn wie/wo diese Daten her kommen und ob dort der Filter umgangen werden kann
Das nützt mir aber nichts wenn der "Auftrag" in der zugrunde liegenden Datenmenge (3 Monate) nicht auftaucht. Ich muß im Falle einer "Filterung" immer ein komplettes SQl absetzen, weil ich die "Suche" in der DB über den gesamten Zeitraum (alle Datenssätze) möchte!

Ich möchte eigentlich nur das Eingabefeld des Filters "mißbrauchen". 8-)

EarlyBird 7. Feb 2018 14:05

AW: DevExpress: Filter mißbrauchen
 
Zitat:

Zitat von haentschman (Beitrag 1393268)
Die Frage ist die, ob ich den "Filtertext" für das SQL mißbrauchen kann und wie ich den geliefert kriege. :wink:

Den FilterText bekommst Du über cxGrid1DBTableView1.DataController.Filter.FilterTe xt

Der Filtertext muss eventuell etwas angepasst werden z.B. Boolean Werte.

Das funktioniert bei mir sehr gut.

haentschman 7. Feb 2018 15:01

AW: DevExpress: Filter mißbrauchen
 
Danke erst mal...8-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:53 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