Autor Thema: @SetField bei Wertänderung  (Gelesen 4529 mal)

Offline Kiezkicker

  • Junior Mitglied
  • **
  • Beiträge: 60
@SetField bei Wertänderung
« am: 05.04.06 - 14:05:54 »
Hallo,

ich möchte per @SetField einen Feldwert ändern, wenn in einem bestimmten Feld der Wert geändert wird. Meine Idee war die @-Formel im onChange unterzuringen, allerdings ist hier ja nur Lotus Script möglich, was ich nicht beherrsche. Wäre jemand so nett untenstehende Formel in Lotus Script umzusetzen? Oder (noch besser) gibt es eine Möglichkeit mit der @-Formel an anderer Stelle/auf andere Weise gleiches zu erreichen?

Danke im Voraus

Offline dirk_2909

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.173
  • Geschlecht: Männlich
  • Expand your Notes Client with ECM functionality..
    • d.velop
Re: @SetField bei Wertänderung
« Antwort #1 am: 05.04.06 - 14:19:08 »
Hallo

Welche "Untenstehende Formel" ?

Du kannst eine @Formula in der eingabumsetzung des Feldes einsetzen, dass sich ändert, um das Andere Feld zu ändern:

Bsp.:
_x := @ThisValue ;
Field dasAndereFeld := @if( _x = "XYZ" ; "neuer Wert" ; dasAndereFeld ) ;
_x

Dirk
Dirk

[IBM CLP R5]
[IBM CAD 6/6.5]
[IBM CAD 7]
[IBM CAD 8]


"Nein!! … Es genügt nicht Mails in einen anderen Ordner oder Datenbank zu verschieben, um sie zu archivieren!"

   
Disclaimer:
Ich Antworte nach besten Wissen und Gewissen. Sollte sich jemand durch meine Antwort persönlich angegriffen fühlen, ist dies nicht meine Absicht!
Ich bin auch nur ein Mensch, der Fehler machen kann. ....

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: @SetField bei Wertänderung
« Antwort #2 am: 05.04.06 - 14:26:36 »
Die Scriptversion für das OnChange-Event:


Sub Onchange(Source As Field)
   
  Dim ws As New NotesUIWorkspace
  Dim uidoc As NotesUIDocument
     
  Set uidoc = ws.CurrentDocument
  If uidoc.FieldGetText("DaszuprüfendeFeld") = "Test" Then
    Call uidoc.FieldSetText("DaszuänderndeFeld", "Das ist ein Test")
  End If
   
End Sub


Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline Kiezkicker

  • Junior Mitglied
  • **
  • Beiträge: 60
Re: @SetField bei Wertänderung
« Antwort #3 am: 05.04.06 - 16:17:27 »
Sorry..... hatte die Formel vergessen:

FIELD Pruefung := Pruefung;

GSTkurz := @Word(GS ;" "; 2);
GST := "#GS " + GSTkurz;

@SetField("Pruefung"; @Text( @DbLookup("":"no cache";"Server":"names.nsf"; "($VIMPeopleAndGroups)"; GST; 8)))

Mit der Eingabeumsetzung habe ich es probiert, allerdings wurde jeweils der Wert des Feldes, dessen Wert das SetField auslösen soll mit dem Inhalt gefüllt, den das Feld Pruefung bekommen sollte.

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: @SetField bei Wertänderung
« Antwort #4 am: 05.04.06 - 16:46:02 »
Mit der Eingabeumsetzung habe ich es probiert, allerdings wurde jeweils der Wert des Feldes, dessen Wert das SetField auslösen soll mit dem Inhalt gefüllt, den das Feld Pruefung bekommen sollte.

Tja, dann hast Du einen Codefehler. Und ohne Deinen Code können wir auch nix dazu sagen ...

Bernhard

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: @SetField bei Wertänderung
« Antwort #5 am: 06.04.06 - 09:11:53 »
der Fehler ist ganz einfach:

die Eingabeumsetzung erwartet am Ende einen neuen Wert für das Feld, in dem sie steht.

Einfach an den vorhandenen code eine Zeile mit

@ThisValue

anhängen, schon ist der Kittel geflickt, in dem geposteten Code wird as Feld immer auf das Ergebnis der Formel

@SetField("Pruefung"; @Text( @DbLookup("":"no cache";"Server":"names.nsf"; "($VIMPeopleAndGroups)"; GST; 8)))

gesetzt, und das Ergebnis ist ... keine Ahnung, was @Setfield als Rückgabewert liefert, auf jeden Fall nix gescheites.

HTH
Tode
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline Kiezkicker

  • Junior Mitglied
  • **
  • Beiträge: 60
Re: @SetField bei Wertänderung
« Antwort #6 am: 06.04.06 - 11:30:13 »
Einfach an den vorhandenen code eine Zeile mit
@ThisValue
anhängen, schon ist der Kittel geflickt

Genau so war es. Besten Dank

Offline Kiezkicker

  • Junior Mitglied
  • **
  • Beiträge: 60
Re: @SetField bei Wertänderung
« Antwort #7 am: 06.04.06 - 15:39:50 »
Die SetField-Formel funktioniert nun ja. Durch diese Formel werden alle Mitglieder einer bestimmten Gruppe im Adressbuch abgefragt und in das Feld Pruefung geschrieben. Anschließend wollte ich das Feld Prüfung für eine Eingabevalidierung benutzen:
Es sollte geprüft werden, ob der jeweilige Benutzer überhaupt Mitglied der ausgewählten Abteilung ist.

Formel:
@If(Abt = "" ;
         @Failure("Bitte eine Abteilung auswählen!");
         Pruefung = @UserName;
            @Failure("Sie sind nicht berechtigt eine Bestellung für diese Abteilung auszuführen!");
                @Success
       )

Obwohl ich nicht Mitglied der entsprechenden Abteilungsgruppe bin bekomme ich allerdings keine Fehlermeldung.
Anfangs habe ich es mit  @Contains(@UserName) versucht, was den gleichen Effekt hatte.
Woran könnte das liegen?

Oder sollte man vielleicht das Auslesen der Adressbuchgruppe sein lassen und besser jeder Abteilung eine Rolle zuweisen, die kontrolliert wird?

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: @SetField bei Wertänderung
« Antwort #8 am: 06.04.06 - 15:58:39 »
Code
Pruefung = @UserName
Das macht doch nun gar keinen Sinn: In Prüfung hast Du eine LISTE von Gruppenmitgliedern. Die kann ja nun (fast) nie dem aktuellen Usernamen entsprechen. Ausserdem brauchst Du die Negation:
!@IsMember (@UserName, Pruefung)

Bernhard

Offline Kiezkicker

  • Junior Mitglied
  • **
  • Beiträge: 60
Re: @SetField bei Wertänderung
« Antwort #9 am: 06.04.06 - 16:48:44 »
Das hast du wohl Recht, hab ich im Nachhinein auch gemerkt. Hab jetzt mit Rollen und dem Befehl !@IsMember ([..]; @UserRoles) das Problem gelöst.

Danke

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: @SetField bei Wertänderung
« Antwort #10 am: 06.04.06 - 18:11:20 »
ähmmm... @Bernhard: Kann es sein, dass Du in letzter Zeit etwas neben Dir stehst ?  ;)

Ich weiss nicht, wie es in Deinem Notes aussieht, aber bei mir liefert

liste = einzelWert schon seit jeher "True", wenn der einzelWert in der Liste steht.

Wichtig zu wissen ist dabei nur:
Die Negierung funktioniert anders:

liste != einzelWert ist genau dann True, wenn in der Liste auch nur ein Wert ist, der nicht dem Einzelwert entspricht.

!(liste = einzelWert) ist genau dann True, wenn einzelWert nicht in der Liste vorkommt...

in dem unten genannten Beispiel müsste es also heissen: !(Pruefung = @UserName)

Gruß
Tode
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz