Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Don Pasquale am 10.02.03 - 16:14:22
-
Hallo Leute,
folgendes Skript funktiniert nicht mehr.
Es ist im OpenQueryEreignis eines Public, Private on First Use Qrdners
>Set dc = view.GetAllDocumentsByKey(s.CommonUserName, True)
Die Collection ist gefüllt, aber
>Call dc.PutAllInFolder(ORDNER_EIGENE_DOKUMENTE, createonfail )
hat keine Wirkung !!!
Wer kann mir helfen ?
Dim ws As New NotesUiWorkspace
Dim s As New NotesSession
Dim view As NotesView
Dim dc As NotesDocumentCollection
Dim db As NotesDatabase
Dim ORDNER_DOKS_NACH_INITIATOREN As String
Dim ORDNER_DOKS_NACH_SENDEN_AN As String
Dim ORDNER_EIGENE_DOKUMENTE As String
ORDNER_DOKS_NACH_INITIATOREN = "_Initiator"
ORDNER_DOKS_NACH_SENDEN_AN = "_Senden"
ORDNER_EIGENE_DOKUMENTE = "Eigene Dokumente"
' Vielleicht sollte der Ordner vorher komplett geleert werden ?
On Error Resume Next
Set db = s.CurrentDatabase
Set view = db.GetView( ORDNER_EIGENE_DOKUMENTE )
Set dc = view.GetAllDocumentsByKey(s.CommonUserName, True)
Call dc.RemoveAllFromFolder( ORDNER_EIGENE_DOKUMENTE )
Set view = db.GetView(ORDNER_DOKS_NACH_INITIATOREN)
Set dc = view.GetAllDocumentsByKey(s.CommonUserName, True)
Call dc.PutAllInFolder( ORDNER_EIGENE_DOKUMENTE, createonfail )
Set view = db.GetView(ORDNER_DOKS_NACH_SENDEN_AN)
Set dc = view.GetAllDocumentsByKey(s.CommonUserName, True)
Call dc.PutAllInFolder(ORDNER_EIGENE_DOKUMENTE, createonfail )
Set view = db.GetView( ORDNER_EIGENE_DOKUMENTE )
Call ws.ViewRefresh
-
simle Frage: wie hoch ist der Count der dc-Collection im Debugger?
-
ca 55
-
Hi,
andere dumme Frage, der Ordner ist als persönlicher Ordner vorhanden ?
Meines wissen gibt es Probleme mit dieser Funktion wenn der Ordner nicht angelegt ist. Auch wenn du den createonfail - Parameter angibst, legt er keine Ordner an.
Ausserdem mußt du True oder False angeben und nicht createonfail.
Axel
-
und der Ordner heißt wirklich "Eigene Dokumente" und nicht anders, bzw es kommt keine Fehlermeldung, nix nada?
Don ???
laut Help:
createonfail
Boolean. Optional. Specify True so that a folder will be created if it does not exist.
Usage
If a document is already inside the folder you specify, PutAllInFolder does nothing for that document. If you specify a path to a folder, and none of the folders exist, the method creates all of them for you.
also schon mal das evtl.
Beispiel aus Help, weil mich wundert, daß Du den Ordner mit db.getview initiierst...weiß nicht, aber möglicherweise liehgt es daran...machs mal so wie im Beispiel:
Dim session As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim vc As NotesViewEntryCollection
Set db = session.CurrentDatabase
Set view = db.GetView("By Category")
Set vc = view.GetAllEntriesByKey("Fox")
>>>Call vc.PutAllInFolder("Machines")<<<
und lass also mal das erste mit dem remove und dem initialisieren als db.getview weg. Nur ne Idee wie gesagt. Und Axels Hinweis war wichtig, könnte es sein.
-
@Rob
ich bekomme folgende Fehlermeldung
Notes Error: Wenn Sie ein Antwortdokument in einen Ordner verschieben möchten, der die Antworthierarchie anzeigt, müssen Sie das Hauptdokument der obersten Ebene verschieben.
Ich weiss aber von keinen Antwortdokumenten in meiner Anwendung ?
Ciao
Don Pasquale
-
dann versuch das mal auf engl. zu übersetzen und geh mit einiges Keywords in die kNowledge Base..
http://eknori.dyndns.org/knowledge/kbnv11.nsf
-
Ob das Dokument ein Elterndokument hat findest du in dessen Dokumenteigenschaften, 2. Register nach $REf suchen, müsste einer der ersten Einträge sein. Wenn es das Feld gibt, dann hast du Elterndokumente - oder Replizierkonflikte...
ata
-
@Rob
ich habe alles mit RespondeDokuments oder Foldern
durchgesehen.
Es sind die Replizierkonflikte, davon habe ich dann und wann
welche.
Ciao
Don Pasquale
-
@Don
machst du mehrere Threads mit dem gleichen Thema auf ???
bevor dein code losbraust löscht du alle Replizierkonflikte am Anfang des Agents.
cu
-
@Performance
Jein,
das beide Sachen miteinander zusammenhingen hat sich mehr so ergeben,
ich bin selbst nciht ganz glücklich mit 2 threads
Wie löscht man Replizierkonflikte ?
Ich habe erstmal ein Locking eingebaut und die Masken auf Replizierkonfllikte mischen eingestellt. Habe ich damit noch nicht alles erschlagen ?
Ciao
Don Pasquale
-
- deine replication conflict view mit der Formel:
Select @IsAvailable($Conflict)
- die view holst du dir mit db.getview()
machst eine collectionaus den doks und dann löscht du mit collection.removeall
- oder ohne view
Dim colConflict As NotesDocumentCollection
Dim DateTime As New NotesDateTime( "01.01.1970" )
Set db = session.CurrentDatabase
Set colConflict = db.Search( "@IsAvailable(IsConflict)", DateTime , 0 )
Call colConflict.RemoveAll( True )
Wenn du in den Masken die Option Replicationskonflikte mischen setzt sollte das Feld $ConflictAction = "1" gesetzt werden.
cu
-
@Performance
Vielen Dank, das hört sich sehr brauchbar an.
Ich werde das morgen ausprobieren.
Caio
Don Pasquale