Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: sslneve am 27.06.05 - 10:09:43
-
Hallo mal wieder,
in einem SPOFU View habe ich einen Action Button, der einen Agent startet. Das funktioniert auch, solange ich als Manager bzw. Designer drangehe. Der Normaluser (Editor) bekommt "Object Variable Not Set". Stelle ich den Normaluser auf Manager hoch, dann geht es.
Verstehe ich nicht. Ich meine, entweder ein Objekt wurde instantiiert
oder nicht. Aber doch nicht berechtigungsabhängig?
Gruss
Markus
-
Hi
Was ist das für ein Agent? Was macht er? Greift er auf Dokumente zu und haben diese Leser- und/oder Autorenfelder? Hast du mal mit dem Debugger geschaut, wo er aussteigt?
Hast du auch mal ein bisschen Code für uns?
Fragen über Fragen. Aber ohne mehr Input kanns auch keinen vernüftigen Output geben.
Axel
-
Moin
Doch, das kann sein. Wenn der Benutzer keine Berechtigung zum lesen eines Profildokuments oder sonstwas hat, kann der Agent, der ja unter dem Namen des Users läuft und damit dessen Berechtigungen beachtet, auch dieses Objekt nicht ansprechen. Er "sieht" es nicht einmal. Man kann aber einerseits an den Berechtigungen des Agenten einstellen was er darf oder aber das Objekt für den User zugänglich machen.
Schönen Tag
Tilsche
-
Wenn Markus unter "starten" das Enabling eines Agents versteht, erklärt sich seine Beobachtung auch leicht. Wie Axel schon sagte - wir brauche mehr Infos, die Kristallkugel und der Kaffeesatz reichen nicht aus.
Bernhard
-
Hallo,
sorry, Code ... ja, gute Idee :) Starten des Agents meint "Run" (in diesem Fall agent.run), also kein enabling/schedule.
Dim ws As New NotesUIWorkspace
Set ws = New NotesUiWorkspace
Dim session As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim answer As Boolean
Set db = session.CurrentDatabase
Set view = db.GetView( "Bericht" )
If view.entrycount >0 Then
answer = ws.DialogBox(...)
If answer Then view.SelectionFormula = session.GetEnvironmentString("dbx_Select")
Else
view.SelectionFormula = |SELECT form = "Vorschlag"|
Call ws.ViewRebuild
answer = ws.DialogBox(...)
If answer Then view.SelectionFormula = session.GetEnvironmentString("dbx_Select")
End If
Call session.setenvironmentvar("dbx_Select","")
End Sub
So kommt der Fehler ... er steigt vor der Dialogbox aus, also packt er den Zugriff auf view nicht (als Editor). Wenn ich
Set view = db.GetView( "Bericht" )
ersetze durch
Dim uiview As NotesUIView
Set uiview = ws.currentview
Set view = uiview.view
dann bekommt der Editor Client einen RSOD (hatte ich schonmal in nem anderen Thread geschrieben). Als Manager geht es.
-
Hmm, die Hilfe sagt dies bei SPOFU views:
"... because the view selection is only parsed when the view is generated."
Kann es daran liegen? Nur warum geht es dann als Manager?
-
.... weil der Benutzer vielleicht in der ACL nicht die Rechte hat persönliche Ansichten zu erstellen?
-
Hi,
die Ansicht mit diesem Namen gibt es wirklich und ist der Namen eindeutig?
Axel
-
Axel: Ja, die Ansicht gibt es.
ctillmanns: Der User erstellt ja keine private Ansicht, er modifiziert ja nur die Select Formel. Aber soweit kommt es ja gar nicht, es hakt ja schon beim ersten Zugriff auf eine Eigenschaft des view Objekts, nämlich view.entrycount
-
Ich sag zu dem Thema nur eines:
Lass es bleiben.
Wir haben im !!Help!! bei den Überschriften der Views damit rumgespielt und waren absolut nicht glücklich mit den sich daraus ergebenden Konsequenzen.
-
Axel: Ja, die Ansicht gibt es.
Das ist aber nur die Anwort auf den ersten Teil meiner Frage. Der zweite Teil war, ob der Name eindeutig ist.
ctillmanns: Der User erstellt ja keine private Ansicht, er modifiziert ja nur die Select Formel. Aber soweit kommt es ja gar nicht, es hakt ja schon beim ersten Zugriff auf eine Eigenschaft des view Objekts, nämlich view.entrycount
Um auf die Ansicht zugreifen zu können muss aber erstmal eine erstellt werden.
Axel
-
Hallo,
@Axel: Der Name ist eindeutig. Der View besteht als shared und wird bei der ersten Benutzung in private gewandelt (was auch funktioniert).
-
Und genau den shared view bekommst Du in die Hand, wenn Du db.GetView("...") schreibst.
Aus der Hilfe:
If the database is local, GetView returns both public and personal views and folders. If the database is on a server, GetView returns only public views and folders.
Andreas
-
wenn du einen Agent mit der Run-Methode der NotesAgent-Klasse aufrufst kannst du keine UI-Klassen verwenden.
Daher der Fehler.