Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Datum inkl. Uhrzeit in DATE - Feld (https://www.delphipraxis.net/101685-datum-inkl-uhrzeit-date-feld.html)

DeddyH 17. Okt 2007 13:45

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).

HolgerCW 17. Okt 2007 13:47

Re: Datum inkl. Uhrzeit in DATE - Feld
 
Und wie ?

DeddyH 17. Okt 2007 13:49

Re: Datum inkl. Uhrzeit in DATE - Feld
 
Haben wir doch lang und breit in diesem Thread beschrieben.

HolgerCW 17. Okt 2007 13:51

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:
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;
Gruss

Holger

DeddyH 17. Okt 2007 13:56

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.

HolgerCW 17. Okt 2007 13:59

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

DeddyH 17. Okt 2007 14:01

Re: Datum inkl. Uhrzeit in DATE - Feld
 
Das muss so in "Werte" stehen: ":datum", also mit vorangestelltem Doppelpunkt, damit es als Parameter erkannt wird.

HolgerCW 17. Okt 2007 14:15

Re: Datum inkl. Uhrzeit in DATE - Feld
 
Habe es jetzt:

Das hatte ich gesucht:

Delphi-Quellcode:
TO_DATE(''' + Datum + ''',''DD.MM.YYYY HH24:MI:SS'')
Gruss

Holger

hoika 17. Okt 2007 14:47

Re: Datum inkl. Uhrzeit in DATE - Feld
 
Hallo,

dein SQL-Statement ist extrem schwer zu lesen

Delphi-Quellcode:
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;
Wie du siehst, entfallen auch deine '' (OK, QuotedStr würde Abhilfe schaffen).
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

shmia 17. Okt 2007 15:00

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:
var
  zeitpunkt: TDateTime;
begin
  zeitpunkt:= Int(DatePicker1.Date) + TimePicker1.Time;
  // die funktion Int() ist ein Bugfix für eine Fehlfunktion im TDateTimePicker
3.) Jetzt sollte der Zeitpunkt angezeigt werden, damit man nicht völlig blind programmiert
Delphi-Quellcode:
  LabelZeitpunkt.Caption := DateTimeToStr(zeitpunkt)
4.) nun muss man den Zeitpunkt irgendwie in eine SQL-Anweisung hineinbekommen.
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
http://download-east.oracle.com/docs...a90125/toc.htm
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 17:51 Uhr.
Seite 2 von 3     12 3      

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