AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi DbGrid Integer-Wert als Datum anzeigen

DbGrid Integer-Wert als Datum anzeigen

Ein Thema von BadenPower · begonnen am 11. Jun 2015 · letzter Beitrag vom 12. Jun 2015
Antwort Antwort
Seite 2 von 2     12
Benutzerbild von p80286
p80286

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

AW: DbGrid Integer-Wert als Datum anzeigen

  Alt 12. Jun 2015, 12:01
Das Grid soll nun anstatt den Integer-Wert (z.B. 20061001) eines Feldes ein Datums-Feld (01.10.2006) anzeigen und auch als Datums-Feld editierbar sein.
Äh 20061001 ist die Kurzform von 2006-10-01 auch bekannt als ISO-Datum DIN ISO 8601 was der alten Schreibweise 1.10.2006 entspricht. Ist übrigens auch in Deutschland gültige norm, aber die PS sind ja auch nicht auszurotten.

Bei 20061001 handelt es sich nicht um eine Zahl sondern um eine Ziffernreihe, die ein Datum darstellt. Und somit vebieten sich erst einmal alle üblichen mathematischen Operationen!

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

Registriert seit: 17. Jun 2009
616 Beiträge
 
#12

AW: DbGrid Integer-Wert als Datum anzeigen

  Alt 12. Jun 2015, 12:30
Bei 20061001 handelt es sich nicht um eine Zahl sondern um eine Ziffernreihe, die ein Datum darstellt.
Das ist das was wir (also Du und ich) daraus interpretieren.
Für die Datenbank ist es ein Integer, also eine Zahl.

Und somit vebieten sich erst einmal alle üblichen mathematischen Operationen!
Die Umwandlung selbst steht ja nicht zur Debatte, dann das ist eine Standard-Routine, welche ich schon seit Jahren benutze.

[EDIT]
Wer ein Code-Snipsel für die Umwandlung hat, darf es auch gerne posten.
Da gibt es bestimmt zahlreiche Lösungsansätze, welche durchaus interessant sein könnten, da man vielleicht auf diesen Lösungsweg nicht selbst gekommen ist.
[/EDIT]


aber die PS sind ja auch nicht auszurotten.
Ich hätte auch lieber gerne ein schönes echtes Datumsfeld.
Aber zeig mir mal eine praktikable Lösung um gleichzeitig in verschiedenen Programmiersprachen zu rechnen/sortieren und darzustellen und in verschiedenen Datenbank-Systemen einheitlich einen Datumswert für "15. Dezember 200 vor Christus" bis "31.12.2599" zu speichern, welcher auch ohne Umwandlungsroutine noch vernünftig von Hand lesbar ist.


Momentan sieht es gut für die Field-Events aus, Sieger zu werden.
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.

