Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Leddl am 27.04.07 - 10:20:25

Titel: Felder mit FieldClear leeren funktioniert nicht
Beitrag von: Leddl am 27.04.07 - 10:20:25
Hallo,

ich beobachte bei mir hier ein seltsames Verhalten von Notes...

Bei Klick auf einen Button sollen diverse Sachen passiern und zusätzlich die Felder der Maske wieder geleert werden. Schön und gut, das hab ich auch schon in anderen Masken, sogar schon auf der gleichen bei einem anderen Event, sollte also klappen. Ja denkste...
Ich lösche also den Inhalt jeden Feldes durch folgenden Code
Code
Call uidoc.FieldClear("Feldname")
Da passiert aber nichts. Weder Fehlermeldung, noch wird das Feld gelöscht. Selbst wenn ich versuche, mit
Code
Call uidoc.FieldSetText("Feldname","")
den Text zu löschen passiert nichts ???

OK, natürlich also sofort mein Gedanke: Irgendwas stimmt mit der If-Bedingung drüber nicht. Aber auch hier Fehlanzeige... Zwischen die einzelnen Befehle eingefügte Prints werden mir ausgegeben. Der Codeteil wird also definitiv durchlaufen. Nur passiert hier einfach nichts.

Dann hab ich einfach mal was neues probiert:
Code
eval = Evaluate(|@SETFIELD("Feldname";"")|,doc)
Und ZACK, es funktioniert. Nur finde ich das eher unschön gelöst, schließlich sollte es doch möglich sein, das direkt in LS zu machen (und ist es ja auch, ich hab es ja schon an anderer Stelle geschafft).

Hat jemand anderes auch schonmal dieses Problem gehabt oder kann mir jemand sagen, woran das liegen könnte?

(Vielleicht sollte noch erwähnt werden, dass der angesprochene Code nicht direkt im ButtonClick, sondern in einer Script-Bibliothek steckt, aber das sollte ja eigentlich keinerlei Auswirkungen haben.)

Danke,
Axel
Titel: Re: Felder mit FieldClear leeren funktioniert nicht
Beitrag von: m3 am 27.04.07 - 10:34:23
Ist das Dokument beim Aufruf von FieldClear auch WIRKLICH im Edit-Mode? Sonst klappts nicht.
Titel: Re: Felder mit FieldClear leeren funktioniert nicht
Beitrag von: Thomas Schulte am 27.04.07 - 10:37:05
Das wäre auch das erste was mir einfällt ....

Außerdem würde ich einfach mal den Debugger anwerfen und mich nicht auf Print Anweisungen verlassen.
Titel: Re: Felder mit FieldClear leeren funktioniert nicht
Beitrag von: Leddl am 27.04.07 - 11:10:13
Ist das Dokument beim Aufruf von FieldClear auch WIRKLICH im Edit-Mode? Sonst klappts nicht.
Ich hatte in der Zeile vorher auch sicherheitshalber ein
Code
uidoc.editmode = true
gesetzt. Ohne Effekt...  ???

Außerdem würde ich einfach mal den Debugger anwerfen und mich nicht auf Print Anweisungen verlassen.
Nunja, der Debugger verrät mir auch nicht mehr, als dass er durch die Befehlszeile läuft ;) Einen Effekt kann ich aber wie gesagt nicht feststellen, die Felder bleiben nach wie vor gefüllt :(
Titel: Re: Felder mit FieldClear leeren funktioniert nicht
Beitrag von: koehlerbv am 27.04.07 - 11:25:59
Sind die betreffenden Felder auch bearbeitbar und nicht berechnet?

Bernhard
Titel: Re: Felder mit FieldClear leeren funktioniert nicht
Beitrag von: Leddl am 27.04.07 - 11:40:52
Jupp, sind alles Felder, in die vor dem Klick auf den Button noch etwas eingegeben wurde...
Titel: Re: Felder mit FieldClear leeren funktioniert nicht
Beitrag von: Thomas Schulte am 27.04.07 - 11:44:13
Zeig doch bitte mal den Aufruf deiner Funktion. Könnte es sein das du das UIDocument nicht sauber aufrufst. Beim Aufruf von uidoc Funktionen in externen Script Bibliotheken muss der Kontext stimmen.
Titel: Re: Felder mit FieldClear leeren funktioniert nicht
Beitrag von: Leddl am 27.04.07 - 11:54:49
Der relevante Codeteil:
Code
Sub Add
  Dim ws As New NotesUIWorkspace
  Dim uidoc As NotesUIDocument
  Set uidoc = ws.CurrentDocument
	
[...Verarbeitung der Felder...]			

  Call uidoc.FieldClear("PGR")
  Call uidoc.FieldClear("Geschlecht")
  Call uidoc.FieldClear("Formen")
  Call uidoc.FieldClear("Artikel")
  Call uidoc.FieldClear("Farbe")
  Call uidoc.FieldClear("Pflicht")
End Sub

Im Button wird dann einfach nur die Sub aufgerufen.
Titel: Re: Felder mit FieldClear leeren funktioniert nicht
Beitrag von: Leddl am 04.05.07 - 11:16:37
Keiner ne Idee? ??? Ich hab das Problem leider immer noch nicht beheben können.

Wie gesagt, es funktioniert über Evaluate, aber besonders schön ist das einfach nicht, zumal es doch schließlich anders auch funktionieren müsste :(
Titel: Re: Felder mit FieldClear leeren funktioniert nicht
Beitrag von: iukhdh am 04.05.07 - 11:21:23
Aus meiner (leidigen) Erfahrung der letzten Tage:

Du testest schon auf der gleichen DB wie wo du programmierst?

 ;)

Da bin ich  nämlich Held drin  ;D
Titel: Re: Felder mit FieldClear leeren funktioniert nicht
Beitrag von: Driri am 04.05.07 - 11:27:50
Ich hab das mal gerade in nem Client 6.5.4 getestet und das funktioniert ohne Probleme. Sowohl wenn ich das direkt im Click-Event des Buttons mache, als auch wenn ich das in eine Sub auslagere.

Welche Clientversion benutzt Du ?

Edit : Wo genau hast Du denn die "Sub Add" stehen ? In der Maske selber oder in einer Scriptbibliothek ?

Hast Du denn laut Debugger das uidoc sauber instantiiert ?
Titel: Re: Felder mit FieldClear leeren funktioniert nicht
Beitrag von: Leddl am 04.05.07 - 12:01:38
Du testest schon auf der gleichen DB wie wo du programmierst?
Wenns nur so einfach wäre... :(

Ich hab das mal gerade in nem Client 6.5.4 getestet und das funktioniert ohne Probleme. Sowohl wenn ich das direkt im Click-Event des Buttons mache, als auch wenn ich das in eine Sub auslagere.
Funktioniert bei mir an anderer Stelle auch einwandfrei. Nur in 2 Methoden in der Bibliothek zickt das rum ???
Welche Clientversion benutzt Du ?
6.5.2
Edit : Wo genau hast Du denn die "Sub Add" stehen ? In der Maske selber oder in einer Scriptbibliothek ?
Die Sub steht in einer Scriptbibliothek und wird aus einer Maske heraus aufgerufen.
Hast Du denn laut Debugger das uidoc sauber instantiiert ?
Ich schaffs zwar gerade seltsamerweise nicht, den Debugger in das Script hereinzubewegen, aber bei Ausgabe der UnID per MessageBox kommt das korrekte Ergebnis...

//Edit:
Aber OK, dann leg ich das Problem mal beiseite. So wichtig ist schöner Code ja dann auch wieder nicht ;D
Die Hauptsache ist ja, dass es funktioniert, und das tut es. Sollte dem einen oder anderen aber dennoch noch ein Grund einfallen, woran das liegen könnte: Immer her damit ;)