![]() |
Re: Datum inkl. Uhrzeit in DATE - Feld
Natürlich kannst Du es da auch machen (aber die Konvertierung im SQL-String fällt dann weg).
|
Re: Datum inkl. Uhrzeit in DATE - Feld
Und wie ?
|
Re: Datum inkl. Uhrzeit in DATE - Feld
Haben wir doch lang und breit in diesem Thread beschrieben.
|
Re: Datum inkl. Uhrzeit in DATE - Feld
Hier mal mein komplettes Problem:
So sieht alles aus, und nur das DATUM lässt sich nciht einfügen.
Delphi-Quellcode:
Gruss
procedure Einfuegen();
var Datum: String; Zeit: TDateTime; begin Zeit := DTP_Sigma_Erfassung_Datum.Date + StrToTime(Format('%s:%s',[CB_Sigma_Erfassung_Stunde.Items[CB_Sigma_Erfassung_Stunde.ItemIndex],CB_Sigma_Erfassung_Minute.Items[CB_Sigma_Erfassung_Minute.ItemIndex]])); Datum := datetimetostr(Zeit); Datensatz_insert ('''' + Stoer_Art_ID + ''',''' + Anwender_ID + ''', ''' + Datum + ''', ''' + ED_Sigma_Erfassung_Melder.text + ''', ''' + Ort_ID + ''', ''' + ED_Sigma_Erfassung_Strasse.text + ''', ''' + ED_Sigma_Erfassung_Hausnr.text + ''', ''' + ED_Sigma_Erfassung_Hinweis.text + ''', ''' + Bemerkung + ''', '''', ''' + abschliessen + ''', ''' + ED_Sigma_Erfassung_AN.text + ''', ''' + ED_Sigma_Erfassung_TBesitzer.text + ''', ''' + ED_Sigma_Erfassung_Telefon.text + ''', ''' + ED_Sigma_Erfassung_Telefon2.text + '''', 'STOER_ART_ID,ANWENDER_ID, DATUM, MELDER, ORT_ID, STRASSE,HAUS_NR, STOER_HINWEIS, BEMERKUNG, GISREFERENZ,OHNE_AUFTRAG, ISU_ANLAGE,NAME,VORWAHL,NACHWAHL', 'SYSDBP.DBP_ERFASSUNG'); end; procedure Datensatz_insert (Werte:String; Spalten:String; Tabelle:String); begin with DM_Query_Termas do begin QueryInsert.Close; QueryInsert.SQL[0] := 'INSERT INTO ' + Tabelle + ''; QueryInsert.SQL[1] := '(' + Spalten + ')'; QueryInsert.SQL[2] := 'VALUES(' + Werte + ')'; //QueryInsert.ParamByName('DATUM').AsDateTime := now; QueryInsert.ExecSQL; end; DM_Query_TerMaS.QueryCommit.ExecSQL; end; Holger |
Re: Datum inkl. Uhrzeit in DATE - Feld
Das ist so natürlich ein Problem, da man ja nicht im Voraus weiß, was in der Variablen "Werte" steht.
|
Re: Datum inkl. Uhrzeit in DATE - Feld
Aber auch, wenn ich jetzt davon ausgehe, das die Spalte DATUM mit in der Variable Werte ist, kommt der Fehler:
Parameter 'DATUM' nicht gefunden. Gruss Holger |
Re: Datum inkl. Uhrzeit in DATE - Feld
Das muss so in "Werte" stehen: ":datum", also mit vorangestelltem Doppelpunkt, damit es als Parameter erkannt wird.
|
Re: Datum inkl. Uhrzeit in DATE - Feld
Habe es jetzt:
Das hatte ich gesucht:
Delphi-Quellcode:
Gruss
TO_DATE(''' + Datum + ''',''DD.MM.YYYY HH24:MI:SS'')
Holger |
Re: Datum inkl. Uhrzeit in DATE - Feld
Hallo,
dein SQL-Statement ist extrem schwer zu lesen
Delphi-Quellcode:
Wie du siehst, entfallen auch deine '' (OK, QuotedStr würde Abhilfe schaffen).
with Query do
begin SQL.Add('Insert Into Personal(Id,Name,BirthDay)'); SQL.Add('Values(:Id,:Name,:BirthDay); ParamByName('Id').AsInteger:= theId; // Integer ParamByName('Name').AsString:= theName; // String ParamByName('BirtDay').AsDateTime:= theBirthDay; // TDateTime ExecSQL; end; Ausserdem ist der Code leichter lesbar. Weiterhin kannst du, falls der Code in einer Schleife, vorher ein Prepare machen, dann ist die Query sehr viel schneller. Für dich das wichtigste, Das AsDateTime formt den "theBirtDay" so um, wie Oracle es haben will. Heiko |
Re: Datum inkl. Uhrzeit in DATE - Feld
Hier scheint mir etwas Chaos vorzuliegen, deshalb hier Schritt für Schritt die Lösung:
1.) Das Datum steht in einem TDateTimePicker, die Uhrzeit in einem 2. TDateTimePicker (Kind = dtkTime) 2.) nun muss Datum & Uhrzeit in einer einzige Variablen zusammengefasst werden:
Delphi-Quellcode:
3.) Jetzt sollte der Zeitpunkt angezeigt werden, damit man nicht völlig blind programmiert
var
zeitpunkt: TDateTime; begin zeitpunkt:= Int(DatePicker1.Date) + TimePicker1.Time; // die funktion Int() ist ein Bugfix für eine Fehlfunktion im TDateTimePicker
Delphi-Quellcode:
4.) nun muss man den Zeitpunkt irgendwie in eine SQL-Anweisung hineinbekommen.
LabelZeitpunkt.Caption := DateTimeToStr(zeitpunkt)
Das ist gar nicht so einfach, da fast jede Datenbank sein eigenes Format hat :-( Nicht ohne Grund wurde hier mehrfach die Verwendung von Parametern empfohlen. Wenn du Parameter nimmst, bist du jetzt fast fertig. Du verwendest die Oracle Datenbank. 5.) Also ist der nächste Schritt: Studium der Oracle Syntax ![]() Anscheinend kann man ein Datum im Ansi-Format '2007-10-17' angeben. Wie das mit der Uhrzeit geht -> selber rausfinden 6.) schlussendlich braucht man dann eine Funktion, die ein TDateTime nach Oracle-Syntax wandelt. Ungefähr so:
Delphi-Quellcode:
function DateTime2Oracle(value:TDateTime):string;
begin if value <= 0.0 then result := 'NULL' else result := QuotedStr(FormatDateTime('yyyy-mm-dd hh:nn:ss', [value])); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:48 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 by Thomas Breitkreuz