Domino 9 und frühere Versionen > Entwicklung
Feld leeren, wenn der Wert sich ändert
kuschli:
Hallo!
Ich habe in einer Maske ein Optionsfeld mit zwei Auswahlmöglichkeiten.
Der User muss eine Auswahl treffen und danach eine kleine Schaltfläche betätigen, mit der dann ein Dialogfenster aufgerufen wird. In diesem Fenster werden Eingaben getätigt, die dann in die Maske übertragen werden.
Entscheidet sich der User dazu, doch die andere Optionsauswahl zu treffen, sollen die bisher gefüllten (berechneten) Felder geleert werden.
Dazu habe ich ein Hilfsfeld angelegt, daß den "alten Wert" des Optionsfeldes wiedergeben soll. Dieses Feld ist "berechnet", "nach Validierung berechnen" und hat den Wert des Optionsfeldes.
Im Exiting des Optionsfeldes habe ich folgenden Script:
Sub Exiting(Source As Field)
Dim ws As New NotesUiWorkspace
Dim S As New NotesSession
Dim uidoc As NotesUiDocument
Dim strNeuerWert As String
Dim strAlterWert
Set uidoc = ws.CurrentDocument
strAlterWert = uidoc.FieldGetText("optListenartA")
strNeuerWert = uidoc.FieldGetText("optListenart")
If strAlterWert = "Auswahl1" And strNeuerWert = "Auswahl2" Then
Call uidoc.FieldSetText("txtListennzweck","")
Call uidoc.FieldSetText("txtAuswahl","")
Call uidoc.FieldSetText("txtAusgabe","")
Call uidoc.FieldSetText("txtSortierung1","")
Call uidoc.FieldSetText("txtSortierung2","")
Call uidoc.FieldSetText("txtSortierung3","")
Call uidoc.FieldSetText("txtSummierung","")
Call uidoc.FieldSetText("txtVorschub","")
Elseif strAlterWert = "Auswahl2" And strNeuerWert = "Auswahl1" Then
Call uidoc.FieldSetText("txtListennummer","")
Call uidoc.FieldSetText("txtKategorie","")
Call uidoc.FieldSetText("txtListenname","")
Call uidoc.FieldSetText("txtAuftragsnummer2","")
Call uidoc.FieldSetText("txtAusgabefelder","")
Call uidoc.FieldSetText("txtAuswahl","")
Call uidoc.FieldSetText("txtAuswahlbeding","")
Call uidoc.FieldSetText("txtAusgabe","")
Call uidoc.FieldSetText("txtSortierung","")
Call uidoc.FieldSetText("txtSummierung","")
Call uidoc.FieldSetText("txtVorschub","")
Call uidoc.FieldSetText("txtVorschubabw","")
Call uidoc.FieldSetText("txtBearbeitungsprog","")
Call uidoc.FieldSetText("txtAufwandsgrad","")
End If
End Sub
Aber da geschieht leider gar nichts. Was ist da falsch? Ich bin im Script leider noch nicht so erfahren und würde mich sehr über Hilfe freuen.
Falls noch Fragen offen sind, beantworte ich sie gern.
Ich arbeite mit der Version 5.0.10.
Gruß,
kuschli
TMC:
AFAIK muss das Feld editierbar sein und darf kein berechnetes Feld sein, wenn Du die Frontend-Methode NotesUIDocument.FieldSetText einsetzt.
Abhilfe:
Mach das im Backend (NotesDocument Klasse).
Bsp. (die ersten Zeilen Deines Codes):
Dim ws As New NotesUiWorkspace
Dim S As New NotesSession
Dim uidoc As NotesUiDocument
Dim doc as NotesDocument
Dim strNeuerWert As String
Dim strAlterWert
Set uidoc = ws.CurrentDocument
Set doc = uidoc.Document
strAlterWert = doc.optListenartA(0)
strNeuerWert = doc.optListenart(0)
If strAlterWert = "Auswahl1" And strNeuerWert = "Auswahl2" Then
doc.txtListennzweck = ""
doc.txtAuswahl = ""
............
koehlerbv:
Ne, ne, Matthias - dazu muss das kein bearbeitbares Feld sein. Das geht auch mit berechneten.
- Was mir noch nicht ganz klar ist: Wann setzt Du Dein optListenArtA ?
- Unnötig ist Deine doppelte Verschachtelung. Es würde vollkommen genügen:
If strAlterWert <> strNeuerWert
Das mit dem Exiting event halte ich für u.U. gefährlich. Besser wäre es m.E., in dem Optionsfeld einzustellen, dass eine Neuberechnung bei Schlüsselwortänderung stattzufindne hat, und den Code dann ins Event PostRecalc zu setzen.
Ich kann aber noch keine klare Ursache erkennen, warum nicht auch das gegenwärtige Verfahren klappen sollte. Irgendeine unbekannte Randbedingung, irgendwas, was ich jetzt übersehen habe ...
Bernhard
TMC:
--- Zitat von: koehlerbv am 30.11.04 - 16:29:58 ---Ne, ne, Matthias - dazu muss das kein bearbeitbares Feld sein. Das geht auch mit berechneten.
--- Ende Zitat ---
Dann stimmt aber die Designerhilfe nicht:
--- Zitat ---Call notesUIDocument.FieldSetText( fieldName$, textValue$ )
Parameters
fieldName$
String. The name of the field whose value you want to set. The field must be editable.
--- Ende Zitat ---
Siehe letzten Satz, steht so sowohl in der R5 als auch ND6 Help.
koehlerbv:
Ich habe keine Ahnung, warum die das sooo schreiben. Meinen die vielleicht: Es müsste "theoretisch" bearbeitbar sein (weil EditMode) ?
Mach Dir einfach ein berechnetes Feld namens Feld und einen Buhtong mit folgendem Code:
--- Code: ---Dim ws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument
Set uidoc = ws.CurrentDocument
Call uidoc.FieldSetText ("Feld", Inputbox$ ("Welcher Wert soll eingetragen werden ?"))
--- Ende Code ---
Bernhard
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln