![]() |
QuantumGrid Filter als SQL Filter weiterverwenden
Eine Frage an die Quantum Grid Spezialisten, ich nutze das cxGird um meine Tabelle dar zu stellen, und hab eine Master Detail Beziehung zwischen den Tabellen.
Jetzt hatte ich das Problem dass ich alles Filtern konnte, und den Filter auch auslesen, außer dem Datum. ![]() Ich weiss jetzt wie ich mit meiner FlashFiler Datenbank nach dem Datum mittels Query Filtern kann, nur hab ich das Problem dass ich vom cdGrid ein völlig anderes Format zurück bekomme. Die SQL Anweisun muss so aussehen:
SQL-Code:
vom cxGird bekomme ich aber " actdate = '16.11.2005' " zurück. Hat einer von Euch eine Idee ob ich das am cxGrid irgendwie beeinflussen kann? Mit cxGrid1DBTableView1.DataController.Filter.FilterTe xt kann ich den Filter des Grids ja auslesen.
Add( SELECT * FROM Tabelle WHERE actdate = DATE ''2005-11-16'' ');
Bzw. wenn das nicht geht, wenn ich jetzt einen komplizierters Filter habe, also z.B. nach dem Datum zwischen 14.11.2005 und dem 16.11.2005 Filtern will, dann tu ich mir schwer den Filtertext des Grids zu zerlegen, kann man denn den Filter noch auf eine andere Art auslesen, also z.B. zerlegt in seine Parameter? |
Re: QuantumGrid Filter als SQL Filter weiterverwenden
Hallo,
Delphi-Quellcode:
sollte dein Problem lösen.
View.DataController.Filter.DateTimeFormat := 'yyyy-mm-dd';
Man kann auch noch bei: view.DataController.Filter.OnFormatFilterTextValue eingreifen. Cu, Frank |
Re: QuantumGrid Filter als SQL Filter weiterverwenden
hmm, danke das mit dem Format des Datums klappt, nur wie ich das "DATE" Literal davor bekommen könnte ist mir noch unklar. Das Event OnFormatFilterTextValue kommt ja jedesmal wenn ich den Filtertext auslesen, nur darin steht ja auch nur der Wert des Filters nicht aber der Spaltenname um das SQL Statement aufzubauen?
|
Re: QuantumGrid Filter als SQL Filter weiterverwenden
Hi,
das mit dem DATE davor hatte ich glatt übersehen. Hier würde ich aber mal beim SQL - Syntax von FlashFiler weitersuchen, denn das sieht mir nach einer Typumwandlung aus. Es muss auch ohne den DATE gehen. Cu, Frank |
Re: QuantumGrid Filter als SQL Filter weiterverwenden
Ich hab herausgefunden dass ich im Format des Datums ( 'DATE' yyyy-mm-dd ) auch Werte angeben kann und wenn ich die in ' setzte dann schreibt er die mit in den Filtertext. Leider schreibt er dann aber 'DATE 2006-02-08' anstelle von DATE '2006-02-08'
Jetzt versuche ich gerade mal mit StrScan etc. die Stelle von DATE im String zu finden und dann den Quote zu verschrieben. Laut Doku FlashFiler gibt es keine Andere Möglichkeit für ein SQL Statement, und wenn dann ist die Frage ob ich das mit dem cxGird hin bekomme dass das mir das dann so wieder liefert. Falls dir noch was einfällt schonmal danke. |
Re: QuantumGrid Filter als SQL Filter weiterverwenden
Zitat:
Delphi-Quellcode:
Ersetzt einfach >'DATE foo'< nach >DATE 'foo<... Vielleicht stimmt der String nicht, aber egal. Und falls Du StrReplace nicht hast, nimm dies:
Function SQLFlashFilerDateFilterTranslator (Const cxFilterStr : String) : String;
Begin Result := StrReplace (cxFilterStr,'''DATE ','DATE ''') End;
Delphi-Quellcode:
Function StrReplace (Src,s1,s2 : String) : String;
Var p : Integer; Begin if (pos (s1,src)=0) Or (s1=s2) then result := src Else Begin Result := ''; p := 1; while p<=length (src) do if copy (src,p,length (s1)) = s1 then begin result := result + s2; p := p + length (s1) End else Begin result := result + copy (src,p,1); inc (p); End End; End; |
Re: QuantumGrid Filter als SQL Filter weiterverwenden
@alzaimar
danke, genau das war auch meine Idee, und ich hab es genau mit den JclStrings gemacht, ich schau zuerst ob ich ein 'DATE' habe und wenn dann ersetze ich alle
Delphi-Quellcode:
der Support von DevExpress hat mir auch noch geschrieben und gemeint dass es mit dem Event Filter.OnBeforeChange auch gehen würde, denn dann kann man wohl die einzelnen Werte beeinflussen. Das hab ich jetzt aber nicht mehr getestet, denn meine Lösung tut auch.
if StrStrCount( s, 'DATE' ) > 0 then begin
StrReplace( s, '''DATE ', 'DATE ''', [rfReplaceAll] ); end; Edit: Ach ja ich nutze ReplaceAll weil ich wenn ich greater und less verwende dann 'DATE' mehrfach im Statement habe |
Re: QuantumGrid Filter als SQL Filter weiterverwenden
Ich hab mir mal das strReplace selbst geschrieben (vor ca. 20 Jahren oder so noch zu TP 2.0 Zeiten).
Der Weg über die Events ist natürlich der 'offizielle' Weg, aber was sollst, solange es funzen tut ;-) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:19 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz