Anmelden

View Full Version : Datumsfeld *EUR im Bildschirm editieren



hartmuth
01-07-11, 17:01
Hallo

Habe mit Problem schon ein paar Stunden zugebracht .

Vielleicht weiß es jemand

In Tabelle ist das Feld im europ. Datumsformat definiert

FixTermin
A FIXTERM L DATFMT(*EUR)

Standardmäßig mit Tagesdatum belegt (funktioniert ncoh klaglos)
WrkDate S D DATFMT(*EUR)
TimeStamp S Z
MOVE TimeStamp WrkDate
MOVE WrkDate X1FixTerm

In Eingabe-Maske kann dieses Format überarbeitet werden
A X1FIXTERM 8Y 0B 15 50EDTWRD(' . . ')
A EDTMSK(' & & ')

Bei Übergabe an Dateiformat kommt jedoch Fehler-Meldg. bzlg. ungütligem Datumsformat - kann es im Dump offenbar nicht wirklcih darstellen

MOVE X1FixTerm RKFixTerm

VIelen Dank für einen guten Tip

Fuerchau
01-07-11, 17:07
Du kannst ein numerisches Feld nicht in ein Datumfeld übertragen.

Definiere das DDS-Feld doch auch als Datum.

Ansonsten musst du die Eingabe editieren und dann ins Datumfeld übertragen:

Datum->Zahl
%dec(%char(FixTerm:*eur0):8:0)

Zahl -> Datum
%date(%editw(x1fixterm:'0__.__.____'))

Statt Unterstriche eben Leerzeichen.

hartmuth
01-07-11, 18:04
Hallo

Super, eine so rasche Rückmelg.

Aus irgend einem verrückten Grund besteht Problem noch immer

%date(%editw(x1fixterm:'0__.__.____'))

Lt. Debug ist im numerischen Feld erwartungsgemäß
01072011

Die Konvertierg. kann ich im Debugger nicht darstellen

Bin ratlos.
Irgendwas läuft das schief, wie ich kann ich an Lösung herankommen?
Wahrscheinlich auch mal drüberschlafen...

Fuerchau
01-07-11, 18:13
Ich denke, da der Default für %date *ISO ist musst du in den H-Bestimmungen DATFMT(*ISO) angeben.

Wie gesagt, wenn du in der DSPF ein L-Feld definierst, brauchst du dich im Programm nicht mehr darum kümmern.

hartmuth
02-07-11, 09:40
Ich habe das Datum nun mit Feldart L definiert, jetzt ist es aber am Bildschirm gesperrt. Benutzer soll ja selbst Fixtermin festlegen können. Anderseits möchte ich in weiterer Verarbtg. Vorteile der Datumsfelder nutzen können.
Ich denke an *EUR-Format.:mad:

hartmuth
02-07-11, 09:56
Hallo, nochmals

Ich bewundere, wie in diesem Forum schnell und passend geantwortet wird. Einzig ich habe es fertig gebracht, mein Problem noch nicht lösen zu können.:mad:

Habe wieder auf maskiertes Feld zurückgesetzt, um es editierbar zu machen

BS-Format:
A X1FIXTERM 8Y 0B 15 50EDTWRD(' . . ')
A EDTMSK(' & & ')

Es geht um diese Anweisung:
C EVAL RKFixTerm =
C %date(%editw(x1fixterm:'0 . . '))

Header wurde angepaßt:
H DECEDIT('0,') DATEDIT(*YMD/) DATFMT(*EUR) TIMFMT(*HMS)

Jetzt sollte sich der Fall doch lösen lassen

hartmuth
02-07-11, 10:19
Offenbar ist Fall jetzt auch gelöst:
In Header-Zeile , wie oben beschrieben, Datumsformat angegeben und dann ohne Editierung den num. Wert aus BS-Maske in das Datums-DB-Feld übertragen.

Danke für die prompte:D Unterstützung.