Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Christian97 am 13.07.04 - 10:00:46
-
Hallo,
im Anschluß an einen Import möchte ich in den Dokumenten noch einige Felder berechnet lassen. In der Maske sind diese Felder vom Typ "Berechnet beim Anlegen". Allerdings muß ich dazu jedes importierte Dokument zum Bearbeiten öffnen, speichern und wieder schließen. Ich habe versucht, mir einen Button-Agenten in der Ansicht zu erstellen, der mir jedes Dokument in der Ansicht durchgeht, die Dokumente nacheinander öffnet, speichert und wieder schließt. Bisher sieht mein Code so aus:
Sub Click(Source As Button)
Dim ws As New notesuiworkspace
Dim session As New NotesSession
Dim db As NotesDatabase
Dim collection As NotesDocumentCollection
Dim doc As NotesDocument
Dim uidoc As NotesUIDocument
Set db = session.CurrentDatabase
Set collection = db.UnprocessedDocuments
Set doc = collection.GetFirstDocument()
While Not(doc Is Nothing)
Set uidoc = ws.CurrentDocument
Call ws.EditDocument(True)
Call uidoc.save
Call uidoc.close
Set doc = collection.GetNextDocument(doc)
Wend
End Sub
Beim Save und Close kommt aber immer die berühmte Fehlermeldung "Object variable not set". Aber ich hab doch das uidoc gesetzt. Was mach ich falsch?
Danke
Christian
-
Du brauchst das UI Dokument nicht, sondern kannst ComputeWithForm verwenden.
Sub Click(Source As Button)
Dim session As New NotesSession
Dim db As NotesDatabase
Dim collection As NotesDocumentCollection
Dim doc As NotesDocument
Set db = session.CurrentDatabase
Set collection = db.UnprocessedDocuments
Set doc = collection.GetFirstDocument
While Not(doc Is Nothing)
call doc.ComputeWithForm(false,false)
call doc.Save(true,true,true)
Set doc = collection.GetNextDocument(doc)
Wend
End Sub
Andreas
-
... dein uidoc wird falsch initialisiert, den du hast kein ws.CurrentDocument
Set uidoc = ws.EditDocument( True , doc )
-
Btw : Meistens reicht für den Fall auch ein simpler @Command([ToolsRefreshSelectedDocs]) bzw. @Command([ToolsRefreshAllDocs]).
-
Vielen Dank erstmal an Euch drei!
@Driri:
Hätte nicht gedacht, daß es doch noch eine @Formel-Lösung gibt. Allerdings muß ich da erst alle Dokumente markieren.
@Glombi:
Bei Deiner Lösung passiert bei mir gar nichts. Ich erkenne hinterher zumindest nicht, daß die neuen Felder (und auch der Fenstertitel) berechnet wurden.
@ata:
Ich habe die eine Zeile abgeändert. Aber ich muß vorher alle Dokumente markieren. Werden nicht durch die Collection automatisch alle Dokumente der Ansicht durchlaufen?
Christian
-
Nö, wenn Du die Formel aus einer View heraus startest, in der die Dokumente drin sind, reicht [ToolsRefreshAllDocs].
-
@Driri:
Hmm, jetzt klappt's. Warum das Command beim ersten Versuch nicht ging und nur @Command([ToolsRefreshSelectedDocs]) ist mir ein Rätsel.
Vielen Dank!
Christian
-
Gerne ;)