AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Zeit in Firebird-DB speichern

Zeit in Firebird-DB speichern

Ein Thema von harfes · begonnen am 8. Okt 2021 · letzter Beitrag vom 8. Okt 2021
Antwort Antwort
harfes

Registriert seit: 25. Jun 2006
Ort: Rand der Scheibe
119 Beiträge
 
Delphi 11 Alexandria
 
#1

Zeit in Firebird-DB speichern

  Alt 8. Okt 2021, 09:20
Datenbank: Firebird • Version: 3 • Zugriff über: IBDAC
Ich habe in Firebird in einer Tabelle eine Feld als TIME angelegt (ZEITSTART TIME) und möchte nun die Startzeit darin speichern (und zwar nur die Zeit, Datum interessiert an dieser Stelle nicht - die Eingabemaske ist ein DateTimePicker). Das versuche ich mit einer Query zu speichern:

Params[3].Value:= TimeToStr(AdvDateTimePicker2.Time);

und bekomme immer einen Conversion-Error from String. Wenn ich mir allerdings das mit showmessage(TimeToStr(AdvDateTimePicker2.Time) anzeigen lasse, ist alles ok. Mache ich das gleiche mit Date (Params[2].Value:= DateToStr(AdvDateTimePicker1.Date)) funktioniert es auch. Was mache ich da falsch?

Hartmut
Hartmut
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
1.920 Beiträge
 
Delphi 7 Professional
 
#2

AW: Zeit in Firebird-DB speichern

  Alt 8. Okt 2021, 09:36
Du hast doch auf beiden Seiten einen Zeitwert, warum gehst Du über Value und String?

Klappt es denn eventuell so: Params[3].AsTime := AdvDateTimePicker2.Time; Zumindest mit den Zeos-Komponenten dürfte das so funktionieren.

Nachtrag:
TDAParam Members scheint .AsTime nicht zu kennen. Aber zumindest .AsString. Dies würd' ich dann auch bei der Übergabe eines Strings verwenden, statt .Value, da damit zumindest bei der Wertübergabe in Delphi die Typsicherheit gegeben ist. Damit spart man sich die (eventuell) möglichen Typunsicherheiten bzw. die zusätzliche Konvertierung, die beim Umweg über .Valus (= Variant) möglich sein könnten.

Da TDateTime und damit Time in Delphi letztlich Floats sind, könnte .AsFloat auch noch 'ne Alternative sein.

Geändert von Delphi.Narium ( 8. Okt 2021 um 09:46 Uhr) Grund: Nachtrag eingefügt
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
4.840 Beiträge
 
Delphi 10.1 Berlin Professional
 
#3

AW: Zeit in Firebird-DB speichern

  Alt 8. Okt 2021, 09:37
Hallöle...


Niemals Zeit oder Datum als String in die DB speichern!

Richtig hast du es ja schon gemacht.
Zitat:
als TIME angelegt


Speichern:
Params[3].Value:= AdvDateTimePicker2.Time; oder
ParamByName('BlubbOderSo').AsDateTime:= AdvDateTimePicker2.Time;
  Mit Zitat antworten Zitat
harfes

Registriert seit: 25. Jun 2006
Ort: Rand der Scheibe
119 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Zeit in Firebird-DB speichern

  Alt 8. Okt 2021, 09:53
Danke euch beiden!

Ich habe es jetzt wie von Delphi.Narium vorgeschlagen gelöst:

Params[3].AsTime := AdvDateTimePicker2.Time;

Das funktioniert jetzt! Warum das mit Date funktioniert ist mir jetzt nicht ersichtlich, aber solange es funktioniert...

Hartmut
Hartmut
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
1.920 Beiträge
 
Delphi 7 Professional
 
#5

AW: Zeit in Firebird-DB speichern

  Alt 8. Okt 2021, 10:02
Meine Regel diesbezüglich ist einfach und konsequent:

Links vom := wird immer .AsDatentyp genommen, der dem rechts vom := entspricht. .Values nur dann, wenn ich nicht weiß, was rechts vom := steht. Und das war bisher noch nie der Fall

Values ist ein Variant. Bei dem wird der Inhalt immer interpretiert. Man weiß also nie so 100%ig genau, ob der Inhalt auch so interpretiert wird, wie man es erwartet. Bei Deinem konkreten Fall scheint genau diese Unsicherheit "zuzuschlagen".
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf