Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: TMC am 13.09.03 - 17:47:43
-
Hi,
ich habe Historienfelder die sich fortschreiben. Typ: Text.
Z.B. wenn Dok sich ändert dann erfolgt folgendes:
@SetField ("Modifier"; Modifier + @NewLine + @Name([CN]; @UserName))
Jetzt steht im Feld "Modifier" z.B. folgendes:
Reiner Unsinn
Hans Dampf
Harald Schmidt
Jetzt will ich per Button eine Box öffnen, in die man einen Namen eintragen kann (z.B. Bill Gates).
Es soll nun Harald Schmidt rausgeworfen werden und stattdessen Bill Gates rein.
Dazu soll eine Formel das Feld "Modifier" bearbeiten.
- nimm den Inhalt des Feld Modifier
- gehe vom Ende aus zum letzten @Newline
- lösche den Text von der aktuell befindlichen Stelle bis zum Ende
- Füge dem Feld den Namen "Bill Gates" hinzu
Ich hab schon mit @Right & co. experimentiert, aber irgendwie komm ich nicht drauf.
Zeilenumbruch (@Newline) wäre doch @Char(13), oder?
Bitte um Hilfe.
Danke
TMC
-
Wenn du eine Aktions-Schaltfläche mit
FIELD Modifier:= @Prompt([OkCancelEdit];"Neuer Name";"Den gewünschten Namen bitte eingeben";"");
@True
hinterlegst, sollte das funktionieren. Der alte Wert wird dann überschrieben.
-
Hi Jojo,
danke, aber ich will ja nicht den alten Wert komplett überschreiben.
Vielmehr soll nur die letzte Zeile ersetzt werden.....
Gruss,
TMC
-
... einfacher wäre es mit einem Mehrfachwerte-Feld zu arbeiten. Dann kannst du mit @Word, @Subset , @IsMember , @Member usw. arbeiten....
... in deinem Fall würde ich den String in eine Liste konvertieren.
vListe := @Implode( String , @Char(13) )
... dann stehen dir wieder alle nützlichen @Commands zur Verfügung, die ich oben bereits erwähnte...
... mit @ReplaceSubstring gibt es auch noch Möglichkeiten - mehr dazu findest du in der Notes-Hilfe...
ata
-
Hi ata,
OK, angenommen ich habe meine Modifier-Liste mit @Implode bearbeitet.
Wie bekomme ich nun den "Harald Schmid" raus?
Denn daran scheitere ich noch.....
"Suche" nach "Harald Schmid" bringt nichts, da der Wert variabel ist. Es könnte dort auch "Albert Einstein" stehen.... Eben der letzte Eintrag soll raus und mit einem angegebenem ersetzt werden.
TMC
-
Hi,
auswechseln des letzten Wertes geht so:
_ModifierListe := @Explode(Modifier;@Newline);
_ModifierOhneLetztenEintrag :=
@If(
@Elements(_ModifierListe) < 2;
"";
@Subset(_ModifierListe;@Elements(_ModifierListe) - 1)
);
REM "Neuen Wert dranhängen";
FIELD Modifier :=
@If(
_ModifierOhneLetztenEintrag = "";
"Bill Gates";
@Implode(_ModifierOhneLetztenEintrag : "Bill Gates;@Newline)
);
@True
Andreas
-
... ich habe da einen grvierenden Fehler drin - mit @Implode erstelle ich aus einer Liste einen String - es muß natürlich @Explode heißen...
... mit
@Subset( vListe ; @Elements( vListe ) - 1 )
... erhälst du alle Mitglieder, ausser dem letzten, den neuen hängst du noch an
@Subset( vListe ; @Elements( vListe ) - 1 ) : "der neue Name"
.. das müsste es sein...
ata
-
Hi,
ich danke Euch :)
Ich hab jetzt eine Kombination aus ata's und Glombi's Hilfe genommen.
Klappt wunderbar.
cu,
TMC