AGB  ·  Datenschutz  ·  Impressum  







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

Datumsübergabe funktioniert nicht einwandfrei

Ein Thema von mewlos26 · begonnen am 13. Nov 2005 · letzter Beitrag vom 13. Nov 2005
Antwort Antwort
mewlos26

Registriert seit: 17. Okt 2005
13 Beiträge
 
Delphi 7 Professional
 
#1

Datumsübergabe funktioniert nicht einwandfrei

  Alt 13. Nov 2005, 17:08
Datenbank: Access • Version: 2003 • Zugriff über: ADO
Hallo,

ich habe Probleme mit nachfolgender Abfrage:

Delphi-Quellcode:
  
  
  ADOQuery_Berichte.Close;
  ADOQuery_Berichte.SQL.Clear;
   with ADOQuery_Berichte do
    begin
      SQL.Text:=
  'SELECT buchung.anreise, buchung.abreise, Buchung.gid, adressen.gid,'+#13#10+
  'FROM (buchung LEFT JOIN adressen ON Buchung.gid=adressen.gid)'+#13#10+
  'WHERE (buchung.anreise >= :datevon1) AND (buchung.abreise <= :datebis1)'+#13#10+
  'ORDER BY buchung.anreise';
    with Parameters do
    begin
      ParamByName('datevon1').DataType := ftDate;
      ParamByName('datevon1').Value := Int(DateTimePicker21.Date);
      ParamByName('datebis1').DataType := ftDate;
      ParamByName('datebis1').Value := Int(DateTimePicker22.Date);
      ParamValues['objekt1']:=oid_zusatz;
      ParamValues['wohnung1']:=wid_zusatz;
    end;
      //ExecSQL;
      ADOQuery_Berichte.Open;
Wenn ich hier einen Zeitraum im DateTimePicker vom 01.01.2005 bis 31.12.2005 auswähle, liefert mir die Select Anweisung auch die Datensätze aus 2006 schon mit, was falsch ist. Ich verzweifele so langsam. Wer kann mir helfen? Die Datumsformatierung müsste doch so stimmen, oder?

DateTimePicker21 und 22 sind bei Format mit dd.mm.yyyy gesetzt.
  Mit Zitat antworten Zitat
RHerberg

Registriert seit: 24. Okt 2005
Ort: Hagen
18 Beiträge
 
#2

Re: Datumsübergabe funktioniert nicht einwandfrei

  Alt 13. Nov 2005, 17:13
Hi,

schau dir dies hier mal an:

 StrToDateTime(FormatDateTime('dd.mm.yyyy ', dtpende.Date) + FormatDateTime('hh:nn:ss', StrToTime(varendzeit)))
farmatdatetime ist Bestandteil der Unit "DateUtils". Da ist viel nützliches für Datum und Uhrzeit drin!

Gruß
Roland
Wenn Computer funktionieren würden, wären noch mehr Menschen arbeitslos
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

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

Re: Datumsübergabe funktioniert nicht einwandfrei

  Alt 13. Nov 2005, 17:15
Das wird Dein Problem vermutlich nicht lösen, aber ich hab immer Probleme mit reinen Datums- (ftDate) bzw. Zeitangaben (ftTime) gehabt. Ich verwende nur ftDateTime und setze den Zeitraum auf (z.B.) '1.1.2005 - 31.12.2005 23:59:59'.

Desweiteren solltest Du versuchen, mit "between" zu arbeiten, das ist i.A. schneller. Also "DateField between atum1 and atum2".
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
mewlos26

Registriert seit: 17. Okt 2005
13 Beiträge
 
Delphi 7 Professional
 
#4

Re: Datumsübergabe funktioniert nicht einwandfrei

  Alt 13. Nov 2005, 18:07
Kann mir mal jemand schreiben wie ich das komplett abändern soll, damit es richtig funktioniert?
  Mit Zitat antworten Zitat
marabu

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

Re: Datumsübergabe funktioniert nicht einwandfrei

  Alt 13. Nov 2005, 18:47
Hallo.

Wenn dein Statement sich doch nicht ändert, dann solltest du es der SQL-Eigenschaft nicht jedesmal neu zuweisen. Wenn du dein Statement der Text-Eigenschaft zuweist, dann ist SQL.Clear überflüssig. Das Format deines DateTimePickers spielt bei deiner Vorgehensweise keine Rolle. Der BETWEEN Operator bringt dir nichts, wenn du Überdeckungsintervalle durchsuchst (hallo alzaimar). Die Klammerung deiner FROM-Klausel finde ich originell - gut, dass der SQL Parser Spaß versteht. Und außerdem hast du uns nicht das echte Statement gezeigt.

Delphi-Quellcode:
uses
  DateUtils;

const
  SEL
    = 'select b.gid, b.anreise, b.abreise from buchung b '
    + 'left join adressen a on b.gid = a.gid '
    + 'where b.anreise >= :dateFrom and b.abreise <= :dateTo '
    + 'order by b.anreise'
    ;

begin
  with ADOQuery_Berichte do
  begin
    Close;
    with Parameters do
    begin
      ParamValues['dateFrom'] := Trunc(DateTimePicker21.Date);
      ParamValues['dateTo'] := Trunc(DateTimePicker22.Date) + 1 - OneSecond;
      ...
    end;
    Open:
  end;
end;
Grüße vom marabu
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

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

Re: Datumsübergabe funktioniert nicht einwandfrei

  Alt 13. Nov 2005, 19:59
Hi marabu! Man wird alt ...
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#7

Re: Datumsübergabe funktioniert nicht einwandfrei

  Alt 13. Nov 2005, 20:06
Zitat von alzaimar:
Hi marabu! Man wird alt ...
Doch nicht...
"a between b and c" ist das gleich wie "b <= a and a <= c"
Oder ich werde alt....
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

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

Re: Datumsübergabe funktioniert nicht einwandfrei

  Alt 13. Nov 2005, 20:20
Hier ist es aber a>=b and c<=d (a=Anreise, c=Abreise)

Oh man, das geht ja immer früher los, mit der Senilität ?
Beruhigend, das es vielleicht nur an der fortgeschrittenen Stunde liegt, oder dem Bier ?
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#9

Re: Datumsübergabe funktioniert nicht einwandfrei

  Alt 13. Nov 2005, 20:50
Zitat von alzaimar:
Hier ist es aber a>=b and c<=d (a=Anreise, c=Abreise)
Oh man, das geht ja immer früher los, mit der Senilität ?
Beruhigend, das es vielleicht nur an der fortgeschrittenen Stunde liegt, oder dem Bier ?
Hih, kein Bier. Einfach nur allgemeine Zerstreutheit. An der Zeit kann es jetzt am späten Nachmittaag nicht liegen. (Nicht auf die Sonne achten, die geht .. nach dem Mond )
Schönen Sonntagabend noch und sorry für meinen neck-mounted OffTopic Bullshit generator...
  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 19:05 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