Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: booltrue am 14.02.19 - 14:40:36

Titel: Set view = uiview.View (object variable not set)
Beitrag von: booltrue am 14.02.19 - 14:40:36

Wenn ich den folgenden Code im Queryopen Event oder Queryclose Event aufrufe, bekomme ich immer
die Fehlermeldung "object variable not set", d.h. uiview ist null.
Die Fehlermeldung kommt immer, wenn zwischen Views gewechselt wird.

Im Postopen Event kommt die Fehlermeldung nur ab und zu, dann aber beim Starten der DB.

In einem dieser Events benötige ich aber den Code.
Wo kann uiview noch initialisiert werden, oder woran liegt es?


Dim view As NotesView
Dim uiview As NotesUIView
Set uiview = uiworkspace.CurrentView
Set view = uiview.View

Titel: Re: Set view = uiview.View (object variable not set)
Beitrag von: Klafu am 14.02.19 - 15:36:29
Wenn du beim öffnen einer Datenbak schon die CurrentView willst, dann ist die ja sicher bekannt, welche Notes öffnen wird.
Hol sie doch lieber gleich direkt.

Code
Dim session As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Set db = session.CurrentDatabase
Set view = db.GetView( "Authors" )


P.S. Ist es Absicht, dass in deinem Codeschnippsel das Dim uiworkspace As New NotesUIWorkspace fehlt?

Chris
Titel: Re: Set view = uiview.View (object variable not set)
Beitrag von: booltrue am 15.02.19 - 11:04:15

Ja, da hast du ganz recht.
Ich mach' das immer ziemlich generisch, ist aber nicht immer angebracht bei Notes  :)
Die View ist ja schon bekannt, habe das nun auch so umgesetzt.

Dim uiworkspace As New NotesUIWorkspace hat es wohl nicht mitkopiert  :-:
das sollte da aber schon stehen.

Der Code steht im Queryopen event.
Am Schluß rufe ich Call uiworkspace.ViewRebuild auf.
Bekomme hier aber immer beim Öffnen(und nur beim Öffnen) der Datenbank folgenden Fehler:
"Der angegebene Befehl ist vom Arbeitsbereich aus nicht verfügbar"

Woran liegt das?

Titel: Re: Set view = uiview.View (object variable not set)
Beitrag von: Peter Klett am 15.02.19 - 12:08:21
Das ist vermutlich zu früh, ist ja QueryOpen, also vor dem Öffnen. Prüfe mal, ob Du das Rebuild überhaupt brauchst, ansonsten ins PostOpen verlagern

EDIT: ist vermutlich Quatsch. Im welches QueryOpen handelt es sich? Das der Ansicht oder des Dokuments?
Titel: Re: Set view = uiview.View (object variable not set)
Beitrag von: booltrue am 15.02.19 - 13:12:22

Es handelt sich um das QueryOpen Event der Ansicht und ja, es scheint dafür zu früh zu sein.
Ich habe den Code nun ins QueryClose Event verschoben, sollte aber auch im Postopen Event laufen, ja

Was ich mache:
Ich habe im View 3 Buttons zum Filtern der Ansicht,
dort wird folgender Code ausgeführt, der die Ansichtsauswahl-Formel ändert:
NewViewFormula = |SELECT Form = "form" & Spalte1 = "x" & Spalte2 ="y"|
view.SelectionFormula = NewViewFormula
Call uiworkspace.ViewRebuild

Der gleiche Code wird im QueryClose Event aufgerufen, um die Ansichtsauswahl-Formel wieder in den Ursprungszustand zu ändern.
Wenn ich dort kein .ViewRebuild mache, dann bleibt der Filter beim Wechsel der Ansicht und beim Neustart der Datenbank erhalten.


Titel: Re: Set view = uiview.View (object variable not set)
Beitrag von: umi am 15.02.19 - 14:49:20
Moin

Ist das eine Private Ansicht ? oder hat da jeder Benutzer Designer Rechte ?
Titel: Re: Set view = uiview.View (object variable not set)
Beitrag von: booltrue am 18.02.19 - 09:48:52

Wie ist das gemeint:
Code
oder hat da jeder Benutzer Designer Rechte ?

Die Ansicht ist als Ansichtstyp "Gemeinsam" angelegt.