Das Notes Forum

Domino 9 und frühere Versionen => Administration & Userprobleme => Thema gestartet von: Mario am 19.11.02 - 14:05:25

Titel: Agent zur Aktualisierung der Ansicht (F9 ersetzen)
Beitrag von: Mario am 19.11.02 - 14:05:25
Hallo,
hab folgendes Problem:
In einer Form einer DB sollen die letzten Bearbeiter in einem Feld aufgeführt werden.
Formel: @Name([CN]; @Subset($UpdatedBy;-3))

Das Problem dabei ist, dass das Bearbeiter-Feld erst nach zweimaligem Speichern den/die Bearbeiter anzeigt.
Notes aktualisert zwar das Feld, aber nur im Frontend-Prozess, erst beim zweiten Mal Speichern geht es in den Backend-Prozess und wird dementspechend angezeigt bzw. weiterverarbeitet.

Wenn ich nach dem ersten Speichern die "F9"-Taste drücke, steht im Feld der aktuelle Bearbeiter.
Nun will ich einen Agenten schreiben, der genau das macht.
Habe beim Ablaufzeitpunkt ausgewählt: "If Documents have been created or modified".
Doch was für einen Lotusscript-Tag muss ich eintragen?
Hab schon mit "refresh" rumprobiert, brachte aber keinen Erfolg.

(Bin Lotusscriptneuling)

Mario

Titel: Re:Agent zur Aktualisierung der Ansicht (F9 ersetzen)
Beitrag von: Axel am 19.11.02 - 15:53:04
Hi,

versuch's doch mal mit der Methode ViewRefresh aus der Klasse NotesUIWorkspace.

Ich aktualisiere damit eine eingebettete Ansicht.

Vielleicht funktionierts auch bei dir.


Axel
Titel: Re:Agent zur Aktualisierung der Ansicht (F9 ersetzen)
Beitrag von: Mario am 19.11.02 - 16:01:42
Kannst Du mir eine beispielhafte Systax geben,
die ich einfügen kann?
Titel: Re:Agent zur Aktualisierung der Ansicht (F9 ersetzen)
Beitrag von: Axel am 19.11.02 - 16:06:44
Hi,

füge in QuerySave-Event der Maske folgenden Code ein:


Dim workspace As New NotesUIWorkspace

Call workspace.ViewRefresh


Axel
Titel: Re:Agent zur Aktualisierung der Ansicht (F9 ersetzen)
Beitrag von: Mario am 19.11.02 - 16:11:50
Dann müsste er beim Speichern also die Ansicht refreshen?
(NUr für mein Verständnis)
Titel: Re:Agent zur Aktualisierung der Ansicht (F9 ersetzen)
Beitrag von: Axel am 19.11.02 - 16:17:24
Hi,

joo. Erweitere den Code noch wie folgt (siehe unten):


Dim workspace As New NotesUIWorkspace

Dim view As NotesView
Dim session As New NotesSession
Dim db As NotesDatabase

Set db = session.CurrentDatabase
Set view = db.GetView("Name der Ansicht")
Call view.Refresh


Call workspace.ViewRefresh


Auszug aus der Notes-Hilfe
Zitat
Usage
If a view is in the active window, this method refreshes the current view.
If a document is in the active window, this method refreshes the view associated with that window, but not until the view's window is activated.
To refresh a view from within a document, you must perform both the back-end NotesView Refresh and the front-end NotesUIWorkspace ViewRefresh methods, before exiting out of the view.

Axel
Titel: Re:Agent zur Aktualisierung der Ansicht (F9 ersetzen)
Beitrag von: Mario am 19.11.02 - 16:34:43
Ich arbeite in einer "Form"namens "Hiring Tracking".

Wo kann ich ersehen, wie die zugehörige View heisst?
(wenn ich bei ...db.GetView("Hiring Tracking") eintrage,
heisst es:" Object Variable not set!"
Titel: Re:Agent zur Aktualisierung der Ansicht (F9 ersetzen)
Beitrag von: Axel am 19.11.02 - 16:39:09
Hi,

bei Set view = db.GetView(...) darfst du nicht den Maskennamen, sondern musst den Namen der entsprechenden Ansicht angeben.


Axel
Titel: Re:Agent zur Aktualisierung der Ansicht (F9 ersetzen)
Beitrag von: Mario am 19.11.02 - 16:42:54
Ja, dass weiss ich, doch wie bekomme ich in der Maske den Namen der View raus, bzw wie kann ich die Viev(Ansicht) finden, die meine Form benutzt?

Das ist mein Problem
Titel: Re:Agent zur Aktualisierung der Ansicht (F9 ersetzen)
Beitrag von: Axel am 19.11.02 - 16:53:12
Hi,

das einzigste was mir hierzu einfällt ist die Eigenschaft ParentView aus der Klasse NotesDocument. Ich bin mir aber nicht ganz sicher, ob es das ist was du brauchst. Ich habe diese Eigenschaft noch nie eingesetzt.

Versuch's mal so:

Dim workspace As New NotesUIWorkspace
Dim view As NotesView

Set view = Source.Document.ParentView
Call view.Refresh

Call workspace.ViewRefresh


Axel

Titel: Re:Agent zur Aktualisierung der Ansicht (F9 ersetzen)
Beitrag von: Mario am 19.11.02 - 17:04:12
Wieder der Fehler:" Object Variable not set"

Kann ich mir den Namen der aktuellen View nicht auch ausgeben lassen:

   Dim workspace As New NotesUIWorkspace
   
   Dim view As NotesUIView
   Dim session As New NotesSession
   Dim db As NotesDatabase
   
   Set db = session.CurrentDatabase
   Set view = workspace.CurrentView
   Msgbox (view)

Wenn ich es so mache, heisst es: "Type mismatch".
Kann ich mit modifizierter Msgbox den Namen der aktuellen View/Ansicht ausgeben?

Titel: Re:Agent zur Aktualisierung der Ansicht (F9 ersetzen)
Beitrag von: Mario am 19.11.02 - 17:11:05
Hab jetzt folgen Code in "Postsave" geschrieben:

   Dim workspace As New NotesUIWorkspace
   
   Dim uidoc As NotesUIDocument
   
   Set uidoc = workspace.CurrentDocument
   
   Call uidoc.Refresh


Damit geht es endlich!!!

 ;D
Titel: Re:Agent zur Aktualisierung der Ansicht (F9 ersetzen)
Beitrag von: Axel am 20.11.02 - 11:34:49
Wieder der Fehler:" Object Variable not set"

Kann ich mir den Namen der aktuellen View nicht auch ausgeben lassen:

   Dim workspace As New NotesUIWorkspace
   
   Dim view As NotesUIView
   Dim session As New NotesSession
   Dim db As NotesDatabase
   
   Set db = session.CurrentDatabase
   Set view = workspace.CurrentView
   Msgbox (view)

Wenn ich es so mache, heisst es: "Type mismatch".
Kann ich mit modifizierter Msgbox den Namen der aktuellen View/Ansicht ausgeben?



Hi,

ändere die letzte Zeile so ab:

Messagebox view.Viewname

Damit kannst du dir den Namen der Ansicht ausgeben lassen.


Axel