Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: ZaLudtske am 20.06.06 - 14:18:20

Titel: Sprung in ein Feld mit .GotoField
Beitrag von: ZaLudtske am 20.06.06 - 14:18:20
Hallo,

ich erstelle über einen Agenten ein Dokument in dem ich Metadaten und Daten vom Großrechner in das Dokument übertrage. Danach aktualisiere ich das NotesUIDocument und möchte mit GotoField in ein Feld springen, das erst nach dem Aktualisieren sichtbar wird. (siehe Code-Schnipsel). Leider erhalte ich immer nur die Fehlermeldung 'Feld nicht gefunden'. Ein 'Doevents' vor dem GotoField hat auch nicht geholfen.

Hat jemand eine Idee wie der Code aussehen muß, dass das Feld angesprungen wird?

Rainer

                        ndoDest.computewithform True, False
                        
                        nduNew.refresh True                     
                        nduNew.refreshhideformulas                           
                        
                        vntValue = ndoDest.getitemvalue("t_StartFeld")
                        
                        If vntValue(0) <> "" Then
                           nduNew.gotofield(vntValue(0))
                           
                        End If


Titel: Re: Sprung in ein Feld mit .GotoField
Beitrag von: Axel am 20.06.06 - 19:24:27
Gibt's das Feld, zu dem du springen willst auch wirklich in der Maske?


Axel
Titel: Re: Sprung in ein Feld mit .GotoField
Beitrag von: koehlerbv am 20.06.06 - 23:47:28
Abgesehen davon: Warum passiert solch ein Stunt überhaupt im FrontEnd? DIE Begründung würde mich jetzt mal interessieren  ;)
Und wenn die Begründung passt, dann der wirkliche Code ...

Bernhard
Titel: Re: Sprung in ein Feld mit .GotoField
Beitrag von: ZaLudtske am 21.06.06 - 08:32:59
@Axel: Das feld ist wirklich in der Maske, aber beim Öffnen noch ausgeblendet

@Bernhard: Hier die Begründung: Eine Anforderung unserer Fachabteilung ist, dass Sie für bestimmte Prozesse die passenden Formbriefe versenden muß. Damit Sie sich nicht die Daten einzeln aus der 3270-Emulation heraussuchen und -kopieren müssen lese ich Sie per LSX aus und übertrage später alles nach Word zum Drucken.
Die Fachabteilung möchte außerdem die Möglichkeit besitzen diese Werte noch zu bearbeiten. Da ich immer unterschiedliche Felder für die einzelne Brief benötige habe ich alle Konfigurationsdaten in Metadaten-Dokumenten gespeichert damit ich sie nach Bedarf füllen und anzeigen kann und benötige somit nur eine Basismaske.
Da der Benutzer auch mal den falschen Brief auswählen kann und das Dokument danach einfach wegwerfen soll. Es können nämlich nur ganz bestimmte Benutzer Dokumente löschen (Anforderung der Revision). Das ist der Grund wieso ich das ganze im Frontend und nicht im Backend betreibe.

PS: Das ganze funktioniert super wenn man keine verstecken Felder hat, denn ich habe auf die gleiche Art schon 15 weitere Geschäftsprozesse abgebildet.

Ich hoffe das reicht als Begründung.  ;)

Rainer
Titel: Re: Sprung in ein Feld mit .GotoField
Beitrag von: Axel am 21.06.06 - 09:08:45
Beim Setzen des Fokus in ein Feld muss diese sichtbar und bearbeitbar sein.


Axel
Titel: Re: Sprung in ein Feld mit .GotoField
Beitrag von: Thomas Schulte am 21.06.06 - 09:15:31
Ergänzend zu Axel ....

was dazu führt das ein GotoField mit TabbedTables und berechneten Tabellen nicht richtig funktioniert.
Titel: Re: Sprung in ein Feld mit .GotoField
Beitrag von: ZaLudtske am 21.06.06 - 09:23:19
Ich dachte, dass nach dem .refresh und .refreshhodeformulas das Feld sichtbar ist.

Wird auf die beiden Refreshs der Bildschirm nicht direkt aktualisiert?  ???

Rainer
Titel: Re: Sprung in ein Feld mit .GotoField
Beitrag von: Marco Simon am 21.06.06 - 12:02:41
Ist das Feld denn im LS-Debugger sichtbar?

MfG

Marco
Titel: Re: Sprung in ein Feld mit .GotoField
Beitrag von: Thomas Schulte am 21.06.06 - 12:07:22
Wird auf die beiden Refreshs der Bildschirm nicht direkt aktualisiert?  ???
Nein wird es nicht, speziell dann nicht wenn das in einer Tabelle irgendwo zu finden ist.
Titel: Re: Sprung in ein Feld mit .GotoField
Beitrag von: ZaLudtske am 21.06.06 - 12:31:02
@Marco: Das Feld ist im Debugger sichtbar. Aber nicht am Bildschirm.

@Thomas: Das Feld liegt leider in einer Tabelle, anscheined hab ich wohl den Kanpf verloren und muß mir ein Workaround überlegen.  ???
Titel: Re: Sprung in ein Feld mit .GotoField
Beitrag von: Thomas Schulte am 21.06.06 - 12:53:07
@Thomas: Das Feld liegt leider in einer Tabelle, anscheined hab ich wohl den Kanpf verloren und muß mir ein Workaround überlegen.  ???
Wenn du da ein Workaround findest könntest du uns das bitte mitteilen. Das bräuchten wir nämlich auch dringend.
Titel: Re: Sprung in ein Feld mit .GotoField
Beitrag von: ZaLudtske am 22.06.06 - 11:35:47
Hallo,

ich mir ein Workaround gebastelt, das nur auf diese Maske passt. Ich zeige eines meiner Systemfelder (Datum des Briefes) jetzt an und mache es gleichzeitig auch editierbar. Das macht im großen und ganzen auch Sinn.

Bevor ich mich zu diesem Schritt entschlossen habe hab ich etwas mit der API gespielt. Doch weder Postmessage zum Senden eines Klick-Events noch das setzen des Fokus per API in das Fenster zusetzen hat geholfen.

Vielleicht hat ja einer unsere Notes-Götter noch eine Idee was man machen könnte.

Rainer
Titel: Re: Sprung in ein Feld mit .GotoField
Beitrag von: pete_bla am 27.06.06 - 11:30:31
Hi,

mal ein anderer Vorschlag, der insbesondere auch mit dem Laden von berechneten Teilmasken zum erfolg führt...

WIe wäre es das UIDoc zu schliessen, und neu zu laden ?
(über die DocumentUniqueID)
Titel: Re: Sprung in ein Feld mit .GotoField
Beitrag von: ZaLudtske am 27.06.06 - 11:51:06
Dann muß ich aber das Dokument zuerst speichern und das will ich vermeiden.
Titel: Re: Sprung in ein Feld mit .GotoField
Beitrag von: pete_bla am 27.06.06 - 13:08:37
Hi, nochmals.

Ich hab mir jetzt mal die Grundlagen deines Scritps zusammengebaut, und leider den Fehler nicht navollziehen können.... (ausser das feld war wirklich nicht da)  :-\

Darum folgende Fragen:
- Wie steuerst Du das Anzeigen des Feldes, in das du willst (über Hide, wenn ein anderes Feld != wert?) und ist womöglich dieses steuer-feld in der Maske erst nach dem Feld in das du springen willst?
- Was für ein Typ ist dein Feld in das du willst (Text?)
- Hängt es womöglich in einer berechneten Teilmaske, einem Layout oder einem Abschnitt (ev. sogar mit "nicht"-bearbeitungsrecht oder zugeklappt)
ect.

(PS: habs mit R 5.0.11 & R 6.53 versucht)



Titel: Re: Sprung in ein Feld mit .GotoField
Beitrag von: ZaLudtske am 27.06.06 - 14:23:26
Hallo,

das Steuerfeld befindet sich am Anfang der Maske in einen Bereich mit beschränkten Zugriff. Das Feld enthält die Feldnamen der die angezeigt werden sollen.
Die Feder um die geht, haben eine Hide-When-Formel von de Typ '@isnotmember("Feldname"; t_SichtbareFelder)'. Leider befinden sich die Felder in einer Tabelle, die ich innerhalb einer Tabelle befindet und dieser Umstand scheint die Probleme zu bereiten.

Rainer
Titel: Re: Sprung in ein Feld mit .GotoField
Beitrag von: pete_bla am 28.06.06 - 12:32:30
So jetzt doch nochmal ne wilde Frage:

Ist womöglich das Steuer-Feld vom Typ "Berechnet zur Anzeige"?
oder berechnet sich da was aus anderen Feldern oder dblookups drin?
Ein refresh schmeisst ja bekanntlich gerne mal "berechnet zur anzeige" aus dem  UIdoc.Document  raus....
(in Deinem Fall: UIDoc erzeugen ohne speichern, UIdoc refresh und danach zugriff auf das backend-Doc um den wert zu holen)
Und DBLookups und berechnete aus anderen Feldern kommen auch nicht immer so ganz linerar rüber wie man es will.

-> Auf was ich raus will ist ob wirklich der richtige Feldname in vntValue(0) ankommt, auf welches du springen möchtest.
oder was ja auch gerne passiert: das vntValue(0) hat ein lehrzeichen, sonderzeichen, umbruch, "merhfachwert" als ein String, ect.

Ich weiss, dass das jetzt etwas Frischlingmässig klingt, aber machmal sind die grössten Probleme doch nur kleine "Leichtsinnsfehler" ect.
Titel: Re: Sprung in ein Feld mit .GotoField
Beitrag von: ZaLudtske am 28.06.06 - 13:52:57
Hallo,

nein, das Feld ist kein Feld, das zur Anzeige oder beim Anlegen berechnet wird, sondern ein ganz normales Feld das über die Metadaten beim anlegen gepflegt wird.

Beim Auslesen des Feldes erhalte ich den korrekten Wert. (vntValue(0)) enthält den richtigen Namen.

Das Problem ist, dass das Feld zum Zeitpunkt des Befehl .GotoField nicht sichtbar ist.

Rainer
Titel: Re: Sprung in ein Feld mit .GotoField
Beitrag von: diali am 28.06.06 - 14:10:52
hast Du mal versucht ein neues Dokument im Backend zu erzeugen (nicht speichern) und dann dieses im Frontend zu öffnen?, ist dann das Feld, welches Du anspringen willst sichtbar?

Falls ja sollte das ansprinmgen auch funktionieren. Alternativ könntest Du noch versuchen einen uidoc.Refresh (F9) auszuführen, dann müssten die HW-Formeln neu berechnet werden.
Titel: Re: Sprung in ein Feld mit .GotoField
Beitrag von: ZaLudtske am 28.06.06 - 16:08:52
Hallo,

es funktioniert jetzt. Viel Dank. :D

Ich hätte nicht gedacht, dass es klappt über NotesDatabase.CreateDocument ein Dokument im Backend zu erstellen und dies dann mit NotesUIWorkspace.EditDocument im Frontend zu öffnen, ohne es vorher zu speichern.

Nochmals vielen Dank an alle die geholfen haben.
Titel: Re: Sprung in ein Feld mit .GotoField
Beitrag von: diali am 29.06.06 - 06:57:51
dies funktioniert erst ab 5.x so und mit RT-Feldern gibt es auch unterschiedliche Effekte je nach Notes-Version.