Delphi-PRAXiS
Seite 4 von 5   « Erste     234 5      

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)

hoika 12. Dez 2006 17:00

Re: Zeit/Datumswert mit einer Tabelle vergleichen
 
Tja,

mein Paradox-Wissen wird zum Glück immer kleiner
(wird gerade von FB2.0 aus dem Hirn gedrückt ;))


Heiko

raiguen 12. Dez 2006 20:40

Re: Zeit/Datumswert mit einer Tabelle vergleichen
 
Zitat:

Zitat von MacNuke
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 ;)
...
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? ;)

Na, denn zeig uns doch mal die Lösung, wenn du schon 'mal eben auf die Schnelle' eine so verkorkste Tabelle erstellst. Hauptsache für deine Zwecke reicht es, dass andere damit evtl. vor unlösbaren Problemen stehen ist ja nebensächlich...

@Silvermoon: leicht veränderte SQL
Delphi-Quellcode:
const
  SELECT_STMT
    = 'SELECT * FROM "[...]\Aufdate" WHERE AuftragNr = :auftrag AND "_BackupTime" = :datzei';

datumzeit:=
 with DBmodul.QcopyTable do
  begin
    Close;
    SQL.Text:= SELECT_STMT;
    ParamByName('auftrag').AsInteger := DBGrid1.SelectedField.AsInteger;
    ParamByName('datzei').AsDateTime:= DBGzeit.SelectedField.AsDateTime + DBGdatum.SelectedField.AsDateTime;
;
    Open;
  end;
Zum Fehler (unterschiedliche Typen im Ausdruck): der könnte ja auch vom ersten Parameter 'auftrag' ausgelöst werden, wenn Auftragsnummer nicht Integer ist!? Um das herauszufinden, änderst halt testweise das SQL.Statement so, dass jeweils nur ein Parameter in der WHERE-Klausel enthalten ist...

MacNuke 12. Dez 2006 21:18

Re: Zeit/Datumswert mit einer Tabelle vergleichen
 
Zitat:

Zitat von raiguen
Na, denn zeig uns doch mal die Lösung, wenn du schon 'mal eben auf die Schnelle' eine so verkorkste Tabelle erstellst. Hauptsache für deine Zwecke reicht es, dass andere damit evtl. vor unlösbaren Problemen stehen ist ja nebensächlich...

Warum so aggressiv?

MacNuke 12. Dez 2006 22:40

Re: Zeit/Datumswert mit einer Tabelle vergleichen
 
Ich hab mal gerade blind was zusammengeklickt (hab ja halt jetzt nicht die Erfahrung damit)

Also ein DataSource mit einer Query verknüft und das DataSource mit dem GUI-Tabellen-Objekt.

Dann auf nen Schalter, das:
Delphi-Quellcode:
const
  SELECT_STMT
    = 'SELECT * FROM AdrTest A WHERE A."_BackupTime" = :datzeit';
var
  datZeit: TDateTime;
begin
  datZeit := StrToDate('12.12.2006') + StrToTime('22:54:06');;
  with Form1.Query1 do
  begin
    SQL.Text := SELECT_STMT;
    ParamCheck := True;
    Params.ParamByName('datzeit').AsDateTime:= datZeit;
    Open;
  end;
end;
Das hatte jetzt geklappt... naja. Wie gesagt, halt morgen noch mal gucken, woran das jetzt liegen kann. Ist dann wohl doch irgend ne Einstellung. Die BDE hat bei mir hier als Datums-Zeichen ein "/" drinnen. Naja. Mal gucken... ;)

Vllt. kriegt man das ja mit irgendwelchen Datums-Formatierungs-Routinen hin, oder? Also das man Tag, Monat, Jahr, Minute etc. übergibt und er dann den korrekten Wert ausgibt, oder?

edit:
Ist eigentlich schon bekannt, dass das Forum unter OS X ziemlich buggy ist? ;) Der schneidet mir einfach Text weg ;)

mkinzler 13. Dez 2006 05:24

Re: Zeit/Datumswert mit einer Tabelle vergleichen
 
Zitat:

Ist eigentlich schon bekannt, dass das Forum unter OS X ziemlich buggy ist? Wink Der schneidet mir einfach Text weg Wink
Liegt wohl eher am Browser als am Forum.
Zitat:

Die BDE hat bei mir hier als Datums-Zeichen ein "/" drinnen.
Liegt an den Ländereinstellungen (Datumsformat) des Systems.

MacNuke 13. Dez 2006 07:11

Re: Zeit/Datumswert mit einer Tabelle vergleichen
 
Zitat:

Zitat von mkinzler
Liegt wohl eher am Browser als am Forum.

Hmm... mit Safari passiert, mit FireFox passiert, mit iCab passiert ;)

Nee, am Browser liegt's nicht ;)

Zitat:

Zitat von mkinzler
Liegt an den Ländereinstellungen (Datumsformat) des Systems.

Naja gut. Die sind gleich auf Deutschland gestellt... naja. Mal gucken ;)

SilverMoonGirl 13. Dez 2006 08:46

Re: Zeit/Datumswert mit einer Tabelle vergleichen
 
Zitat:

Zitat von raiguen
Um das herauszufinden, änderst halt testweise das SQL.Statement so, dass jeweils nur ein Parameter in der WHERE-Klausel enthalten ist...

Wenn ich nur die Auftragsnummer abfrage funktioniert es ja auch, nur beim/mit _BackUpTime nicht.

raiguen 13. Dez 2006 10:06

Re: Zeit/Datumswert mit einer Tabelle vergleichen
 
Zitat:

Zitat von SilverMoonGirl
Wenn ich nur die Auftragsnummer abfrage funktioniert es ja auch, nur beim/mit _BackUpTime nicht.

Okay....
:idea: bzw 'Geistesblitz':
LocalSQL ist ein bischen 'eigensinnig', was 'Sonderzeichen' (und dazu gehört der Unterstrich am Anfang) im Feldnamen angeht: diese MÜSSEN in doppelten Anführungszeichen gesetzt werden - wie du es ja auch insoweit richtig gemacht hast - NUR: es ist dann auch zwingend erforderlich, den Tabellennamen voran zu setzen:
Delphi-Quellcode:
const
  SELECT_STMT
    = 'SELECT * FROM "Aufdate"
       WHERE AuftragNr = :auftrag AND "aufdate"."_BackupTime" = :datzei';
//-- bzw mithilfe eines TabellenAlias:
  SELECT_STMT
    = 'SELECT * FROM "Aufdate" A
       WHERE A.AuftragNr = :auftrag AND A."_BackupTime" = :datzei';

...
So sollte es dann endlich auch mit dem Datum/Zeit-Parameter funktionieren...

SilverMoonGirl 15. Dez 2006 09:47

Re: Zeit/Datumswert mit einer Tabelle vergleichen
 
Also so langsam geb ich es auf, wenn ich in einem neuenProjekt folgendes ausprobiere, funktioniert alles :gruebel:
Delphi-Quellcode:
var
datumzeit: tdatetime;
begin
  datumzeit:= StrToDate('13.12.2006') + StrToTime('10:28:45');
  with Query1 do
  begin
    Close;
    SQL.Text := 'SELECT * FROM testdatum WHERE dat = :datum';
    ParamByName('datum').AsDateTime:= datumzeit;
    Open;
  end;
end;
in dem Projekt, wo ich es eigentlich brauche funktioniert es nicht. Könnt ihr vielleicht mal gucken, ob ich irgendetwas übersehen habe? :gruebel:

Delphi-Quellcode:
const
  SELECT_STMT
    = 'SELECT * FROM "[...]\Aufdate" WHERE AuftragNr = :auftrag AND "Aufdate"."_BackupTime" = :datzei';

Var
datumzeit: TDateTime;
begin
  datumzeit:= StrToDate(DBGdatum.SelectedField.AsString) + StrToTime(DBGZeit.SelectedField.AsString);

  with DBmodul.QcopyTable do
  begin
    Close;
    SQL.Text:= SELECT_STMT;
    ParamByName('auftrag').AsInteger := DBGrid1.SelectedField.AsInteger;
    ParamByName('datzei').AsDateTime:= datumzeit;
    Open;
  end;
end;
Ich versteh das nicht :wall:

MagicAndre1981 15. Dez 2006 09:49

Re: Zeit/Datumswert mit einer Tabelle vergleichen
 
Aloha Simi,

setz mal den Debugger in Zeile 8 und schau dir mal an, was in den Werten überhaupt drin steht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:46 Uhr.
Seite 4 von 5   « Erste     234 5      

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