Domino 9 und frühere Versionen > ND6: Entwicklung

Seltsames Verhalten beim Löschen von Antwortdokumenten

(1/6) > >>

iukhdh:
Hallo Forum,

ich brauch mal wieder Eure Hilfe.

Ich habe eine DB, in der ich mit Haupt- und Antwortdokumenten arbeite. Die Antwortdokumente übergeben Infos an die Hauptdokumte, was bei meinem Problem sicherlich nicht relevant ist, aber zum Verständnis vom Code unten hilfreich ist. Die Infos müssen nämlich beim Löschen auch wieder entfernt werden.

Nun mein Problem:

Ich habe den angehängten Löschcode in einem Agenten, der über eine Ansichtsaktion aufgerufen wird. Wenn ich nun irgendein Antwortdokument markiere und damit löschen will, geht das beim ersten Versuch nicht. Bei allen folgenden Versuchen klappts dann aber. D.h., auch alle anderen Antwortdokumente kann ich problemlos löschen, nur der erste Versuch zu löschen wird verweigert.

Wenn ichs im Debugger verfolge, dann springt er beim ersten Durchlauf bei der Roten Zeile zum Endif. Aber warum?

Irgendwie steh ich mal wieder aufm Schlauch.

Wäre für einen kleinen Anstoß dankbar.

Thomas




--- Zitat ---Sub Initialize
   Dim session As New NotesSession
   Dim db As Notesdatabase
   Dim collMarked As NotesDocumentCollection
   Dim docToChange As NotesDocument
   Dim docTemp As NotesDocument
   Dim nuiw As New NotesUIWorkspace
   
'Hol die aktuelle Datenbank
   Set db=session.CurrentDatabase
'Hol die markierten Dokumente
   Set collMarked = db.UnprocessedDocuments
'Hol das erste der Markierten Dokumente
   Set docToChange = collMarked.GetFirstDocument
   
'Schleife um die markierten Dokumente der Reihe nach zu löschen   
   While Not (docToChange Is Nothing)
      
      ' Das nächste zu löschende Dokument wird schonmal rausgesucht      
      Set docTemp = collMarked.GetNextDocument (docToChange)
      
      'Löschen nur bei Antwortdokumenten (Mitarbeiter) durchführen
      If doctochange.IsResponse Then
         
'Hier wird das Hauptdokument gesucht und dort die SummederPunkte reduziert und WerteinesPunktes neu gerechnet
         Dim Hauptdok As NotesDocument
         Dim Ref As String
         Ref = docToChange.ParentDocumentUNID
         Set Hauptdok = db.getdocumentbyUNID(Ref)
         Hauptdok.SummederPunkte=Hauptdok.SummederPunkte(0) - docToChange.LOBPunkte(0)
         
         If Hauptdok.SummederPunkte(0)=0 Then
            Hauptdok.WerteinesPunktes=0
         Else
            Hauptdok.WerteinesPunktes=Hauptdok.Verteilsumme(0)/Hauptdok.SummederPunkte(0)
         End If
         
         Call Hauptdok.Save(True,False)
         
'Der geänderte WerteeinesPunktes vom Hauptdokument wird an die Antwortdokumente übergeben
         Dim dc As NotesDocumentCollection
         Set dc = Hauptdok.Responses
         Call dc.StampAll( "WerteinesPunktes" , Hauptdok.WerteinesPunktes(0) )
         
         
'Das aktuell markierte Dokument wird gelöscht      
         Call docToChange.Remove( True)
         
      End If
      
      
'Das schon rausgesuchte,  nächste Dokument wird zum aktuellen Dokument      
      Set docToChange = docTemp
   Wend
   
'Ansicht aktualisieren
   Call nuiw.ViewRebuild
   
End Sub
--- Ende Zitat ---

Axel:
Auf welches Dokument zeigt denn die Variable doctochange wenn er aussteigt?


Axel

iukhdh:
Er zeigt auf garkein Dokument, erst beim zweiten Mal zeigt er auf das ausgewählte Dokument.

iukhdh:
Also jetzt hab ich noch ein paarmal rumprobiert, ich muss meine Aussage von oben etwas verbessern:

Das ganze funktioniert, wenn ich mehrere Antwortdokumente habe. Es klappt nicht, wenn ich nur ein einziges Antwortdokument habe. Da scheint das collmarked schon garnicht gefüllt zu werden.

 ???

koehlerbv:
Doch, das ist dann auch gefüllt (.Count = 1). Dein GetNextDocument läuft dann aber ins Leere.

Bernhard

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln