Domino 9 und frühere Versionen > ND7: Entwicklung

Frage zu einer Schleife

(1/2) > >>

Bruce Willis:
Hallo,

könnte man mit einer Formel-Schleife das Folgende tun?

Es gibt eine Maske mit 10 sichtbaren Text-Feldern für Kommentare der Benutzer.
Komment_1 ... Komment_10

Es gibt noch 10 versteckte Felder, wo der vorherige Inhalt der sichtbaren Felder gespeichert ist:
Komment_1_1 ... Komment_1_10

Beim Speichern des Dokuments werden alle Änderungen in die History geschrieben.
Zehnmal eigentlich dasselbe:

newEntry :=   Komment_1 ;
@If( Komment_1  != Komment_1_1 ; @Do (
@SetField("History"; @NewLine + newEntry +  History ) ;
@SetField("Komment_1_1" ; Komment_1  )
);  @Success );

....

newEntry :=   Komment_10 ;
@If( Komment_10  != Komment_1_10 ; @Do (
@SetField("History"; @NewLine + newEntry +  History ) ;
@SetField("Komment_1_10" ; Komment_10  )
);  @Success );

Für eine Idee wäre ich sehr dankbar.

Gruß
Leo

koehlerbv:
Willst Du den Stunt wirklich in Formelsprache machen? Nicht wirklich, oder? Nimm LotusScript.

Zehn Kommentarfelder (das ist starr!) und dazu zehn zur Historie und dann noch ein History Field itself - das klingt auch nicht nach der architektonischen Weisheit letzter Schluss. Aber für wirkliches Urteil weiss ich natürlich zu wenig über Deine Anwendung.

Schleifen kannst Du per Formeln bauen, auch ein @SetField kann damit bedient werden. Für Deine "Komment"-Items müsstest Du aber von hinten durch die Brust wieder das aktuelle Dokument auslesen - nö, das ist weder schön noch rationell.

Wie gesagt: Nimm LotusScript. Dann wird es ein übersichtlicher Wenigzeiler.

Bernhard

Werner Götz:
Ob nun das Ganze sinnvoll ist, kann ich nicht beurteilen, ich denke aber, die Formeln kann man mit einer Schleife ersetzen.
-Werner

@For( i := 1; i <= 10; i := i + 1;
  iText := @Text(i);
  newEntry :=  @GetField("Komment_" + iText);
  @If( newEntry  != @GetField("Komment_1_" + iText );
    @Do (
      @SetField("History"; @NewLine + newEntry +  History ) ;
      @SetField("Komment_1_" + iText ; newEntry  )
    );
    ""
  )
);

Bruce Willis:
Hallo Bernhard,

Danke für Dein schnelles Feedback.


--- Zitat von: koehlerbv am 04.02.09 - 00:30:34 ---Zehn Kommentarfelder (das ist starr!) und dazu zehn zur Historie und dann noch ein History Field itself - das klingt auch nicht nach der architektonischen Weisheit letzter Schluss.

--- Ende Zitat ---
Wie würdest Du etwas ähnliches (egal was) FLEXIBEL realisieren?  :)



--- Zitat von: koehlerbv am 04.02.09 - 00:30:34 ---weiss ich natürlich zu wenig über Deine Anwendung.

--- Ende Zitat ---

Es geht um ein Formular (unter anderem eine Tabelle mit 10 Zeilen und mehreren Spalten). Eine der Spalten ist für Kommentare vorgesehen.
Die Formulare werden von mehreren Leuten bearbeitet.
Man möchte - unter anderem - wissen, wann, wer und was eingetragen, geändert oder gelöscht hat.

Gruß
Leo

Bruce Willis:

--- Zitat von: Werner Götz am 04.02.09 - 08:09:53 ---Ob nun das Ganze sinnvoll ist, kann ich nicht beurteilen, ich denke aber, die Formeln kann man mit einer Schleife ersetzen...


--- Ende Zitat ---

Hallo Werner,

VIELEN DANK       :knuddel:

für Deine schnelle Antwort und tolle Lösung !!!

Gruß
Leo

--------

WannWer := @Text(@Now;"D0T1") + " - " + @Name( [CN] ; @UserName ) ;

@For( i := 1; i <= 10; i := i + 1;
  iText := @Text(i);
  newEntry :=  WannWer +  ", zum " + iText + ".Kommentar: " + @GetField("Komment_" + iText);
  newValue := @GetField("Komment_" + iText);
  oldValue := @GetField("Komment_1_" + iText);
  @If( newValue  != oldValue ;
    @Do (
      @SetField("History"; @NewLine + newEntry +  History ) ;
      @SetField("Komment_1_" + iText ; newValue  )
    );
    ""
  )
);

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln