Delphi-PRAXiS
Seite 3 von 5     123 45      

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 11. Dez 2006 15:09

Re: Zeit/Datumswert mit einer Tabelle vergleichen
 
Hallo,
die beiden Sachen habe ich geändert, und der Compiler meckert beim "Open". Also wird was in der Abfrage nicht stimmen :gruebel:

marabu 11. Dez 2006 15:13

Re: Zeit/Datumswert mit einer Tabelle vergleichen
 
Wenn du den Fehler nicht selbst findest musst du mal das DDL Statement für die Tabelle zeigen.

hoika 11. Dez 2006 15:18

Re: Zeit/Datumswert mit einer Tabelle vergleichen
 
Hallo,

Dein Feld dattimne ist vom Typ TimeStamp fasst vielleicht nur die beiden Werte zusammen.
Warum machst du das nicht auch so ?

Ich habe mal auf die Schnelle eine Tabelle angelegt.

SQL-Code:
create table test(id integer, dattime timestamp, primary key(id))
insert into test(dattime) values('1.12.2006 12:00:00')
oder Delphi per TTable (ihhh ;))
Delphi-Quellcode:
var
  tdtDate,
  tdtTime : TDateTime;

FieldByName('dattime').AsDateTime:= tdtDate+tdtTime.

Heiko

SilverMoonGirl 12. Dez 2006 12:40

Re: Zeit/Datumswert mit einer Tabelle vergleichen
 
Zitat:

Zitat von marabu
Wenn du den Fehler nicht selbst findest musst du mal das DDL Statement für die Tabelle zeigen.

Muss ich erst gucken, die ist nicht von mir :mrgreen:

@hoika
ich habe es so probiert, allerdings bleibt es trotzdem bei der Fehlermeldung, dass die Typen nicht übereinstimmen :cry:

Das entpuppt sich ja schwerer als erwartet :|

hoika 12. Dez 2006 12:51

Re: Zeit/Datumswert mit einer Tabelle vergleichen
 
Hallo,

dann nimm mal AsFloat statt AsDateTime.


Heiko

SilverMoonGirl 12. Dez 2006 13:24

Re: Zeit/Datumswert mit einer Tabelle vergleichen
 
Es ändert sich leider trotzdem nichts, die Fehlermeldung ist die gleiche :-(

MacNuke 12. Dez 2006 14:24

Re: Zeit/Datumswert mit einer Tabelle vergleichen
 
Hi.

Ich hab die Datenbank verbrochen, also wenn's um die Datenbank an sich geht, bitte mich fragen. ;) Ja, ich weiß, ich hätte es auch anders machen können (Datum/Zeit getrennt und den "_" bei BackUpTime hätte ich auch weglassen können, aber es sollte halt schnell gehen), aber nun ist zu spät. Sorry, Simone :kiss:

Nunja. Also der Tabellen-Typ ist Paradox 7. Nur damit keine Verwirrung auftritt. Wir arbeiten hier zwar mit Paradox 9, aber das nutzt im Endeffekt auch nur die Tabellen vom 7er.

So. Zum Problem an sich.

Bei jeder Änderung an den Daten werden diese noch mal weggespeichert und mit diesem jenen Zeitstempel versehen, damit man diese identifizieren kann. Nun soll SilverMoonGirl ein Paradox-externes Programm schreiben (jetzt halt in Delphi), welches diese Daten bei Bedarf wieder zurückholen kann. Der Kunde wählt quasi Vorgangsnummer, Datum und Uhrzeit und dann soll sie es raussuchen.

Da gibt's jetzt halt das Problem das die Abfrage nicht funktionieren will.

Von den Delphi-Komponenten hab ich jetzt leider nicht so die Ahnung. Da müsst ihr euch wieder an SilverMoonGirl wenden ;)

Jetzt unabhängig von dem Problem. Wie fragt man denn einen DateTime-Wert richtig ab? Jetzt auch noch unabhängig davon das er erst zusammengesetzt werden muss?

Danke. :)

hoika 12. Dez 2006 14:51

Re: Zeit/Datumswert mit einer Tabelle vergleichen
 
Hallo,

wie ihr beiden seht, gibt es nur Ärger.
Ich würde die Struktur ändern und per Programm-Update,
die alten Daten ersetzen.

Abfrage ist wegen dem zusammengestezten Feld extrem schwierig,
normalerweise kann man eine Date / Time Feld per Extract
(z.B. Extract(Year From DateField)) auseinandernehmen,
das läuft aber ohne Index, ist also saulahm.

Poste doch mal eine Bsp-Tabelle
mit 2/3 Datensätzen.


Heiko

marabu 12. Dez 2006 15:17

Re: Zeit/Datumswert mit einer Tabelle vergleichen
 
Hallo Leute,

grundsätzlich muss bei der Abfrage über LocalSQL unterschieden werden, ob man per Parameter abfragt oder nicht:

Delphi-Quellcode:
begin
  with Query do
  begin
    SQL.Text := 'SELECT * FROM T1 WHERE ts = :ts';
    Params.ParamByName('ts').AsDateTime := StrToDate('2006-12-21') + StrToTime('12:08:04');
    Open;
  end;

  with Query do
  begin
    SQL.Text := 'SELECT * FROM T1 WHERE CAST(ts AS TIME) = ''12:08:04'' '
              + 'AND CAST(ts AS DATE) = ''21.12.2006'' ';
    Open;
  end;
end;
Die Datum- und Zeit-Literale bei der Parameterbesetzung richten sich nach den Ländereinstellungen des Benutzers. Die Anzeige von von Date- und Time-Feldern über die BDE erfolgt nach den gleichen Regeln, TimeStamp-Felder (@) werden im Format "TIME, DATE" angezeigt. Allerdings müssen die Literale bei der LocalSQL-Abfrage gemäß den Vorgaben der BDE-Konfiguration erfolgen. Diese unterscheidet sich oft von den Systemeinstellungen.

Ansonsten gilt immer noch das, was ich in Beitrag #12 geschrieben habe.

Freundliche Grüße

MacNuke 12. Dez 2006 15:17

Re: Zeit/Datumswert mit einer Tabelle vergleichen
 
Zitat:

Zitat von hoika
wie ihr beiden seht, gibt es nur Ärger.
Ich würde die Struktur ändern und per Programm-Update,
die alten Daten ersetzen.

Nee. Muss doch aus so gehen. Zur Not wird das Programm eher nicht mehr in Delphi gemacht, sondern wieder in Paradox ;) Also von daher ;)

Zitat:

Zitat von hoika
Abfrage ist wegen dem zusammengestezten Feld extrem schwierig,
normalerweise kann man eine Date / Time Feld per Extract
(z.B. Extract(Year From DateField)) auseinandernehmen,
das läuft aber ohne Index, ist also saulahm.

Geschwindigkeit ist eher nebensächlich. Es geht doch im Prinzip nur ganz einfach darum einen DateTime-Wert in einer Tabelle mit einer DateTime-Spalte zu suchen... warum ist das denn so schwer? ;)

Zitat:

Zitat von hoika
Poste doch mal eine Bsp-Tabelle
mit 2/3 Datensätzen.

Ist ne Tabelle mit ner DateTime-Spalte. Der Rest ist so gesehen egal, da sie die anderen Tabellen anders aussehen. Was gleich ist, ist die "_BackUpTime"-Spalte.

@marabu

OK. Dann testen wir es morgen mal mit den BDE-Konfig-Einstellungen (die fassen wir so nie an, sollten also Standard sein).


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:45 Uhr.
Seite 3 von 5     123 45      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz