Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Don Pasquale am 10.02.03 - 16:14:22

Titel: Call dc.PutAllInFolder ohne Wirkung
Beitrag 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
Titel: Re:Call dc.PutAllInFolder ohne Wirkung
Beitrag von: Rob Green am 10.02.03 - 16:39:04
simle Frage: wie hoch ist der Count der dc-Collection im Debugger?
Titel: Re:Call dc.PutAllInFolder ohne Wirkung
Beitrag von: Don Pasquale am 10.02.03 - 16:39:36
ca 55
Titel: Re:Call dc.PutAllInFolder ohne Wirkung
Beitrag von: Axel am 10.02.03 - 16:45:15
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
 
Titel: Re:Call dc.PutAllInFolder ohne Wirkung
Beitrag von: Rob Green am 10.02.03 - 16:47:57
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.
Titel: Re:Call dc.PutAllInFolder ohne Wirkung
Beitrag von: Don Pasquale am 10.02.03 - 16:59:47
@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
Titel: Re:Call dc.PutAllInFolder ohne Wirkung
Beitrag von: Rob Green am 10.02.03 - 17:05:28
dann versuch das mal auf engl. zu übersetzen und geh mit einiges Keywords in die kNowledge Base..
http://eknori.dyndns.org/knowledge/kbnv11.nsf
Titel: Re:Call dc.PutAllInFolder ohne Wirkung
Beitrag von: ata am 10.02.03 - 17:27:43
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
Titel: Re:Call dc.PutAllInFolder ohne Wirkung
Beitrag von: Don Pasquale am 10.02.03 - 17:32:32
@Rob

ich habe alles mit RespondeDokuments oder Foldern
durchgesehen.

Es sind die Replizierkonflikte, davon habe ich dann und wann
welche.

Ciao

Don Pasquale

Titel: Re:Call dc.PutAllInFolder ohne Wirkung
Beitrag von: Performance am 10.02.03 - 18:04:15
@Don

machst du mehrere Threads mit dem gleichen Thema auf  ???


bevor dein code losbraust löscht du alle Replizierkonflikte am Anfang des Agents.




cu
Titel: Re:Call dc.PutAllInFolder ohne Wirkung
Beitrag von: Don Pasquale am 10.02.03 - 18:09:22
@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
Titel: Re:Call dc.PutAllInFolder ohne Wirkung
Beitrag von: Performance am 10.02.03 - 18:25:38
- 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
Titel: Re:Call dc.PutAllInFolder ohne Wirkung
Beitrag von: Don Pasquale am 10.02.03 - 18:33:33
@Performance

Vielen Dank, das hört sich sehr brauchbar an.
Ich werde das morgen ausprobieren.

Caio
Don Pasquale