Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: @Dirk am 07.04.10 - 15:47:54

Titel: - Notes-Fehler: Es wurden keine Dokumente kategorisiert - nach StampAll
Beitrag von: @Dirk am 07.04.10 - 15:47:54
Hallo Notes Forum,

habe folgenden Agenten geschrieben, (Alle Dokumente; Menue Aktionen; Privat)
leider erhalte ich immer die Fehlermeldung:
"Notes-Fehler: Es wurden keine Dokumente kategorisiert"
bei der Ausführung von -->Call dcResponses.StampAll( "fldReaders" , doc.fldReaders)

Kann vielleicht jemand was damit anfangen?
Zur Info:
dc.count() > ca 2500 Dokumente
dcResponses.count() > 0 bis 10 Dokumente
doc.fldReaders >  String-Liste


Sub Initialize
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim dc As NotesDocumentCollection
   Dim dcResponses As NotesDocumentCollection   
   Dim doc As NotesDocument
   
   Dim x As Integer
   Dim strSearch As String   
   
   Set db = session.CurrentDatabase
   strSearch = {(Form = "frm_EAP")}
   Set dc=db.Search(strSearch,Nothing,0)
   
   For x = 1 To dc.Count()
      Set doc= dc.GetNthDocument(x)      
      If Not doc Is Nothing  Then
         Set dcResponses = doc.Responses()
         Call dcResponses.StampAll( "fldReaders" , doc.fldReaders)
      End If      
   Next
   
End Sub


Vielen Dank
Dirk
Titel: Re: - Notes-Fehler: Es wurden keine Dokumente kategorisiert - nach StampAll
Beitrag von: Grischu am 09.04.10 - 14:09:54
So würd ich das schreiben.

Wenn ein Dokument noch nie ein Antwortdokument hatte ist doc.Responses nicht initialisiert. Warum - keine Ahnung.

Code
Sub Initialize
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim dc As NotesDocumentCollection
   Dim dcResponses As NotesDocumentCollection   
   Dim doc As NotesDocument
   
   Dim x As Integer
   Dim strSearch As String   
   
   Set db = session.CurrentDatabase
   strSearch = {(Form = "frm_EAP")}
   Set dc=db.Search(strSearch,Nothing,0)

   Set doc = dc.GetFirstDocument   
   Do until doc is nothing
       if not dc.Responses is nothing then
          Set dcResponses = doc.Responses
          if dcResponses.count>0 then
             Call dcResponses.StampAll( "fldReaders" , doc.fldReaders)
          End if
       End if
       Set doc = dc.GetNextDocument(doc)
   Loop
   
End Sub

Titel: Re: - Notes-Fehler: Es wurden keine Dokumente kategorisiert - nach StampAll
Beitrag von: koehlerbv am 10.04.10 - 02:10:03
Noch ein Nachtrag, Dirk: Der folgende Code ist in 99,9% der Fälle der schlechtest denkbare. GetNthDocument berechnet jedes Mal den Zeiger auf das xte Dokument neu - und zwar von Anfang an! Am Anfang geht das fix. Ab 100 wird es träge, aber 1000 kann man den Dokumenten schon hinterherschauen und bald kommt dann schon der Moment, wo man in aller Ruhe jedem Dokument die Hand schütteln kann!

   For x = 1 To dc.Count()
      Set doc= dc.GetNthDocument(x)      
      If Not doc Is Nothing  Then
         Set dcResponses = doc.Responses()
         Call dcResponses.StampAll( "fldReaders" , doc.fldReaders)
      End If      
   Next

Es gibt Ausnahmefälle, aber ... siehe oben.
Um Grössenordnungen schneller:
Code
Set NotesDocument = NotesDocumentCollection.GetFirstDocument
While Not (NotesDocument Is Nothing)
   .. do what a man have to do
   Set NotesDocument = NotesDocumentCollection.GetNextDocument (NotesDocument)
Wend

Dem, was Grischu bereits geschrieben hat, ist natürlich nichts hinzuzufügen (ausser: Doch, das ist durchaus erklärbar).

HTH,
Bernhard
Titel: Re: - Notes-Fehler: Es wurden keine Dokumente kategorisiert - nach StampAll
Beitrag von: @Dirk am 12.04.10 - 12:59:57
Vielen Dank für die Hinweise,

hatte mir mit einer Schleife geholfen und eure Vorschläge eben eingebaut.

Sieht jetzt so aus:

   Set doc= dc.GetFirstDocument()   
   Do Until doc Is Nothing
      If Not doc.Responses() Is Nothing Then         
         Set dcResponses = doc.Responses()
         Set docTmp = dcResponses.GetFirstDocument()
         Do Until docTmp Is Nothing
            Call docTmp.ReplaceItemValue(...   


Titel: Re: - Notes-Fehler: Es wurden keine Dokumente kategorisiert - nach StampAll
Beitrag von: Grischu am 13.04.10 - 10:24:42
Zitat
ausser: Doch, das ist durchaus erklärbar

Das bestreite ich nicht, ich weiss die Erklärung nur nicht    ;D