Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: Jürgen Schomann am 10.12.10 - 19:51:52

Titel: Ordner 'Gemeinsam, privat bei Erstbenutzung'
Beitrag von: Jürgen Schomann am 10.12.10 - 19:51:52
In LotusScript kann man über NotesDatabase.GetView einen Ordner 'Gemeinsam, privat bei Erstbenutzung' holen. Falls der Ordner noch nicht vorhanden ist, wurde bisher unter Notes 7 das NotesView-Objekt auf Nothing gesetzt. So kann ich dann darauf reagieren und den Ordner z. B. über NotesUIWorkspace.OpenDatabase... anlegen. Dies klappt bisher auch immer.
In Notes 8.5.2 wird dagegen auch dann ein NotesView-Objekt geliefert, wenn der private Ordner noch nicht da ist. Aber ein Zugriff z. B. mit NotesView.AllEntries führt dann zu dem Fehler 'Eintrag im Index nicht gefunden'.
Wie kann ich die bisherige Arbeitsweise auch in Notes 8 erreichen?
Titel: Re: Ordner 'Gemeinsam, privat bei Erstbenutzung'
Beitrag von: marschul am 13.12.10 - 10:44:32
Hallo Jürgen,

hilft mglw. die view property .IsPrivate weiter? Die müsste ja auf False stehen und mit der von Dir angewandten Methode notesuiworkspace.opendatabase... anschließend True liefern.

Gruß
Marco
Titel: Re: Ordner 'Gemeinsam, privat bei Erstbenutzung'
Beitrag von: Jürgen Schomann am 15.12.10 - 13:14:15
Vielen Dank für deine Antwort aber leider klappt dies unter 8.5 nicht. Das View-Objekt wird als nicht Nothing geliefert aber es lässt sich nicht ansprechen.
Hier der Code:

Dim session As New NotesSession
Dim dbThis As NotesDatabase
Dim viewFolder As NotesView

Set dbThis = session.CurrentDatabase
Set viewFolder = dbThis.GetView("Test1")

If Not (viewFolder Is Nothing) Then
                                                               unter Notes 8.5 wird hierher verzweigt obwohl der private Ordner nicht gefunden wurde
   If viewFolder.IsPrivate Then           bei dieser Anweisung bricht LotusScript unter Notes 8.5 dann ab mit der Meldung
                                                               Fehlercode 4005 - Notes error: Index is not to be generated on server.
   Else
      ...
   End If
Else
   unter Notes 7 wird hierher verzweigt, wenn der private Ordner nicht gefunden wurde
End If
Titel: Re: Ordner 'Gemeinsam, privat bei Erstbenutzung'
Beitrag von: marschul am 15.12.10 - 13:36:35
Mmmh, auch wenn's unschön ist, aber der Fehler ließe sich im Zweifel abfangen und gezielt nutzen...

Wo werden denn die privaten Views gespeichert - In der DB auf dem Server oder im Desktop? Ein ähnliches Problem kenne ich nämlich, wenn sie im Desktop landen - dann kann man das Objekt zwar instanzieren, damit aber nix anfangen :-(  (hatte ich allerdings in einer älteren Notes-Version, R8.5 konnte ich diesbezüglich noch nicht testen)

Gruß
Marco
Titel: Re: Ordner 'Gemeinsam, privat bei Erstbenutzung'
Beitrag von: Jürgen Schomann am 16.12.10 - 15:39:02
Der Ordner ist nicht auf dem Desktopn, die Bezeichnung wäre dann auch 'Gemeinsam, für Desktop privat bei Erstbenutzung', die wir aber wegen grundsätzlichen Problemen nicht verwenden. Der Benutzer hat auch die Berechtigung 'Private Ordner/Ansichten erstellen'. Ohne diese würden Ordner 'Gemeinsam, privat bei Erstbenutzung' automatisch auf dem Desktop erstellt werden.
Ich habe auch eine Lösung für das genannte Problem, indem ich alle Ansichten über NotesDatabase.Views nach dem Ordner durchsuche und über das intere Feld $Flags prüfe ob es der private Ordner ist. Andernfalls lege ich ihn über NotesUIWorkspace.OpenDatabase... an. Dies klappt in Notes 7 und 8.5.
Ungeachtet dessen ist aber eben die Reaktion bei NotesDatabase.GetView, nicht wie unter Notes 7 Nothing für das Objekt zu liefern, wenn der Ordner nicht vorhanden ist, schlicht weg falsch.
Titel: Re: Ordner 'Gemeinsam, privat bei Erstbenutzung'
Beitrag von: marschul am 17.12.10 - 08:02:41
Gute Idee mit dem $Flags-Item. Was mich wundert: Über die View in notesDatabase.Views kannst Du das Teil dann scheinbar doch abgreifen, d.h. darin ist es nicht Nothing?!?
Auf alle Fälle haben wir wieder dazu gelernt  :)

Viele Grüße
Marco

PS: Das Auslagern in den Desktop kann (konnte) sinnvoll sein, wenn die View userbezogene Selektionen enthält. Zumindest in früheren Versionen kam der Indexer auf dem Server ins Schleudern, wenn solche Views in der DB gespeichert wurden, was eine Benutzung der Anwendung teilweise fast unmöglich machte (sehr lange Wartezeiten).