Domino 9 und frühere Versionen > ND6: Entwicklung
Seltsames Verhalten beim Löschen von Antwortdokumenten
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