Domino 9 und frühere Versionen > Entwicklung

Problem bei Optionsfeldern

(1/2) > >>

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