AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi QuantumGrid Filter als SQL Filter weiterverwenden

QuantumGrid Filter als SQL Filter weiterverwenden

Ein Thema von Surrounder · begonnen am 9. Feb 2006 · letzter Beitrag vom 10. Feb 2006
Antwort Antwort
Benutzerbild von Surrounder
Surrounder

Registriert seit: 26. Sep 2003
Ort: Stuttgart
177 Beiträge
 
Delphi 2006 Professional
 
#1

QuantumGrid Filter als SQL Filter weiterverwenden

  Alt 9. Feb 2006, 13:31
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.

http://www.delphipraxis.net/internal...c3ee931e6148ef

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:

Add( SELECT * FROM Tabelle WHERE actdate = DATE ''2005-11-16'' '); 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.

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?
In C geschrieben und schön war zuletzt Franz Schuberts 9. Symphonie
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.350 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: QuantumGrid Filter als SQL Filter weiterverwenden

  Alt 9. Feb 2006, 17:37
Hallo,

View.DataController.Filter.DateTimeFormat := 'yyyy-mm-dd'; sollte dein Problem lösen.

Man kann auch noch bei:
view.DataController.Filter.OnFormatFilterTextValue
eingreifen.

Cu, Frank
Frank Reim
  Mit Zitat antworten Zitat
Benutzerbild von Surrounder
Surrounder

Registriert seit: 26. Sep 2003
Ort: Stuttgart
177 Beiträge
 
Delphi 2006 Professional
 
#3

Re: QuantumGrid Filter als SQL Filter weiterverwenden

  Alt 10. Feb 2006, 07:54
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?
In C geschrieben und schön war zuletzt Franz Schuberts 9. Symphonie
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.350 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: QuantumGrid Filter als SQL Filter weiterverwenden

  Alt 10. Feb 2006, 09:53
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
Frank Reim
  Mit Zitat antworten Zitat
Benutzerbild von Surrounder
Surrounder

Registriert seit: 26. Sep 2003
Ort: Stuttgart
177 Beiträge
 
Delphi 2006 Professional
 
#5

Re: QuantumGrid Filter als SQL Filter weiterverwenden

  Alt 10. Feb 2006, 09:58
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.
In C geschrieben und schön war zuletzt Franz Schuberts 9. Symphonie
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#6

Re: QuantumGrid Filter als SQL Filter weiterverwenden

  Alt 10. Feb 2006, 10:54
Zitat von Surrounder:
... Leider schreibt er dann aber 'DATE 2006-02-08' anstelle von DATE '2006-02-08'
Delphi-Quellcode:
Function SQLFlashFilerDateFilterTranslator (Const cxFilterStr : String) : String;
Begin
  Result := StrReplace (cxFilterStr,'''DATE ','DATE ''')
End;
Ersetzt einfach >'DATE foo'< nach >DATE 'foo<... Vielleicht stimmt der String nicht, aber egal. Und falls Du StrReplace nicht hast, nimm dies:
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;
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von Surrounder
Surrounder

Registriert seit: 26. Sep 2003
Ort: Stuttgart
177 Beiträge
 
Delphi 2006 Professional
 
#7

Re: QuantumGrid Filter als SQL Filter weiterverwenden

  Alt 10. Feb 2006, 11:34
@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:
   if StrStrCount( s, 'DATE' ) > 0 then begin
      StrReplace( s, '''DATE ', 'DATE ''', [rfReplaceAll] );
   end;
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.

Edit:

Ach ja ich nutze ReplaceAll weil ich wenn ich greater und less verwende dann 'DATE' mehrfach im Statement habe
In C geschrieben und schön war zuletzt Franz Schuberts 9. Symphonie
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#8

Re: QuantumGrid Filter als SQL Filter weiterverwenden

  Alt 10. Feb 2006, 12:18
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
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:01 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