AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Firebird mit DBX und Clientdataset, Rundungsfehler bei Zeitstempel?
Thema durchsuchen
Ansicht
Themen-Optionen

Firebird mit DBX und Clientdataset, Rundungsfehler bei Zeitstempel?

Ein Thema von Rainer Wolff · begonnen am 12. Mär 2019 · letzter Beitrag vom 12. Mär 2019
Antwort Antwort
Rainer Wolff

Registriert seit: 25. Okt 2005
Ort: Bretten
321 Beiträge
 
Delphi 10.4 Sydney
 
#1

Firebird mit DBX und Clientdataset, Rundungsfehler bei Zeitstempel?

  Alt 12. Mär 2019, 11:19
Datenbank: Firebird • Version: 2.5.8 • Zugriff über: DBX
Konfiguration:

Firebird-Datenbank, Zugriff über DBX-Komponenten (TSQLQuery) und Clientdataset

Meine Tabelle enthält ein Zeitstempel-Feld vom Typ Timestamp. Befüllt wurde dieses Feld teils mit anderen Programmen/Zugriffskomponenten (Tabellenkonvertierung etc.).

Ich habe jetzt in meiner Tabelle eine Serie von Daten, alle mit dem selben Zeitstempel.
Bei Post/ApplyUpdate der Datensätze kommt es zu einer Exception, weil beim Update keine Datensätze gefunden werden, die den Bedingungen (aktuell upWhereAll) entsprechen.

Ursache ist in irgendeiner Form das Datumsfeld. Wenn ich in der Tabelle manuell ein anderes Datum eintrage, funktioniert das Update anschliessend.

Wer kennt den Grund für dieses Verhalten?
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#2

AW: Firebird mit DBX und Clientdataset, Rundungsfehler bei Zeitstempel?

  Alt 12. Mär 2019, 11:58
Vor einigen Jahren ist mir das bereits aufgefallen (Java-Anwendungen schreiben Zeitstempel, Delphi-Anwendungen finden danach den Datensatz nicht mehr ...)

Die Ursache war, dass dbExpress keine Millisekunden in den Zeitfeldern speichert. Wir haben daher die anderen Anwendungen so geändert, dass der Millisekunden-Anteil vor dem Update aus dem Zeitwert entfernt wurde. In der Datenbank stehen damit einheitlich alle Zeitstempel immer ohne Millisekunden.
Michael Justin
  Mit Zitat antworten Zitat
Rainer Wolff

Registriert seit: 25. Okt 2005
Ort: Bretten
321 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Firebird mit DBX und Clientdataset, Rundungsfehler bei Zeitstempel?

  Alt 12. Mär 2019, 13:12
Vor einigen Jahren ist mir das bereits aufgefallen (Java-Anwendungen schreiben Zeitstempel, Delphi-Anwendungen finden danach den Datensatz nicht mehr ...)

Die Ursache war, dass dbExpress keine Millisekunden in den Zeitfeldern speichert. Wir haben daher die anderen Anwendungen so geändert, dass der Millisekunden-Anteil vor dem Update aus dem Zeitwert entfernt wurde. In der Datenbank stehen damit einheitlich alle Zeitstempel immer ohne Millisekunden.
Ja, das wars dann, Danke.

Ich hatte einen Teil der Datensätze mit einem Quick-and-Dirty-Firedac-Programm konvertiert und dabei wohl den Zeitstempel inkl. Millisekunden in einen Teil der Datensätze bekommen, das Programm selbst verwendet aber noch die alten DBX-Komponenten.
Und da soll einer draufkommen
  Mit Zitat antworten Zitat
Antwort Antwort


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 04:43 Uhr.
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