Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Christian97 am 13.07.04 - 10:00:46

Titel: Dokument öffnen, speichern und wieder schließen in Script
Beitrag 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
Titel: Re:Dokument öffnen, speichern und wieder schließen in Script
Beitrag von: Glombi am 13.07.04 - 10:05:36
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
Titel: Re:Dokument öffnen, speichern und wieder schließen in Script
Beitrag von: ata am 13.07.04 - 10:06:09
... dein uidoc wird falsch initialisiert, den du hast kein ws.CurrentDocument

Set uidoc = ws.EditDocument( True , doc )
Titel: Re:Dokument öffnen, speichern und wieder schließen in Script
Beitrag von: Driri am 13.07.04 - 10:10:18
Btw : Meistens reicht für den Fall auch ein simpler @Command([ToolsRefreshSelectedDocs]) bzw. @Command([ToolsRefreshAllDocs]).
Titel: Re:Dokument öffnen, speichern und wieder schließen in Script
Beitrag von: Christian97 am 13.07.04 - 10:45:13
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
Titel: Re:Dokument öffnen, speichern und wieder schließen in Script
Beitrag von: Driri am 13.07.04 - 10:48:13
Nö, wenn Du die Formel aus einer View heraus startest, in der die Dokumente drin sind, reicht [ToolsRefreshAllDocs].
Titel: Re:Dokument öffnen, speichern und wieder schließen in Script
Beitrag von: Christian97 am 13.07.04 - 10:51:00
@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
Titel: Re:Dokument öffnen, speichern und wieder schließen in Script
Beitrag von: Driri am 13.07.04 - 11:05:51
Gerne  ;)