Autor Thema: - Notes-Fehler: Es wurden keine Dokumente kategorisiert - nach StampAll  (Gelesen 3522 mal)

Offline @Dirk

  • Frischling
  • *
  • Beiträge: 19
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

Offline Grischu

  • Frischling
  • *
  • Beiträge: 40
  • Geschlecht: Männlich
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

Twitter is eine typische Erscheinung der Generation ADS & SMS. Für einen Brief zu faul, für einen kompletten Satz zu dumm und für korrekte Grammatik zu cool.

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
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

Offline @Dirk

  • Frischling
  • *
  • Beiträge: 19
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(...   



Offline Grischu

  • Frischling
  • *
  • Beiträge: 40
  • Geschlecht: Männlich
Zitat
ausser: Doch, das ist durchaus erklärbar

Das bestreite ich nicht, ich weiss die Erklärung nur nicht    ;D
Twitter is eine typische Erscheinung der Generation ADS & SMS. Für einen Brief zu faul, für einen kompletten Satz zu dumm und für korrekte Grammatik zu cool.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz