![]() |
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 |
Re: Zeit/Datumswert mit einer Tabelle vergleichen
Zitat:
@Silvermoon: leicht veränderte SQL
Delphi-Quellcode:
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...
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; |
Re: Zeit/Datumswert mit einer Tabelle vergleichen
Zitat:
|
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:
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... ;)
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; 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 ;) |
Re: Zeit/Datumswert mit einer Tabelle vergleichen
Zitat:
Zitat:
|
Re: Zeit/Datumswert mit einer Tabelle vergleichen
Zitat:
Nee, am Browser liegt's nicht ;) Zitat:
|
Re: Zeit/Datumswert mit einer Tabelle vergleichen
Zitat:
|
Re: Zeit/Datumswert mit einer Tabelle vergleichen
Zitat:
: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:
So sollte es dann endlich auch mit dem Datum/Zeit-Parameter funktionieren...
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'; ... |
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:
in dem Projekt, wo ich es eigentlich brauche funktioniert es nicht. Könnt ihr vielleicht mal gucken, ob ich irgendetwas übersehen habe? :gruebel:
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;
Delphi-Quellcode:
Ich versteh das nicht :wall:
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; |
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. |
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