AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Konvertierungsfehler bei Funktion

Konvertierungsfehler bei Funktion

Ein Thema von khh · begonnen am 8. Jun 2015 · letzter Beitrag vom 9. Jun 2015
Antwort Antwort
Seite 1 von 3  1 23   
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.903 Beiträge
 
FreePascal / Lazarus
 
#1

Konvertierungsfehler bei Funktion

  Alt 8. Jun 2015, 15:58
Datenbank: Firebird • Version: 2.1 • Zugriff über: Zeos
Hallo zusammen,
mit Auszug:
Delphi-Quellcode:
   FQuery1.SQL.add('sum (feld1 - feld1) as ergebnis');
  gesamtzeit := FQuery1.FieldByName('ergebnis').AsDateTime;
möchte ich das Ergebnis einer Subtraktion summieren.
Das funktionier m.E. auch, bis ich bei der Zuweisung an "gesamtzeit" einen error:
invalid Typconversion bekomme.
gesamtzeit ist vom Type TdateTime.

Was läuft falsch?

EDIT : sorry, klar Schreibfehler, muss feld1 - feld2 heissen
Karl-Heinz

Geändert von khh ( 8. Jun 2015 um 17:53 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.820 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Konvertierungsfehler bei Funktion

  Alt 8. Jun 2015, 16:11
ein TDateTime enthält einen Zeitpunkt ( als Uhrzeit). Subtrahiert man zwei Zeitwerte enzhält man eine Zeitspanne, Dies ist keine Zeitpunkt mehr. Erst recht wenn man diese Werte anschliessend addiert.
Welche Uhrzeit entspricht den z.B. 10 Min + 8 Min +5 Min?
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#3

AW: Konvertierungsfehler bei Funktion

  Alt 8. Jun 2015, 16:41
Subtrahiert man zwei Zeitwerte enzhält man eine Zeitspanne, Dies ist keine Zeitpunkt mehr.
Woher weißt Du daß es sich um eine Zeitspannne handelt?
Ich bin automatisch davon Ausgegangen, das in Feld1,Feld2 Schreibfehler? ein Zeitpunkt seine Heimat gefunden hat.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.820 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Konvertierungsfehler bei Funktion

  Alt 8. Jun 2015, 17:38
Imho entsteht eine Zeitspanne wenn man 2 (Datum/)Zeitwerte von einander abzieht.
16 Uhr - 8 Uhr ergibt eine Zeitspanne von 8 Std. Nach Deiner Interpretation würde es ja einen Mittelwert also 12 Uhr ergeben. Aber auch dann wäre die Frage was dann welches Uhrzeit/Datum dann 5 * 12 Uhr ( wenn alle Werte einer Woche addiert werden) ergeben würde.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.367 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Konvertierungsfehler bei Funktion

  Alt 8. Jun 2015, 17:41
Müsste bei
Zitat:
sum (feld1 - feld1)
nicht sowieso immer 0 herauskommen?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.820 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Konvertierungsfehler bei Funktion

  Alt 8. Jun 2015, 17:43
Müsste bei
Zitat:
sum (feld1 - feld1)
nicht sowieso immer 0 herauskommen?
Ich gehe mal davon aus, dass dies ein Tippfehler war.
Markus Kinzler
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.903 Beiträge
 
FreePascal / Lazarus
 
#7

AW: Konvertierungsfehler bei Funktion

  Alt 8. Jun 2015, 17:57
ja, war ein Tippfehler,

das mit der Zeitspanne leuchtet mir ein.
Wenn ich die Abfrage direkt in der Datenbank absetzte bekomme ich einen Dezimalwert.

Heißt das ich muss als Datentyp einen Gleitkommatypen nehmen ?
Karl-Heinz
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.820 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Konvertierungsfehler bei Funktion

  Alt 8. Jun 2015, 18:03
Ein TDateTime ist ja ein Double vor dem Komma steht das Datum, dahinter der Zeitanteil.
Das Problem dütfte die Interptretation des Wertes sein. Zeitspannen würde ich in einem Integer speichern ( Zeit in Millisekunden)
Markus Kinzler
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#9

AW: Konvertierungsfehler bei Funktion

  Alt 9. Jun 2015, 07:01
Ein TDateTime ist ja ein Double vor dem Komma steht das Datum, dahinter der Zeitanteil.
Vor dem Komma steht nicht das Datum, sondern die Anzahl der Tage seid dem 30.12.1899. Und nach dem Komma steht keine Uhrzeit, sondern die seit Mitternacht vergangene Zeit als Bruchteil eines Tages.

Ich würde den Wert in Delphi zunächst an einen Double zuweisen und den dann so formatieren, das man etwas damit anfangen kann. Die Einheit des Dezimalwertes wäre demnach 'Tage'. So würde der Wert '1.25' der Zeitspanne 'Ein Tag und 6 Stunden entsprechen'.
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.903 Beiträge
 
FreePascal / Lazarus
 
#10

AW: Konvertierungsfehler bei Funktion

  Alt 9. Jun 2015, 07:44
ich danke euch recht herzlich
Karl-Heinz
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23   

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 15:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf