![]() |
Aktuelles Datum und Uhrzeit in Datenbank speichern
Hallo ihr Programmierer :lol:
will die Uhrzeit und das aktuelle Datum in 2 Datenbankfelder vom Typ date resktive time speichern. Habe dazu die 2 Komponenten ODDBTimepicker für die Zeit und DBDateTimepicker fürs Datum installiert. Dies kann ich auch wunderbar auf Form plazieren und solange keine Datenbank verknüpft ist mit einem Tableobjekt zeigt es auch die Zeit und das richtige Datum an. Nur wie bringe ich das ganze zusammen damit ich die Zeit und das Datum speichern kann in der Datenbank(mysql via mysqldac).Wer weiss wie ich das richtig anpacken muss. Übe nun schon seit Stunden :cry: :cry: und bringe das einfach nicht zustande. Habe immer nur Fehlermeldungen. Bin DelphiNeuling cu Megabyte |
Hi,
bei SQL gibt es doch den Type Timestamp (= Zeitstempel), vergleichbar mit DateTime in Delphi. Dann hast Du Datum und Uhrzeit in EINER Variable. Reicht das nicht ??? :dancer: Gruß Hansa |
Hy ,
leider reicht die timestamp nicht aus da ich zeit und datum in getrennten datenbankfeldern hab ausserdem kommt die zeit 2 mal vor also bin ich gezwungen dies in separate spalten schreiben zu lassen.Die TimePicker Komponente wäre schon recht wenn nicht immer ein Fehler von der Datenbank kommen würde, dass die Daten nicht korrekt seien.(0.7322000 is not a valid timestamp).Ausserdem stellt es den TimePicker immer auf 0 also nicht auf das aktuelle Datum oder Uhrzeit. Wer weiss was ich ändern muss???? Cu Megabyte |
Hi,
dann schreib doch von mir aus 10 Timestamps in die DB. Wer hindert Dich daran ? Zitat:
Gruß Hansa |
Hi
also die Sache ist so: wenn die timestamp in ein dbedit feld geschrieben werden kann auf geteilt in zeit und datum je ein dbedit und dies beim start de formulars die aktuelle timestamp erstellt würde das schon reichen. Ich weiss nur nicht wie man eine solche timestamp erstellt und in die felder programmiert damit es funktioniert. Irgend wer muss doch so etwas schon mal gemacht haben. Hier nocheinmal was ich machen will: ich habe eine datenbank mit den feldern datum,inzeit,auszeit. Beim Start des Formulars wird ein neuer Datensatz erzeugt und die dbedit(oder ?felder) sollten mit dem datum und der aktuellen Uhrzeit vorbesetzt sein. Der User kann jetzt Datum ,Inzeit und Auszeit ändern oder so wie es ist speichern. Wer weiss ob dies mit einer oben beschriebenen timestamp geht oder der datapicker oder sonst eine komponente nötig ist. wer weiss wo ich ein beispiel finde. merci fürs helfen cu megabyte |
Hi,
was ist denn Inzeit und Auszeit ? Es ist wirklich mühsam das zu verstehen, was Du schreibst. Zumindest ich verstehe den Zusammenhang nicht. Gruß Hansa |
Als Anhaltspunkt :
Code:
Der Code legt einen neuen Datensatz an und besetzt die Werte Lieferanten-Nr. und das Feld, wann der Lieferant angelegt wurde vor. Allerdings mit SQL :!:
WITH LiefModul.LiefDS DO BEGIN
active := false; SelectSQL.Text := 'SELECT * FROM LIEF8 WHERE NR='+Edit1.Text; active := true; IF IsEmpty THEN BEGIN Showmessage ('neuer Datensatz !'); insert; FieldByName ('LIEFSEIT').value := Today; FieldByName ('NR').value := StrToInt (Edit1.text); END END; Gruß Hansa |
Typen beachten
Das Problem sind warscheinlich die Typen:
TTime ist intern ein Float wie von Dir als Fehler beschrieben, der die Anzahl der Tage bezeichnet, also zwischen 0 und 1 liegt. Ein Datum zählt entsprechend die Tage seit dem (1.1.1900 oder so). Beim Speichern in der Datenbank ist jetzt auf die korrekte Typumwandlung zu achten, also z.B. MyTable.MyDatum.AsDateTime := StrToDate(Edit1.Text); MyTable.MyDatum.AsString:= Edit1.Text; MyTable.MyTime.AsDateTime := StrToTime(Edit1.Text); MyTable.MyTime.AsInteger := round(DateTimePicker.Time *SecsPerDay); |
Hi Megabyte,
DKamps Statement ist kaum noch was hinzuzufügen. In meinem Beispiel :
Code:
ist das today schon vom richtigen Typ. Ansonsten mußt Du das so machen, wie er schreibt. Eins vielleicht noch : Nimmst Du ein Timestamp mußt Du den Typ so umwandeln :
FieldByName ('LIEFSEIT').value := Today;
Feld.AsDateTime := StrToDateTime (Edit....); Außerdem würde ich mir mal in der Delphi-Hilfe die Formatierungsregeln solcher Zeit/Datumsfelder ansehen. Dort steht ausnahmsweise mal nicht drin : Wollen Sie die Funktion xy benutzen, so benutzen Sie die Funktion xy. :mrgreen: Gruß Hansa |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:31 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