AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi FireDAC, DisplayFormat
Thema durchsuchen
Ansicht
Themen-Optionen

FireDAC, DisplayFormat

Ein Thema von Johann Steiner · begonnen am 25. Nov 2019 · letzter Beitrag vom 26. Nov 2019
Antwort Antwort
Johann Steiner

Registriert seit: 11. Jun 2005
10 Beiträge
 
#1

FireDAC, DisplayFormat

  Alt 25. Nov 2019, 21:28
Datenbank: SQLite • Version: ? • Zugriff über: FireDac
Hallo zusammen,
habe ein kleines Problem und hoffe hier eine Lösung zu erhalten.
Ich musste eine Paradox-Tabelle über Umwege in eine SQLite DB portieren (eigentlich problemlos).
Mit FireDAC-Komponenten möchte ich nun weitermachen.
Nun habe ich im Feld Datum schöne LongInteger-Werte stehen, welche im DB-Grid auch als solche angezeigt werden.
Um ein CalcField-Ereignis zur Umwandlung zu vermeiden möchte ich im Objectinspector für das Feld Datum (FDTable1Datum) den Parameter FormatDisplay verwenden um eine vernünftige Datumsanzeige im Grid zu erhalten.
All meine Versuche scheitern kläglich, ich kann Tausendertrennzeichen und/oder Nachkommastellen einfügen, aber ein "Datum" spuckt er mir nicht aus!
Wie bitte lautet der richtige Formatstring in einem solchen Fall?
Ich verwende Delphi 10.2

Herzlichen Dank im Voraus
Hans
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: FireDAC, DisplayFormat

  Alt 26. Nov 2019, 04:24
Hallo,
was sind das denn für "schöne" Longinteger-Zahlen?

Schau mal,hier bei Unix Time stamp (unixepoch)
https://www.sqlite.org/lang_datefunc.html
Heiko

Geändert von hoika (26. Nov 2019 um 04:29 Uhr)
  Mit Zitat antworten Zitat
Johann Steiner

Registriert seit: 11. Jun 2005
10 Beiträge
 
#3

AW: FireDAC, DisplayFormat

  Alt 26. Nov 2019, 10:16
Hallo Heiko,
danke für die schnelle Antwort.
Die LongInteger-Zahlen sind : 0 für 31.12.1899 und zB 43795 für 26.11.2019. (sind wohl nur Integer …)
Danke auch für den Link; da ich mit der TFDTable-Komponente arbeiten möchte, hilft mir eine SQL-Abfrage vorläufig wenig.

Grüße Hans
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#4

AW: FireDAC, DisplayFormat

  Alt 26. Nov 2019, 10:31
Warum möchtest Du mit der Table Komponente arbeiten? Das bietet sich nicht wirklich an, wenn die Tabelle wächst oder bereits groß ist. SQL basierte Systeme verhalten sich anders als Paradox.

Du könntest die Daten einmalig konverieren und in ein normales Datetime Feld umwandeln, wie es von SQLite unterstützt wird, statt das weiter mitzuschleppen und immer umzurechnen.

Oder Du versuchst, der Table ein berechnetes Feld hinzuzufügen. An der Stelle wäre man schon an dem ersten Punkt, warum man lieber Queries verwendet.
Gruß, Jo
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: FireDAC, DisplayFormat

  Alt 26. Nov 2019, 10:34
Hallo,
Zitat:
0 für 31.12.1899
Sicher, dass es nicht der 30.12.1899 nicht, weil dann wären es die normalen Delphi-TDateTime
(http://docs.embarcadero.com/products...TDateTime.html)

Wenn das stimmt, müsste DisplayFormat dann ja dd.mm.yyyy sein.
Heiko
  Mit Zitat antworten Zitat
Johann Steiner

Registriert seit: 11. Jun 2005
10 Beiträge
 
#6

AW: FireDAC, DisplayFormat

  Alt 26. Nov 2019, 12:15
Richtigstellung: 0 steht natürlich für 30.12.1899 und der Datentyp dürfte wohl Double sein, aber das ändert nichts an meinem Problem.
Der String dd.mm.yyyy (und ähnliche) im Feld DisplayFormat bewirkt lediglich dass im Grid eben dieser String ausgegeben wird, nicht einmal mehr der numeriwsche Wert aus der Datenbank.

Grüße Hans
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: FireDAC, DisplayFormat

  Alt 26. Nov 2019, 12:19
Hallo,
es gibt doch noch das OnGetText, u.a. hier (obwohl lazarus)
https://forum.lazarus.freepascal.org...?topic=28125.0

oder hier (etwas weiter unten)
https://www.delphipraxis.net/190097-...ongettext.html
Heiko
  Mit Zitat antworten Zitat
Johann Steiner

Registriert seit: 11. Jun 2005
10 Beiträge
 
#8

AW: FireDAC, DisplayFormat

  Alt 26. Nov 2019, 19:23
Danke an alle!
OnGetText ist eine elegante Methode das gewünschte Ergebnis zu erzielen, auch das OnCalcFields ist gut (und universeller) einsetzbar.
Ich vermute dass im Parameter Displayformat eine Konvertierung (Double zu DateTime oder ähnlich) nicht vorgesehen ist und nur "native" Werte (Datum, Zahlen,...) formatiert werden können.
Man möge mich eines Besseren belehren...

Schöne Grüße
Hans
  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 02:27 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