Domino 9 und frühere Versionen > ND8: Entwicklung

Ordner per Lotusscript anlegen funktioniert nicht

(1/3) > >>

jo@chim:
Ich möchte benutzerdefinierte Ordner per Lotusscript anlegen - benötige das, um Suchergebnisse anzuzeigen. Wenn ich SPOFU's benutze, funktioniert das PutAllInFolder aus der Suchroutine nicht, bzw. nicht zuverlässig.

Ich habe mir folgendes Script gebastelt, das ich aus einem Agenten heraus aufrufen will, der ansonsten mit vollständigen Admin-Rechten (manipuliert die ACL) korrekt läuft:


--- Code: ---Sub createPersonalFolders(user$)
Dim session As New NotesSession
Dim sourceDb As New NotesDatabase("","")
Dim sourceFolder As NotesDocument
Dim destFolder As NotesDocument

user$="test"

Set sourceDb=session.Currentdatabase
'On Error Resume Next
ForAll folder In sourceDb.Views
If folder.IsFolder And folder.Name="SearchFolderTemplate" Then
Set sourceFolder = sourceDb.GetDocumentByUNID(folder.UniversalID)
Set destFolder = New NotesDocument( SourceDB )
Call destFolder.CopyAllItems( sourceFolder,True)
destFolder.~$TITLE="searchfolder_" & user$ &"|searchfolder_" & user$
Call destFolder.save(True,False)
Set destFolder = destDb.GetView(folder.Name)
Exit forall
End If
End ForAll
End Sub
--- Ende Code ---

Wenn ich nun mein obenstehendes Script als Subroutine in dem Agenten laufen lasse, hängt sich der Client auf und der Ordner "searchfolder_test" wird auch nicht erstellt.

Hat jemand eine Idee, wo mein Fehler liegen könnte?

Axel:
Hast du das Recht in der Datenbank persönliche Ordner zu erstellen?

Axel

Peter Klett:
Wenn ich das richtig verstanden habe, geht es nicht um persönliche Ordner.

Was funktioniert bei SPOFU's nicht (baue nämlich gerade auch so etwas und nutze die dabei)?

Einige Dinge sind mir aufgefallen, ist aber nicht fundiert, sondern nur "Bauchgefühl"


Sub createPersonalFolders(user$)
    Dim session As New NotesSession
    Dim sourceDb As New NotesDatabase("","")
    Dim sourceFolder As NotesDocument
    Dim destFolder As NotesDocument
   
    user$="test"
   
    Set sourceDb=session.Currentdatabase   
    'On Error Resume Next  -> hier würde ich in eine Fehlerroutine springen und mir Details ausgeben lassen
    ForAll folder In sourceDb.Views
       If folder.IsFolder And folder.Name="SearchFolderTemplate" Then
          Set sourceFolder = sourceDb.GetDocumentByUNID(folder.UniversalID) -> m.W. kann man Gestaltungselemente nur über die NoteID, aber nicht über die UniversalID holen, also GetDocumentByID (folder.NoteID), mag aber auch nur in alten Versionen so gewesen sein
          Set destFolder = New NotesDocument( SourceDB )
          Call destFolder.CopyAllItems( sourceFolder,True)
          destFolder.~$TITLE="searchfolder_" & user$ &"|searchfolder_" & user$
          Call destFolder.save(True,False)
          Set destFolder = destDb.GetView(folder.Name) -> wozu?
          Exit forall
       End If
    End ForAll
End Sub

jo@chim:
Das Recht habe ich Axel. Der Agent sollte es doch auch haben, wenn er signiert ist und mit vollständigen Admin-Rechten läuft, oder? Es geht aber in dem Fall nicht um persönliche Ordner, sondern darum öffentliche Ordner in der Form "searchfolder_benutzername" zu erstellen. Mit SPOFUs hat wie gesagt die Übergabe der Entry Collection nicht zuverlässig funktioniert.

Peter Klett:
Nochwas

Set destFolder = destDb.GetView(folder.Name)

destDb ist nirgends definiert (aber m.E. eh überflüssig, wie ich schon geschrieben hatte)

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln