Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   TDatefield, nur Jahreszahl anzeigen und übergeben (https://www.delphipraxis.net/202499-tdatefield-nur-jahreszahl-anzeigen-und-uebergeben.html)

Trafel21 11. Nov 2019 10:20

Datenbank: firebird • Version: 2.5 • Zugriff über: Delphi XE

TDatefield, nur Jahreszahl anzeigen und übergeben
 
Hallo zusammen,

ich hab gerade ein verzwicktes Problem. Ich hab in der Datenbank ein DATE Feld welches ich nicht in ein Integer-Feld umändern kann.
Ich möchte über DBEditbox in Delphi nur die Jahreszahl übergeben und auch nur darstellen. in der Datenbank sollte dann 01.01."2018" gespeichert werden.

In Delphi (DataSet) ist es wie folgt definiert:
IBANSCHAFFUNGSDATUM: TDateField;

Würdet ihr die Logik in einen Trigger schreiben? oder in Delphi das 01.01. hinzufügen? Ich hab schon mehreres versucht. SetText, OnChange... irgendwie funktioniert nichts so wirklich.
Vielleicht gibt es einen eleganteren Weg, den ich noch nicht kenne? x.x

mkinzler 11. Nov 2019 10:29

AW: TDatefield, nur Jahreszahl anzeigen und übergeben
 
Nimm doch einfach eine normales Editfeld und formatiere die Anzeige.

p80286 11. Nov 2019 11:08

AW: TDatefield, nur Jahreszahl anzeigen und übergeben
 
Zitat:

Zitat von Trafel21 (Beitrag 1451142)
Ich hab in der Datenbank ein DATE Feld welches ich nicht in ein Integer-Feld umändern kann.

Warum kannst Du das nicht?
Wird das Feld durch eine andere Anwendung mi einem vollständigen Datum genutzt?
Kennt deine DB "ALTER" nicht?

Und ansonsten sollte man tunlichst die Finger von DB-Komponenten lassen, vor allem wenn man Anforderungen hat, die etwas abseits des Mainstreams liegen.

Gruß
K-H

Trafel21 11. Nov 2019 11:15

AW: TDatefield, nur Jahreszahl anzeigen und übergeben
 
Zitat:

Zitat von p80286 (Beitrag 1451146)
Zitat:

Zitat von Trafel21 (Beitrag 1451142)
Ich hab in der Datenbank ein DATE Feld welches ich nicht in ein Integer-Feld umändern kann.

Wird das Feld durch eine andere Anwendung mi einem vollständigen Datum genutzt?

Genau deswegen. :/

Zitat:

Zitat von mkinzler (Beitrag 1451144)
Nimm doch einfach eine normales Editfeld und formatiere die Anzeige.

Werde ich mal so versuchen, vielen dank. :)

dataspider 11. Nov 2019 12:35

AW: TDatefield, nur Jahreszahl anzeigen und übergeben
 
Ich würde hier in der DB einen View anlegen.

Ein berechnetes Feld
extract(year from fibanschaffungsdatum) as fibanschaffungsjahr...
...und das Schreiben im before update trigger der View.

Dann hast du im Dataset ein Interger - Feld und kannst dir das ganze Gefummel in Delphi sparen...:)

Frank

Trafel21 11. Nov 2019 13:18

AW: TDatefield, nur Jahreszahl anzeigen und übergeben
 
Zitat:

Zitat von dataspider (Beitrag 1451148)
Ich würde hier in der DB einen View anlegen.

Ein berechnetes Feld
extract(year from fibanschaffungsdatum) as fibanschaffungsjahr...
...und das Schreiben im before update trigger der View.

Dann hast du im Dataset ein Interger - Feld und kannst dir das ganze Gefummel in Delphi sparen...:)

Frank

vielen Dank!

Wäre es evtl. auch mit einem weiteren FEld möglich? Sowas wie

ALTER TABLE STAMM
ADD HERSTELLUNGSDATUM_JAHR COMPUTED BY ((EXTRACT(YEAR FROM STAMM.HERSTELLUNGSDATUM ))

... und im IB Stamm das schreiben mit update trigger ?

dataspider 11. Nov 2019 14:37

AW: TDatefield, nur Jahreszahl anzeigen und übergeben
 
Zitat:

Zitat von Trafel21 (Beitrag 1451151)
Wäre es evtl. auch mit einem weiteren FEld möglich? Sowas wie

ALTER TABLE STAMM
ADD HERSTELLUNGSDATUM_JAHR COMPUTED BY ((EXTRACT(YEAR FROM STAMM.HERSTELLUNGSDATUM ))

... und im IB Stamm das schreiben mit update trigger ?

Das mit dem Trigger funktioniert auf berechente Felder der Tabelle leider nicht.
Geht IMO nur über View...

Frank


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:50 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