PDA

View Full Version : Datumsfeld in PF und DSPF



Seiten : [1] 2

GutmannHGW
02-04-08, 07:57
Hallo

habe folgendes Problem:

Wenn ich in der Datenbank ein Datumsfeld mache mit

A DV22KAUFDT L TEXT('KAUFDATUM JJJJMMTT')
hat es die Formatierung JJJJ-MM-TT

Wenn ich dann in der Displayfile ein Zahlenfeld mache u. im Editcode ein "Y" vergebe hat es aber "TT.MM.JJJJ".
Wie bekommt man dieses mapping hin dass ich es trotzdem in die Datenbank schreiben kann?
Ich habe "W" als Editcode probiert, dann ist auch die Formatierung beginnend Jahr, Monat, Tag - aber so will ich es eigentlich nicht und für den Benutzer ist es schöner es "normal"-Deutsch zu sehen.

Kann ich das im Displayfile hinkriegen oder muss ich im RPG Code das ändern?

Gruß!

Fuerchau
02-04-08, 08:01
Das bekommst du nur über eine RPG-Konvertierung hin.

Ggf. kannst du auch in der DSPF das Datumsformat *EUR eintragen, dann ist die Eingabe TT.MM.JJJJ, bleibt aber 8/10-stellig.

GutmannHGW
02-04-08, 08:16
Wo genau trage ich das *EUR ein?

Habe im "Menü" von "Feld-Schlüsselwörter auswählen" dieses Eingabefeldes gesucht, aber nichts gefunden wo man dieses Datumsformat eingeben hätte können.

Pikachu
02-04-08, 08:20
Probier' mal DATFMT(*JOB) DATSEP(*JOB) (http://publib.boulder.ibm.com/iseries/v5r1/ic2929/info/rzakc/rzakcmst59.htm#HDRDFDATSEP) in der Bildschirmdatei.

GutmannHGW
02-04-08, 08:47
Hi - du meintest die PF ? in der Bildschirmdatei konnte ich es nicht eintragen, wohl aber in der PF


DATFMT(*JOB) DATSEP(*JOB)

hat bei mir folgende Formatierung bewirkt:

KAUFDATUM: 01.01.40

ich habe es dann auf

DATFMT(*EUR)

geändert u. es hatte flg. Formatierung

KAUFDATUM: 01.01.0001

Scheint ganz gut zu klappen. Danke euch beiden - vor allem der Link war ziemlich hilfreich Pikachu - sonst hätte ich nicht gewusst wo ich es eintragen muss.

GutmannHGW
02-04-08, 09:18
Was ich jetzt festellen musste, im SDA konnte ich das gar nicht ändern mit dem Datentyp "L"
ich musste die Bildschirmmaske mit "2 - Editieren" öffnen u.

A W02KAUFDT L B 12 74DATFMT(*EUR)
eintragen.

Was mir noch auffiel, die Prüfungen ob es *BLANKS oder *ZEROS ist funktioniert nicht mehr - gibt es überhaupt eine Prüfung ob es null ist bzw. ist das dann überhaupt noch notwendig?


EDIT1:
Jetz fällt mir auf Pikachu, ich hätte es gleich in der Bildschirmdatei ändern können, ohne es in der PF ändern zu müssen oder?
In der PF würde vermutlich nur "L" reichen - in der DSPF muss ich dann noch die richtige DATFMT angeben?

Ist es möglich dem Feld auch einen Standardwert *TODAY zu geben?

GutmannHGW
02-04-08, 09:41
sry für die vielen Fragen, aber noch eine =)

FIELD3 3D 0O 12 09DFTVAL('000')

das hab ich gefunden zum Thema Default-Value.

Klappt soweit wunderbar, bloß in dem Fall eines Datumsfeldes tue ich mich hier etwas schwer, u. zwar das das aktuelle Tagesdatum angezeigt werden soll.

habe schon mit DATE(*SYS) zwischen den klammern probiert, geht aber anscheinend nicht ;(

Fuerchau
02-04-08, 11:03
DATE(*SYS) ist eine reine Ausgabefunktion.
Wenn du einen Default haben willst, musst du das halt im Programm machen:

if MyDate = *loval;
MyDatei = %date();
endif;
exfmt MyDspFmt;

In der DSPF kannst du natürlich auch DATFMT eintragen.

Das kleinste datum(*LOVAL) ist eben der 01.01.0001.
Oder du musst ALWNULL in der PF erlauben und mit

if %nullind(MyDate) <> *zero;
MyDate =%Date();
endif;

Mit
%nullind(MyDate)=-1;
kannst du den NULL-Wert auch setzen.

GutmannHGW
02-04-08, 14:33
Super - klappt alles - danke!

Aktuelle Datum versorge ich jetzt mit



C EVAL W02KAUFDT=%DATE()


So ist das Datum in dem Eingabefeld immer schon auf einen Wert gelegt

BenderD
02-04-08, 18:37
Create table und current_date sind deine Freunde

D*B



Ist es möglich dem Feld auch einen Standardwert *TODAY zu geben?