Geändert von BadenPower (12. Jun 2015 um 13:36 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

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

AW: DbGrid Integer-Wert als Datum anzeigen

  Alt 12. Jun 2015, 14:39
Das ist das was wir (also Du und ich) daraus interpretieren.
Für die Datenbank ist es ein Integer, also eine Zahl.
Schwierig bei so einem Thema jemanden nicht auf die Füße zu treten, aber wenn in dem "Datumsfeld" nicht ein numerisch kodiertes Datum drinsteht, a la Tage seit Christi Geburt, dann sollte das Feld auch nicht numerisch sein. Ob char,varchar, text oder was auch immer stattdessen, ist mir egal.
(diese Besserwisserei von Exel hat Spuren hinterlassen)
für eine Oracledb würde ich in diese fall folgendes machen:
select to_date(to_char(feld,'99999999'),'YYYYMMDD') from.... Dann hast du als Ausgabe ein Datum(zeitangabe) wenn's für ein Stringgrid sein soll dann:
select to_char(to_date(to_char(feld,'99999999'),'YYYYMMDD'),'DD.MM.YYYY') from.... ein wenig unübersichtlich, sollte aber funktionieren.

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

n/a Beiträge
 
#14

AW: DbGrid Integer-Wert als Datum anzeigen

  Alt 12. Jun 2015, 14:52
Oh, ich bin gerade zum Review bei einem Anbieter, der seit 30 Jahren Software im Bankenumfeld für unterschiedliche DB-Systeme entwickelt. Die speichern die Datumswerte genauso wie B-Pow (20061001) stellen aber langsam auf BIGINT (Ticks) um (was ja irgendwie noch perverser ist).
Wieso? Weil das datenbankunabhängig ist, sagen sie. Rechnen kann man damit, und da man sowieso nicht direkt auf die Tabelle zugreift, sondern nur über SP und Views, ist das eh wurscht. Ich meine, das ist echt kein Kindergarten hier.

Was ich damit sagen will: Es soll Leute geben, die das so machen. Und nicht, weil sie blöd sind, sondern sich irgend etwas dabei gedacht haben.

Und wenn ein Feld nunmal so ist, dann muss man damit leben und das beste draus machen. Genau das wird hier versucht.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

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

AW: DbGrid Integer-Wert als Datum anzeigen

  Alt 12. Jun 2015, 15:21
erst einmal
Ich hätte auch lieber gerne ein schönes echtes Datumsfeld.
weist meiner Meinung nach darauf hin, daß er eine Altlast übernommen hat, an der er nichts ändern kann.
Schade ist aber so.

Historisch gesehen, Datumsangaben wurden zumindest bei der IBM auch gerne in BCD-Feldern abgelegt, und nicht umsonst gab es den dummen Spruch "da hat jemand das Datum dazu addiert".
Wenn ee einnumerisches Feld sein muß, dann doch bitte eins in dem ein Zähler von was auch immer (Sekunden, Tage, Ticks) seit einem definierten Nullpunkt steht.
Falls jemand auf die Idee kommt 20151224-(2015*365) zu rechnen, dann landet er bei 19415749 und das ist glaube ich kein gültiges Datum und nicht Christi Geburt.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.114 Beiträge
 
Delphi 12 Athens
 
#16

AW: DbGrid Integer-Wert als Datum anzeigen

  Alt 12. Jun 2015, 15:32
Rechnen kann man damit.
Eigentlich nein, oder was kommt bei 20150228 + 1 raus?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

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

AW: DbGrid Integer-Wert als Datum anzeigen

  Alt 12. Jun 2015, 15:34
Rechnen kann man damit.
Eigentlich nein, oder was kommt bei 20150228 + 1 raus?
Können kann man, das ist ja das Dumme...

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

Registriert seit: 17. Jun 2009
616 Beiträge
 
#18

AW: DbGrid Integer-Wert als Datum anzeigen

  Alt 12. Jun 2015, 16:13
Schwierig bei so einem Thema jemanden nicht auf die Füße zu treten,
Du kannst Deine Meinung gerne vertreten und ich werde mich deshalb bestimmt nicht auf die Füße getreten fühlen.


Jetzt einmal zu den Grundvorraussetzungen:

1. Datenbanksysteme
  1. MySql
  2. PhpMySql
  3. MariaDb
  4. Firebird
  5. und theoretisch irgendwann einmal alles was Zeos bietet

2. Das Datum soll auch ohne "Konverter" einigermaßen vernünftig lesbar und editierbar (im Adminmodus mit Direktzugriff auf die Tabellen also als ShowAsIsInDatabase) sein. Also kein Timestamp.

3. Es soll alle Dati darstellen können

4. Ist kein Datum bekannt, dann soll es entspechend gespeichert werden können (in diesem Fall einfach eine 0)

5. Wurden noch keine Angaben gemacht, dann ist es NULL

6. Es sollte/muss in verschiedenen Programmiersprachen (PHP/Perl/Delphi) eine Möglichkeit geben diese Dati in Variabeln zur weiteren Verarbeitung abzulegen und zwar so, dass ich nicht jedesmal überlegen muss wo ich gerade bin, bzw. so dass die Verarbeitungsroutinen identisch sind.

7. Wichig ist auch, dass auf das Erstellen von SQL-Statements verzichtet wird, da sonst die Unabhängigkeit von Datenbanksystem verloren gehen kann. Das machen die Kompenenten alles automatisch, was natürlich praktisch ist, wenn wie in diesem Formular an der Haupttabelle 12 Detail-Tabellen hängen, welche alle und dies sogar bis zu 4 solche "Datumsfelder" haben.


Dies waren auch mit die Gründe, sich vor Jahren für ein Integerfeld zu entscheiden.

Dejan Vu hat es dabei exakt auf den Punkt gebracht.
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#19

AW: DbGrid Integer-Wert als Datum anzeigen

  Alt 12. Jun 2015, 20:08
Rechnen kann man damit.
Eigentlich nein, oder was kommt bei 20150228 + 1 raus?
Na, was meinst Du: Worauf bezog sich meine Bemerkung 'Rechnen kann man damit'?
[ ] 20150228
[ ] BIGINT

Hältst Du mich für blöd?

PS: 2.015.228 + 1 = 2.015.229... das weiß selbst mein Hamster.
(Siehst du, das kommt dabei raus, wenn man alles wörtlich nimmt).
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

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

AW: DbGrid Integer-Wert als Datum anzeigen

  Alt 12. Jun 2015, 20:59
PS: 2.015.228 + 1 = 2.015.229... das weiß selbst mein Hamster.
Intelligentes Tier davon könnte ich einen Klon brauchen.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  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 03:28 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