AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQL Datumsabfrage wird nicht angezeigt

SQL Datumsabfrage wird nicht angezeigt

Ein Thema von digati · begonnen am 4. Okt 2008 · letzter Beitrag vom 5. Okt 2008
Antwort Antwort
Seite 1 von 2  1 2   
digati

Registriert seit: 4. Okt 2008
8 Beiträge
 
#1

SQL Datumsabfrage wird nicht angezeigt

  Alt 4. Okt 2008, 14:02
Datenbank: Access • Version: 2003 • Zugriff über: ADO
Hallo,

wie kann ich über eine Query einen Zeitraum abfragen in dem ich das Datum definiere.
Mit folgendem Code werden keine Datensätze angezeigt.

SQL_Text := 'SELECT * FROM Tabelle1 where Datum between :''30.05.2008'' and :''30.06.2008''';

Was mache ich hier falsch?


Gruß
digati
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: SQL Datumsabfrage wird nicht angezeigt

  Alt 4. Okt 2008, 14:03
Entweder Werte oder Parameter
Markus Kinzler
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

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

Re: SQL Datumsabfrage wird nicht angezeigt

  Alt 4. Okt 2008, 15:01
Was mkinzler in seiner minimalistischen Art zum Ausdruck bringen möchte, ist das widersprüchliche Vorhandensein der Doppelpunkte. Er würde auch, wenn ich ihn hier richtig einschätze, zu der Verwendung von Parametern raten, damit die DB-Komponente die korrekte Formatierung vornimmt.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: SQL Datumsabfrage wird nicht angezeigt

  Alt 4. Okt 2008, 15:08
Also entweder:
SQL_Text := 'SELECT * FROM Tabelle1 where Datum between ''30.05.2008'' and ''30.06.2008'''; oder
Delphi-Quellcode:
SQL_Text := 'SELECT * FROM Tabelle1 where Datum between :datum1 and :datum2';
...
ParamByName('datum1').asString := '30.05.2008';
ParamByName('datum2').asString := '30.06.2008';
ExecSQL;
Markus Kinzler
  Mit Zitat antworten Zitat
digati

Registriert seit: 4. Okt 2008
8 Beiträge
 
#5

Re: SQL Datumsabfrage wird nicht angezeigt

  Alt 4. Okt 2008, 22:45
bei dem Vorschlag mit Werten, werden fast alle Datensätze angezeigt und nicht der ausgewählte Bereich.
Der Felddatentyp in Tabelle1 steht auf Text.
Wenn ich den Felddatentyp auf Datum/Uhrzeit ändere dann bekomme ich die Fehlermeldung 'Datentypen in Kriteriumausdruck
unverträglich'.

Bei dem Vorschlag mit Parametern bekomme ich die Fehlermeldung undefinierter Bezeichner: 'ParamByName'
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: SQL Datumsabfrage wird nicht angezeigt

  Alt 4. Okt 2008, 22:53
Zitat von digati:
bei dem Vorschlag mit Werten, werden fast alle Datensätze angezeigt und nicht der ausgewählte Bereich.
Der Felddatentyp in Tabelle1 steht auf Text.
Liegt an der Sortierung von Strings
Zitat:
Wenn ich den Felddatentyp auf Datum/Uhrzeit ändere dann bekomme ich die Fehlermeldung 'Datentypen in Kriteriumausdruck
unverträglich'.
Welches DBMS
Zitat:
Bei dem Vorschlag mit Parametern bekomme ich die Fehlermeldung undefinierter Bezeichner: 'ParamByName'
Ist eine Methode des DataSets
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#7

Re: SQL Datumsabfrage wird nicht angezeigt

  Alt 4. Okt 2008, 23:16
Kleine Korrektur für ADO-Queries:
Delphi-Quellcode:
// manchmal "zicken" die Abfragen mit between, dann muss man ausweichen auf
// WHERE Datum >= :datum1 AND Datum <=:datum2
//
ADOQuery1.SQL.Text := 'SELECT * FROM Tabelle1 where Datum between :datum1 and :datum2';
ADOQuery1.Parameters.ParamByName('datum1').asString := '30.05.2008';
ADOQuery1.Parameters.ParamByName('datum2').asString := '30.06.2008';
ADOQuery1.Open;
Um die Parameter zu befüllen eignen sich die TDateTimePicker recht gut:
Delphi-Quellcode:
...
ADOQuery1.Parameters.ParamByName('datum1').AsDateTime := DateTimePickerVon.Date;
...
  Mit Zitat antworten Zitat
hoika

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

Re: SQL Datumsabfrage wird nicht angezeigt

  Alt 5. Okt 2008, 13:16
Hallo,

1. Welcher Datentyp wird verwendet (Date, DateTime, TimeStamp) ?
Ist auch die Uhrzeit dabie,, sollte besser >= <= benutzt werden.

2. Vorsicht beim DateTimePicker. .Date enthält oft Datum und Uhrzeit,
also Trunc() benutzen.


Heiko
Heiko
  Mit Zitat antworten Zitat
digati

Registriert seit: 4. Okt 2008
8 Beiträge
 
#9

Re: SQL Datumsabfrage wird nicht angezeigt

  Alt 5. Okt 2008, 17:17
Nach der Korrektur der ADO-Queries bekomme ich die Fehlermeldung Undefinierter Bezeichner: 'asString'

oder
ADOQuery1.Parameters.ParamByName('datum1').AsDateTime := DateTimePickerVon.Date; Undefinierter Bezeichner: 'AsDateTime'
  Mit Zitat antworten Zitat
hoika

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

Re: SQL Datumsabfrage wird nicht angezeigt

  Alt 5. Okt 2008, 17:53
Hallo,

dann nimm halt .Value


Heiko
Heiko
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

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 17:29 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