Delphi-PRAXiS
Seite 1 von 5  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Zeit/Datumswert mit einer Tabelle vergleichen (https://www.delphipraxis.net/82045-zeit-datumswert-mit-einer-tabelle-vergleichen.html)

SilverMoonGirl 7. Dez 2006 09:58

Datenbank: Paradox • Version: 9 • Zugriff über: Query

Zeit/Datumswert mit einer Tabelle vergleichen
 
Aloha :hi:

Ich hoffe ich kann euch mein Problem halbwegs verständlich machen...

Ich habe eine Tabelle mit einer Spalte _BackUpTime vom Typ DateTime, deren Inhalt so aussieht
"15:11:45, 17:11:2006"

Dies habe ich jeweils in Zeit und Datum getrennt und zur weiteren Bearbeitung als String umgewandelt.
Jetzt habe ich beide wieder zusammengefügt und wollte sie wieder mit der Datenbank zu vergleichen.

Delphi-Quellcode:
datumzeit:= DBGZeit.SelectedField.AsString + ', '+ DBGdatum.SelectedField.AsString ;
  with DBmodul.QcopyTable do
  begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT * FROM Aufdate WHERE AuftragNr = '+DBGrid1.SelectedField.AsString + ' AND
    ("_BackUpTime" = :datzeit)');
    ParamCheck:=true;
    ParamByName('datzeit').AsDateTime:= StrToDateTime(datumzeit);
    Open;
  end;
Wenn ich datumzeit in einen Datums/Zeit typ umwandle bekomme ich eine Fehlermeldung, dass es sich um ein ungültiges Datum handelt. Lass ich datumzeit als String, bekomme ich zwar keine Fehlermeldung aber auch keine Ergebnisse :gruebel:

Ich steh grad ein bisschen auf dem Schlauch ...

shmia 7. Dez 2006 10:33

Re: Zeit/Datumswert mit einer Tabelle vergleichen
 
Du brauchst auf jeden Fall ein Datumsformat, dass StrToDateTime verarbeiten kann.
Delphi-Quellcode:
// zuerst das Datum dann die Zeit getrennt durch ein Leerzeichen
datumzeit:= DBGdatum.SelectedField.AsString + ' '+ DBGZeit.SelectedField.AsString;

raiguen 7. Dez 2006 10:40

Re: Zeit/Datumswert mit einer Tabelle vergleichen
 
Zitat:

Zitat von SilverMoonGirl
...mein Problem halbwegs verständlich machen...

Ich habe eine Tabelle mit einer Spalte _BackUpTime vom Typ DateTime, deren Inhalt so aussieht
"15:11:45, 17:11:2006"

:roll: Ich kann mir nicht vorstellen, dass ein DateTime-Feld in einer Tabelle so aussieht, aslo Datum und Zeit durch ein Komma getrennt... Sicher, dass der FeldTyp DateTime ist und nicht zufälligerweise ein String?? (nur mal so dumm gefragt...)

Zitat:

Zitat von SilverMoonGirl
Wenn ich datumzeit in einen Datums/Zeit typ umwandle bekomme ich eine Fehlermeldung, dass es sich um ein ungültiges Datum handelt...

Die Fehlermedlung ist ja auch richtig weil das Komma zur Datum-Zeit-Abgrenzung da auch nicht reingehört :!:

mkinzler 7. Dez 2006 11:41

Re: Zeit/Datumswert mit einer Tabelle vergleichen
 
Wie sehen die Metadaten der Tabelle aus?
BTW. Ein Vergleich von Datumswerten als String ist keine gute Idee.

SilverMoonGirl 7. Dez 2006 12:31

Re: Zeit/Datumswert mit einer Tabelle vergleichen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von raiguen
:roll: Ich kann mir nicht vorstellen, dass ein DateTime-Feld in einer Tabelle so aussieht, aslo Datum und Zeit durch ein Komma getrennt... Sicher, dass der FeldTyp DateTime ist und nicht zufälligerweise ein String?? (nur mal so dumm gefragt...)

Ist aber so und ich bin mir sicher :wink:

Union 7. Dez 2006 12:38

Re: Zeit/Datumswert mit einer Tabelle vergleichen
 
Wie sieht denn die Variable datumzeit aus, nachdem Du sie zusammengesetzt hast?

SilverMoonGirl 7. Dez 2006 12:44

Re: Zeit/Datumswert mit einer Tabelle vergleichen
 
Genauso wie der Wert in der Tabelle, also um beim Beispiel von oben zu bleiben, sieht die Variable auch so aus "15:11:45, 17:11:2006"

Union 7. Dez 2006 13:08

Re: Zeit/Datumswert mit einer Tabelle vergleichen
 
Solange TimeSeparator und DateSeparator gleich sind, wirst Du mit den automatischen Umwandlungsfunktionen (StrTo...) nicht weit kommen. Du müsstest Dir das Datum aus dem String selber zusammenbasteln.

SilverMoonGirl 7. Dez 2006 13:39

Re: Zeit/Datumswert mit einer Tabelle vergleichen
 
und was mach ich dann mit dem Komma ... :gruebel:

Union 7. Dez 2006 13:53

Re: Zeit/Datumswert mit einer Tabelle vergleichen
 
Also auf die harte Tour könnte man es so machen:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
   datumzeit : string;
   hh, nn, ss, yy, mm, dd : Word;
begin
   //                     1
   //            12345678901234567890
   datumzeit := '15:11:45, 17:11:2006';

   hh := strtoint(copy(datumzeit, 1, 2));
   nn := strtoint(copy(datumzeit, 4, 2));
   ss := strtoint(copy(datumzeit, 7, 2));

   dd := strtoint(copy(datumzeit,11, 2));
   mm := strtoint(copy(datumzeit,14, 2));
   yy := strtoint(copy(datumzeit,17, 4));

   // Das Ergebnis des EncodeDateTime dann in den SQL-Parameter schreiben
   ShowMessage(DateTimeToStr(EncodeDateTime(yy, mm, dd, hh, nn, ss, 0)));
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:03 Uhr.
Seite 1 von 5  1 23     Letzte »    

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