Autor Thema: Optionsfeld: Wert prüfen und ggf. ersetzen  (Gelesen 6254 mal)

Offline Klafu

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.944
  • Geschlecht: Männlich
  • Remember the Cookies!
Optionsfeld: Wert prüfen und ggf. ersetzen
« am: 17.08.15 - 12:25:04 »
Hallo,

es ist bestimmt leicht aber ich muss nachhaken:
Ich habe in einer Maske ein Optionsfeld mit 5 Auswahlmöglichkeiten. Nun, nach langer Zeit kommt die Anforderung, diese Auswahlmöglichkeiten zu überarbeiten. Eine Möglichkeit soll wegfallen, zwei andere zusammengelegt werden.

Ich dachte, der leichteste Weg ist in den Optionen des Feldes die Auswahmöglichkeiten zu ändern und um in den bestehenden Dokumente ein leeres Feld vorzubeugen, einfach über @If(Feldname="AlteAuswahlmöglichkeit";"NeueAuswahlmöglichkeit";Feldname) als "Vorgabewert" zu gehen. Bei normalen Feldern ging das auch immer. Nur habe ich hier im Optionsfeld nun eine Textliste und finde gerade nicht den passenden Weg, den ausgewählten Wert zu ermitteln und ggf. dafür einen neuen anzeigen zu lassen.

Habt ihr mir einen kurzen Denkanstoß, wie ich das via Feld-Formel löse?

Chris
„Der einzige Mensch, der sich vernünftig benimmt, ist mein Schneider. Er nimmt jedesmal neu Maß, wenn er mich trifft, während alle anderen immer die alten Maßstäbe anlegen in der Meinung, sie paßten auch heute noch...“

Offline Keydins

  • Aktives Mitglied
  • ***
  • Beiträge: 163
  • Geschlecht: Männlich
Re: Optionsfeld: Wert prüfen und ggf. ersetzen
« Antwort #1 am: 17.08.15 - 12:43:26 »
Wäre es in so einem Fall nicht sinnvoller, das sauber über einen Migrationsagenten laufen zu lassen, der den bestehenden Inhalt prüft und bei Bedarf den wegfallenden Wert ggf. durch ein "Bitte Überprüfen!" ersetzt und in dem anderen Fall die Zusammenlegung der Werte umsetzt?

Gruß Dirk
Gruß Dirk

Aktuelle Notesumgebung
~800 BasicClients 9.0.1 FP9 SHF55
  10 FullClients 9.0.1 FP7 SHF143
    7 DominoServer 9.0.1 FP9 HF 139 / 64 Bit

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Optionsfeld: Wert prüfen und ggf. ersetzen
« Antwort #2 am: 17.08.15 - 13:59:49 »
Also, Deine Auswahlliste (alt) sei:

Alt1
Alt2
Alt3
Alt4
Alt5

Alt1 soll wegfallen, und aus Alt2 und Alt3 soll Neu1 werden. Soweit richtig?

Versuche mal sowas (vielleicht kann man das zweite "Neu1" weglassen, müsste man ausprobieren)

@Trim (@Unique (@Replace (Feldname; "Alt1" : "Alt2" : "Alt3"; "" : "Neu1" : "Neu1")))

Offline Klafu

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.944
  • Geschlecht: Männlich
  • Remember the Cookies!
Re: Optionsfeld: Wert prüfen und ggf. ersetzen
« Antwort #3 am: 17.08.15 - 15:55:37 »
Hallo Peter,
das ist genau dass, was ich machen möchte.
Danke für die Formel. Nur leider bleibt das Optionsfeld leer wenn davor "Alt1","Alt2" oder "Alt3" ausgewählt war und diese Optionen nicht mehr Verfügbar sind.

Hallo Dirk,
das mit einem Agenten ist auch eine Möglichkeit. Ich wollte es aber im ersten Schritt auf diesem Weg probieren.
Wahrscheinlich werde ich da aber nicht drum herum kommen.

Chris
„Der einzige Mensch, der sich vernünftig benimmt, ist mein Schneider. Er nimmt jedesmal neu Maß, wenn er mich trifft, während alle anderen immer die alten Maßstäbe anlegen in der Meinung, sie paßten auch heute noch...“

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Optionsfeld: Wert prüfen und ggf. ersetzen
« Antwort #4 am: 17.08.15 - 16:31:02 »
Du meinst, dass die Werte Alt2 und Alt3 nicht übersetzt werden, weil die nicht mehr auswählbar sind?

Erweitere doch mal die Auswahlliste um die (früher) getroffene Auswahl, vielleicht hilft das.

Deine neue Auswahlliste ist (nach meinem Beispiel)

Neu1
Alt4
Alt5

diese Liste verlängerst um die Werte aus Feldname

@Trim (@Unique ("Neu1" : "Alt4" : "Alt5:" : Feldname))

Offline DominoDancing

  • Aktives Mitglied
  • ***
  • Beiträge: 141
  • Geschlecht: Männlich
  • Kugel im Käfig, lsmf, hurz ...
Re: Optionsfeld: Wert prüfen und ggf. ersetzen
« Antwort #5 am: 18.08.15 - 08:19:19 »
Hallo Chris,

das kann man natürlich auf verschiedenste Art und Weise lösen, je nachdem, was erreicht werden soll. Du kannst auch einfach Deine neue Auswahl im Optionsfeld hinterlegen und Deine "alten" Werte im QueryOpen und QueryModeChange der Maske in die "neuen" Werte übersetzen. Vielleicht etwa so (hier am Beispiel QueryOpen):

Sub Queryopen(Source As Notesuidocument, Mode As Integer, Isnewdoc As Variant, Continue As Variant)
   If Source.EditMode = True Then 'nur im Bearbeiten-Modus
      Set doc = Source.Document 'verwende das aktuelle Dokument
      Select Case doc.Optionsfeld(0) 'Zuordnung abweichender neuer Werte zu altem Wert
         Case "AlteAuswahlmöglichkeit1": doc.Optionsfeld = "NeueAuswahlmöglichkeitA" 'Alt1 -> NeuA
         Case "AlteAuswahlmöglichkeit2": doc.Optionsfeld = "NeueAuswahlmöglichkeitB" 'Alt2 -> NeuB
         ... 'usw.usf.etc.lsmf
      End Select
   End If
End Sub

Somit werden aber nur diejenigen Dokumente geändert, die auch tatsächlich "neu" bearbeitet und gespeichert werden. Sinnvoll wäre hier, ggf. alle Dokumente per Prozess (Agent), derart mit den aktuellen Werten zu belegen.

Liebe Grüße
René
... ich fühl' mich so ... Regenbogen ... ;D
... man muss die Ursache des Problems finden ... oder eine Tüte Glitzerfeenstaub ...
... Ich bin rhythm, I'm a dancer und I don't like Influenzer ...

Offline Klafu

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.944
  • Geschlecht: Männlich
  • Remember the Cookies!
Re: Optionsfeld: Wert prüfen und ggf. ersetzen
« Antwort #6 am: 19.08.15 - 08:51:01 »
Hallo Peter,

leider will das nicht funktionieren. Entweder zeigt er mir die drei leeren Auswahlfelder oder mir werden alle 5 Auswahlkriterien gezeigt.

Ich werde nun den ordentlichen Weg gehen und alle betroffenen Felder automatisch Ändern.

Hallo Renè,
Danke für den interessanten Vorschlag!


Vielen Dank euch allen  :D

Chris
„Der einzige Mensch, der sich vernünftig benimmt, ist mein Schneider. Er nimmt jedesmal neu Maß, wenn er mich trifft, während alle anderen immer die alten Maßstäbe anlegen in der Meinung, sie paßten auch heute noch...“

Offline gstueb

  • Aktives Mitglied
  • ***
  • Beiträge: 125
  • Geschlecht: Männlich
  • God is real unless declared integer
Re: Optionsfeld: Wert prüfen und ggf. ersetzen
« Antwort #7 am: 19.08.15 - 14:24:55 »
Hallo Chris,

wenn dein Ergebnisfeld vom Typ "Textliste" ist, hast du in der Maske kein Optionsfeld verwendet, sondern z.B. "Kontrollkästchen" als Feldtyp. In dem Fall kannst du das alte Feld nicht mit

Code
@If(Feld="xxx";dann;sonst)

abfragen, sondern du musst prüfen, ob das Feld einen gewissen Wert enthält:

Code
@If(@IsMember(Feld;"xxx");dann;sonst)

Ich empfehle ebenfalls einen Umstellungsagenten zu basteln.

Grüße,
Gregor

Hallo,

es ist bestimmt leicht aber ich muss nachhaken:
Ich habe in einer Maske ein Optionsfeld mit 5 Auswahlmöglichkeiten. Nun, nach langer Zeit kommt die Anforderung, diese Auswahlmöglichkeiten zu überarbeiten. Eine Möglichkeit soll wegfallen, zwei andere zusammengelegt werden.

Ich dachte, der leichteste Weg ist in den Optionen des Feldes die Auswahmöglichkeiten zu ändern und um in den bestehenden Dokumente ein leeres Feld vorzubeugen, einfach über @If(Feldname="AlteAuswahlmöglichkeit";"NeueAuswahlmöglichkeit";Feldname) als "Vorgabewert" zu gehen. Bei normalen Feldern ging das auch immer. Nur habe ich hier im Optionsfeld nun eine Textliste und finde gerade nicht den passenden Weg, den ausgewählten Wert zu ermitteln und ggf. dafür einen neuen anzeigen zu lassen.

Habt ihr mir einen kurzen Denkanstoß, wie ich das via Feld-Formel löse?

Chris

Offline Klafu

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.944
  • Geschlecht: Männlich
  • Remember the Cookies!
Re: Optionsfeld: Wert prüfen und ggf. ersetzen
« Antwort #8 am: 19.08.15 - 15:57:48 »
Ja, wie gesagt werde ich die Feldwerte via Agent umschreiben lassen.

Und ein Feld vom Typ Optionsfeld macht bei mir durchaus Textlisten  ;)

Gruß
Chris
„Der einzige Mensch, der sich vernünftig benimmt, ist mein Schneider. Er nimmt jedesmal neu Maß, wenn er mich trifft, während alle anderen immer die alten Maßstäbe anlegen in der Meinung, sie paßten auch heute noch...“

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Optionsfeld: Wert prüfen und ggf. ersetzen
« Antwort #9 am: 19.08.15 - 16:05:23 »
Notes-Items sind immer Listen (ok, nicht Richtext...), ein Optionsfeld kann aber keine Mehrfachwerte erzeugen, wie auf Deinem Screenshot gezeigt. Mehrfachwerte ist nicht angehakt und grau, kann also auch nicht angehakt werden. Und in Deinem Beispiel ist auch nur ein einzelner Wert angegeben. Also sollte der einfache Weg, den Du ursprünglich als nicht möglich bezeichnet hattest, schon gehen. Vermutlich liegt die Ursache des aufgetretenen Verhaltens ganz woanders?

Offline Klafu

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.944
  • Geschlecht: Männlich
  • Remember the Cookies!
Re: Optionsfeld: Wert prüfen und ggf. ersetzen
« Antwort #10 am: 20.08.15 - 14:59:43 »
Ja, ich dachte eigentlich auch dass es simpel geht. Leider finde ich aber gerade nichts, was mir hier dagegen spielen könnte.  :-\


Aber mit einem Agent ist das ganze schlussendlich auch ordentlicher gelöst.  :)

Chris
„Der einzige Mensch, der sich vernünftig benimmt, ist mein Schneider. Er nimmt jedesmal neu Maß, wenn er mich trifft, während alle anderen immer die alten Maßstäbe anlegen in der Meinung, sie paßten auch heute noch...“

Offline thkn777

  • Aktives Mitglied
  • ***
  • Beiträge: 176
Re: Optionsfeld: Wert prüfen und ggf. ersetzen
« Antwort #11 am: 07.09.15 - 10:48:10 »
Ohne jetzt die ganz große Goldwaage rauszuholen... das mit dem Umschreiben alter Werte halte ich nicht in allen Fällen für eine gute Idee.

Überleg' mal. Letzte Woche gab es die Auswahlmöglichkeiten Alt1, Alt2, Alt3, Alt4, Alt5. In einem Dokument wurde Alt1 gewählt, evtl. wurde diese Wahl auch noch in eine Historie geschrieben. Bloß weil ab Montag dieser Woche Alt1 als Auswahl für NEUE Dokumente wegfällt, kannst Du doch nicht Bestandsdokumente ändern?

Praxisbeispiel:
- Du hat 2011 einen VW Golf VI gekauft
- ab 2012 gibt's den nicht mehr. Aus Deinen Vertragsunterlagen, die zufällig in Notes gehalten werden, wird dieser Fahrzeugtyp ersatzlos gestrichen.

 ::)

Einfach alte Werte in Bestandsdokumenten in einen anderen Wert ÄNDERN ist auch nicht immer eine gute Idee.

****************************

Ggf. könnte das eine Lösung für Dich sein:
- in den Vorgabewerten des Feldes statt einer fixen Auswahlliste eine Formel hinterlegen
- wenn neues Dokument --> neue Auswahlliste
- wenn schon ein Wert im Item vorhanden ist --> neue Auswahlliste PLUS dem schon vorhandenen Wert aus dem Item

Auf diese Weise wird alles korrekt angezeigt und der Nutzer kann bei einer Änderung nur noch Werte aus der neuen Auswahlliste auswählen. Läßt sich in Formelsprache mit vertretbarem Aufwand umsetzen.

Bsp:
Code
listeNeu := "N1" : "N2" : "N3";
wertAlt := @ThisValue;
ergebnis := @If(@IsNewDoc;listeNeu;wertAlt!="";@Unique(listeNeu : wertAlt);listeNeu);
ergebnis

Viel Erfolg!
« Letzte Änderung: 07.09.15 - 10:59:13 von thkn777 »

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz