AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi TQuery filtern funktioniert nicht
Thema durchsuchen
Ansicht
Themen-Optionen

TQuery filtern funktioniert nicht

Ein Thema von little-x · begonnen am 18. Sep 2007 · letzter Beitrag vom 19. Sep 2007
Antwort Antwort
little-x

Registriert seit: 13. Apr 2007
Ort: Brandenburg
60 Beiträge
 
Delphi 6 Enterprise
 
#1

TQuery filtern funktioniert nicht

  Alt 18. Sep 2007, 15:15
Datenbank: Informix • Version: 9 • Zugriff über: Native Treiber
Hallo!

ich nutze eine TQuery, die, wenn ich ein Datumsfeld filtere (Eigenschaft Filter = ...), keinen Treffer bringt, obwohl der Datensatz nachweislich da ist. Es handelt sich um ein Datumsfeld.

Ich verwendet Informix. Der Feldtyp ist DATE, zum Arbeiten mit den Query-FieldValues in Delphi verwende ich den Typ TDateTime, womit ich nie Probleme hatte. Jetzt will ich ein Datumsfeld filtern. Nur krieg ichs nicht hin!

Folgende Varianten habe ich probiert und hab dabei folgendes beobachtet:

z.B.
Delphi-Quellcode:
procedure test;
   var dateTimeVar: TDateTime;
begin

   dateTimeVar = encodeDate(2001,1,1);
        qry.Filter:= 'datum = ''' + dateToStr(dateTimeVar) + '''';
        // der Filter lautet: >datum = '01.01.2001'<
        // kommt zwar kein Fehler, aber er findet auch keinen Datensatz.
end;

Weitere Variante:
Delphi-Quellcode:
procedure test;
   var dateTimeVar: TDateTime;
begin
   dateTimeVar = encodeDate(2001,1,1);
   qry.Filter:= 'datum = ' + floattostr(dateTimeVar);
        // der Filter lautet: >datum = 36892<
        // Fehlermeldung: >'36892' ist kein gültiges Datum.<
end;
Ja wie will TQuery den Filter denn nun serviert bekommen!?!

Vielleicht seh ich auch nur den Wald vor Bäumen nicht.

Viele Grüße.
manchmal machts mich mürbe
  Mit Zitat antworten Zitat
Benutzerbild von scrat1979
scrat1979

Registriert seit: 12. Jan 2007
Ort: Sulzbach a.d. Murr
1.028 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: TQuery filtern funktioniert nicht

  Alt 18. Sep 2007, 16:09
Hallo!!

Eventuell muß das Datum-Format ja xx-yy-zzzz lauten.

SCRaT
Michael Kübler
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#3

Re: TQuery filtern funktioniert nicht

  Alt 18. Sep 2007, 21:05
Hallo,

da du mit TQuery arbeitest ist es eventuell vorteilhafter, wenn du die Selektion über eine WHERE Klausel machst. In der Filter-Eigenschaft wird ein Datum-Literal in dem durch ShortDateFormat festgelegten Format angegeben, was du in deinem ersten Versuch richtig gemacht hast. Bist du sicher, dass das Feld "datum" den Typ "date" besitzt? Bei "datetime" müsstest du einen Intervalltest durchführen, damit du Treffer erhältst.

Delphi-Quellcode:
procedure test;
var
  dt: TDateTime;
  dtMin, dtSup: string;
begin
  dt := EncodeDate(2001, 1, 1);
  dtMin := QuotedStr(DateToStr(dt));
  dtSup := QuotedStr(DateToStr(dt + 1));
  qry.Close;
  // hier einer von mehreren möglichen Ansätzen
  qry.Filter := Format('datum >= %s and datum < %s', [dtMin, dtSup]);
  qry.Filtered := True;
  qry.Open;
end;
Falls das Feld doch vom Typ DATE sein sollte, dann erweitere mal das Testintervall, bis du Treffer erhältst. Nicht das du am Ende feststellst, dass du mit den falschen Daten getestet hast...

Grüße vom marabu
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: TQuery filtern funktioniert nicht

  Alt 19. Sep 2007, 13:18
Hallo,

und ausserdem könte Date auch eine Time-Eintrag mit enthalten.
Nimm einfach ein where mit ParamByName


Heiko
Heiko
  Mit Zitat antworten Zitat
little-x

Registriert seit: 13. Apr 2007
Ort: Brandenburg
60 Beiträge
 
Delphi 6 Enterprise
 
#5

Re: TQuery filtern funktioniert nicht

  Alt 19. Sep 2007, 13:20
Hallo,

danke für die antworten. Das Systemdatum (registry-Eintrag) war nicht entsprechend gesetzt.

Viele Grüße
manchmal machts mich mürbe
  Mit Zitat antworten Zitat
Antwort Antwort


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 00:31 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