Autor Thema: Optionsfeld  (Gelesen 1977 mal)

Offline St

  • Frischling
  • *
  • Beiträge: 40
Optionsfeld
« am: 15.04.14 - 16:04:43 »
Hallo zusammen,

ich habe folgendes Problem.

Ich habe ein Formular, in dem es ein Optionsfeld mit drei Optionen gibt. Je nach Auswahl der Option werden weitere Felder etc. angezeigt.

Bei der Option 3 werden alle verfügbaren Felder angezeigt und können entsprechend gefüllt werden.

Nun ist es so, dass ein Anwender die Option 3 gewählt hat und diverse andere Felder gefüllt hat. Während der Bearbeitung wurde dann auf Option 2 umgestellt, bei der weniger Inhalt angezeigt wird.

Mein Problem:

Ich möchte zum einen den Anwender beim Optionswechsel darauf hinweisen, dass alle vorher eingestellten Informationen gelöscht werden und nach dessen Bestätigung die zuvor ausgefüllten Felder (über Option 3) leeren.

Mein bisherhiger Ansatz:

Über das Onfocus - Event des Optionsfeldes mit folgendem Script

Sub Onfocus(Source As Field)
   Dim ws As New NotesUIWorkspace
   Dim askme As Integer   
   Dim uidoc As NotesUIDocument   
   Set uidoc = ws.CurrentDocument
   
   If uidoc.FieldGetText("ExtStatus") = "Option 3" Then
      askme = ws.Prompt (PROMPT_YESNO, _
      "Hinweis", "Sie haben den Status verändert. Alle unter dem Status 3 eingebenen Informationen gehen durch den Statuswechsel verloren.")
      If askme = 1 Then
         Call uidoc.FieldSetText("shWENID", "")
         Call uidoc.FieldSetText("shWENBez", "")
         Call uidoc.FieldSetText("shWENWert", "")
         Call uidoc.FieldSetText("shWENErteilDat", "")
         Call uidoc.FieldSetText("VOKAT", "")
      End If
      
      Call uidoc.refresh   
      
   End If
End Sub


Problem hierbei:

Durch die vorherige Abfrage wird das Optionsfeld aber nicht geändert. Sprich wenn ich von Option 3 auf z.B. Option 2 ändere, bekomme ich meine Prompt-Box und nach dessen Bestätigung bleibt der "Knödel" auf Option 3. Wenn ich danach nochmals auf Option 2 ändere, bekomme ich keine Abfrage mehr und der "Knödel" wechselt auf Option 2.

Habt ihr eine Idee?
Ist das Onfocus - Event überhaupt passend?

Danke und Gruß
Stephan

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Optionsfeld
« Antwort #1 am: 15.04.14 - 16:30:00 »
Probier mal, ob Du mit OnChange weiterkommst.

Grundsätzlich musst Du beide Zustände wissen, welcher Wert vorher markiert war, und welcher jetzt. Wenn der vorherige 3 war und die Frage verneint wurde, musst Du zurück auf die 3.

Vermutlich wirst Du mit einer globalen Variablen arbeiten müssen (in den Declarations zu deklarieren), und im OnChange den jetzt gültigen Wert als zukünftigen alten Wert hineinschreiben. Initial muss die auch im PostOpen gesetzt werden.

Wenn OnChange nicht hilft, geht bestimmt Postrecalc, da würde ich das vermutlich abfackeln.

Offline thkn777

  • Aktives Mitglied
  • ***
  • Beiträge: 176
Re: Optionsfeld
« Antwort #2 am: 15.04.14 - 16:58:25 »
Hallo St,
sehe ich das richtig:
- Option 1 blendet ein paar Felder ein
- Option 2 die von Option 1 und weitere
- Option 3 die von Option 2 und weitere?

Wenn Du je nach angezeigter Option die nicht ausfüllbaren Fenster sowieso versteckst, sie also für den Nutzer "erst einmal" nicht sichtbar sind, dann könntest Du die ganze Löscherei auch zentral z.B. im QuerySave Event der Maske abhandeln oder in einem Action-Button "Speichern".

Voraussetzung: es gibt nicht noch weitere Abhängigkeiten der Maske von den ausgefüllten Werten.

Szenario:
Ein Nutzer ist unentschlossen und springt zwischen Option 1, 2 und 3 hin- und her in der Bearbeitung. Ja - sowas kann durchaus mal vorkommen ;) Wenn er dann jedesmal die schon eingegebenen Werte (Option 2, 3) wieder ausfüllen muß, wird er gegen Tagesende leicht über seine persönliche Frustgrenze driften.

Mögliche Lösung:
Es gibt eine zentrale masken-weite Plausibilitätsprüfung der Eingaben im QuerySave. In einigen unserer Anwendungen steht diese dem Anwender z.B. über einen Action-Button in der Maske zur Verfügung. Quasi für den Check "zwischendurch". Das dahinterliegende Script prüft jetzt (teilweise komplexe) Abhängigkeiten der eingegeben Daten und weist auf aufzulösende Probleme hin.

Analog läuft im QuerySave ein Script, das "überflüssigen Ballast" aus dem Doc entfernt. In Deinem Fall würde das bedeuten, daß Du einfach nach gesetztem Optionsfeld abfragst und erst im QuerySave die Felder bzw. Items leerst.

Keine Universallösung, manchmal paßt sowas aber. Unsere Nutzer kommen damit jedenfalls prima klar ;) Man kann in Ruhe die Maske ausfüllen, gern auch "irgendwo" anfangen, Bereiche nur teilweise erfassen und erst zum Schluß vervollständigen und wenn man sich unsicher ist, ob alles so paßt - einfach die Plausibilitäsprüfung drüberlaufen lassen. Keine nervenden Zwischenmeldungen etc.

Ist nicht ganz die Antwort auf Deine Frage, aber vielleicht hilft's trotzdem ein bischen weiter ;)

Viel Erfolg,
Th.

Offline St

  • Frischling
  • *
  • Beiträge: 40
Re: Optionsfeld
« Antwort #3 am: 16.04.14 - 09:54:28 »
Hallo Th,

ich denke so werde ich das auch machen. Im Grunde ist das schon in Ordnung, am "Ende" nochmal explizit das Optionsfeld zu prüfen und entsprechend die Felder leeren oder auch nicht.

Eine gesonderte Formular-Plausi-Prüfung haben wir über das PostRecalc.

Ich fände es nur schön, wenn man den Anwender direkt beim Wechseln der Option darauf hinweist, dass die vorherigen Daten verloren gehen. Dadurch wird er spätestens ab dem zweiten Formular "vorher" Überlegen, was er genau haben möchte und nicht während der ersten Bearbeitung hin und her springen.

@Peter, dir auch vielen Dank und dein Hinweis es über das PostRecalc abzufangen geht ja in die gleiche Richtung.

Somit werde ich auch die vermeindlich einfache Variante nehmen und im Hintergrund, sprich vor dem Speichern etc. die Felder entsprechend leeren.

Falls das dem Fachbereich dann noch nicht reichen sollte, sollen sie sich noch mal melden  ;D

Danke für eure Hinweise und Ideen
Stephan

Offline thkn777

  • Aktives Mitglied
  • ***
  • Beiträge: 176
Re: Optionsfeld
« Antwort #4 am: 16.04.14 - 10:16:45 »
Hallo St,
naja, was ich meine ist: manchal WILLST Du die Daten vielleicht gar nicht beim Wechseln der Option löschen. Szenario: Kunde ruft Berater an. Berater nutzt Deine Notes-Maske. Für den Vorgang/das Produkt etc. sind mehrere Optionen verfügbar, je Option müssen (teilweise) andere/mehr Daten erfaßt werden.

Wenn der Kunde sich jetzt während des Gesprächs für Option 2 entscheidet, danach eine andere wählt (z.B. Option 1), dann feststellt, daß Option 2 doch die bessere war und der Berater KANN das ohne Datenverlust mitmachen im Notes - alles gut, oder?

Stell Dir das in Papier vor. Option 2 ausgewählt - Anlage B ist auszufüllen. Du fängst damit an, entscheidest Dich um. Du legst Anlage B zur Seite und füllt Anlage X aus (für Option 1). Stellst fest, daß Option 2 doch besser ist. Du legst X zur Seite und füllst B weiter aus. Erst wenn alles ausgefüllt ist, wirfst Du das überflüssige Blatt Anlage X weg.

Hört sich sinnvoll an für mich. Oder würdest Du zwischendurch Anlage B in den Schredder tun? Und nochmal neu ausfüllen wollen? Technisch machbar heißt nicht immer automatisch "praktisch" ;)

Ich wünsche sonnige Vor-Ostertage,
Th.
« Letzte Änderung: 16.04.14 - 10:18:17 von thkn777 »

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz