Domino 9 und frühere Versionen > Entwicklung
Problem bei Optionsfeldern
eknori (retired):
@All
Habe ein kleines Problem. Vermutlich ist es einfach zu lösen, aber irgendwie komme ich nicht auf den Dreh.
Folgendes soll passieren
Ich habe eine Maske mit folgendem Aufbau:
Freigabe K: o J o N Datum Freigabe: xx.xx.xxxx
Freigabe T: o J o N Datum Freigabe: xx.xx.xxxx
Bei einem neuen Doc ist J/N leer, also keine Option gewählt und das Datum der Freigabe noch nicht gefüllt.
Die Datumsfelder sind berechnet und enthalten folgende Formel:
@If(KFrei="" | @IsNewDoc;
@If(KFJN="J" | KFJN = "N";@Now;"");
@If(KFJN="J" | KFJN = "N";@Text(@Date(@Now))+" (!)";""))
(entsprechend für TFrei)
Es soll damit erreicht werden, kenntlich zu machen, wenn ein User den Status der Freigabe im Nachhinein geändert hat.
Also: User T gibt das Doc am 22.08.2002 frei; dann enthält Datum Freigabe : 22.08.2002.
Speichert er nun das Document und öffnet es erneut, um den Freigabestatus zu ändern, enthält das Feld naxch der Änderung den Wert 22.08.2002 (!).
Damit ist klar, dass sich hier im Nachhinein etwas geändert hat.
Das Problem ist aber nun, dass sich der Wert in TFreiDatum auch dann ändert, wenn ich in KFrei den Status ändere.
Die Option "Felder bei Schlüsselwort..." ist aktiviert.
Nach der Formel ist das auch logisch; nur, wie bekomme ich das hin, dass sich nur in den zugehörigen Datumsfeld etwas ändert ???
eknori
P.S. Ich hoffe, ich habe nicht zu nuschelig geschrieben
Glombi:
Hi eknori,
eine Lösung wäre Script-Programmierung:
(Declarations)
dim KFreiJN_Alt as string
dim TFreiJN_Alt as string
Postopen:
KFreiJN_Alt = Source.FieldGetText("KFreiJN")
TFreiJN_Alt = Source.FieldGetText("TFreiJN")
Querysave:
if KFreiJN_Alt <> Source.FieldGetText("KFreiJN") then
Source.Document.KFrei = today
end if
KFreiJN_Alt = Source.FieldGetText("KFreiJN")
if TFreiJN_Alt <> Source.FieldGetText("TFreiJN") then
Source.Document.TFrei = today
end if
TFreiJN_Alt = Source.FieldGetText("TFreiJN")
Mit Formelsprache ist das aufwendiger: Du müsstest Hilfsfelder einbauen, die jeweils HINTER den beiden Stati-Feldern und Datums-Feldern stehen, bspw.
KFfreiJNAlt
berechnet, Formel: KFreiJN
analog TFreiJN
Dann im Datumsfeld:
@If(
KFreiJN != KFreiJNAlt;
@Today;
KFrei
)
Gruß
Andreas
eknori (retired):
@Andreas: DANKE, werde ich gleich mal ausprobieren.
CLI_Andreas_Schmidt:
Hi,
vielleicht zum Verständnis. Diese beiden Zeilen könnten auch so aussehen oder:
WENN @If(KFrei="" | @IsNewDoc;
DANN @If(KFJN!="";@Now;"");
SONST @If(KFJN!="";@Text(@Date(@Now))+" (!)";""))
So wie ich das sehe, läuft das Programm, wenn KFRei geändert wird sofort in Zeile "SONST" und steht drin, das wenn KFJA!="" ist das Datum gesetzt werden soll.
Liege ich da richtig ?
Andreas
eknori (retired):
@Andreas
Das ist richtig; das Problem liegt ja darin, dass bei einer nachträglichen Änderung im Feld TFreiJN durch die Aktualisierung bei schlüssewortänderung auch das Datum bei KFrei geändert wird, da ja die SONST Bedingung erfüllt ist.
Ich werde das jetzt mit Script machen, da ich noch mehrere dieser felder habe.
@Gombi
Das funktioniert noch nicht 100%, ist aber ein guter Ansatz.
Da kann ich drauf aufbauen.
eknori
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln