Domino 9 und frühere Versionen > Entwicklung

Dokument öffnen, speichern und wieder schließen in Script

(1/2) > >>

Christian97:
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

Glombi:
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

ata:
... dein uidoc wird falsch initialisiert, den du hast kein ws.CurrentDocument

Set uidoc = ws.EditDocument( True , doc )

Driri:
Btw : Meistens reicht für den Fall auch ein simpler @Command([ToolsRefreshSelectedDocs]) bzw. @Command([ToolsRefreshAllDocs]).

Christian97:
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

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln