Ich habe schon öfter mal am Rande gehört/gelesen, dass es Probleme gibt, wenn man "Shared, Private on 1st use" - Ordner aktualisieren will als Developer.
Aktuell muss ich eine db.Search - Suchfunktion in eine DB einbauen. Die Ergebnisse zeige ich in solch einem Ordner an (ich glaube das macht Sinn).
Jetzt habe ich mir folgendes "Konstrukt" überlegt in dem Search-Code-Buhtong:
Set view = db.GetView(FOLDERNAME)
If Not (view Is Nothing) Then Call view.Remove
Call uiws.SetTargetFrame("viewframe")
Call uiws.CurrentDatabase.OpenView(FOLDERNAME)
Set view = db.GetView(FOLDERNAME)
Ich lösche also erstmal den Ordner, wenn der vorhanden ist.
Dann kommt das übliche (Suchmaske, Ergebnisse wandern in die db.search - Formel).
Danach soll die (via db.search) gefüllte DocCollection in den Folder:
Call coll.PutAllInfolder(FOLDERNAME)
Und da kommt dann jetzt beim Testen meistens folgende Fehlermeldung:
Can't move document to shared Private On First Use folder (TestSearch01)
(in der Zeile: Call coll.PutAllInFolder...)
Ich gehe mal davon aus, weil ich '"ihm" den Folder wegziehe, irgendwas ist wohl nicht initialisiert (wobei dann die Fehlermeldung nicht ganz richtig wäre). **EDIT ** Lt. Debugger ist die "view"-Variable leer.
Ohne den o.g. Stunt (view.remove) funktioniert das ganze.
Mich würde interessieren: Wie realisiert Ihr das?
Danke für Eure Tipps !
Die DB soll übrigens auch in ND6 laufen. Da bin ich auch auf diesen Thread gestossen, der sehr hilfreich war: Index is not to be generated on server (http://www.atnotes.de/index.php?board=3;action=display;threadid=11338).
Für mich ist nach wie vor interessant: Wie werfe ich SPOFU-Folder wieder zeitnah raus (wegen Designänderung).
Da hab ich mir folgendes fürs DB-Script überlegt:
Sub Queryclose(Source As Notesuidatabase, Continue As Variant)
Dim session As New NotesSession
Dim db As NotesDatabase
Dim viewSPOFU As NotesView
Set db = session.CurrentDatabase
'-------------------- Workaround due to a ND6-Bug, see KB #1108323
If session.NotesBuildVersion<190 Then 'If running R5 then simply use GetView.
Set viewSPOFU = db.GetView(S_FOLDERNAME)
Else 'If ND6: we need a loop workaround
Forall v In db.Views
If v.name = S_FOLDERNAME And Isarray(v.readers) Then
If v.readers(0)=session.UserName Then
Set viewSPOFU = v
Exit Forall
End If
End If
End Forall
End If
'---------------------------------------------------------------------------------------------------------------
Call viewSPOFU.Remove
End Sub
Das heißt bei jedem Schließen der DB wird der SPOFU gelöscht.
Im Postopen dann wie von Axel vorgeschlagen:
@Command([OpenView]; "TestSearch01");
@Command([FileCloseWindow])
Beim ersten Test funktioniert es so wunderbar.
Wie handhabt Ihr es mit der Thematik SPOFU & Designänderung des Folders?