Domino 9 und frühere Versionen > ND7: Entwicklung
Problem mit einem Script
ewald:
ich glaub, jetzt hab ich es verstanden. jetzt gehts.
das set doc= hab ich oben rausgenommen, weil ich unten ja
Set doc = collection.GetNthDocument( j ) eh schon stehen habe.
DAU-in:
Es gibt Frontend- und Backendmethoden.
ws.currentdocument liefert dir das Dokument, das gerade am Bildschirm geöffnet ist, als Frontenddokument.
ws.currentDocument.document liefert dir das Backenddokument, das zu diesem Frontenddokument gehört.
Wenn du kein Dokument am Bildschirm geöffnet hast, bekommst du
Set uidoc = ws.currentdocument
als leer zurück (siehe Debugger)
und da du anschliessend das Backenddokument mit Hilfe des Frontenddokumentes (indirekt über ws.currentdocument ) belegen willst
Set doc = ws.currentdocument.document
kommt dann die Meldung 'Object variable not set', da eben das Frontenddokument nicht da ist, an dem sich dein Skript gerade langhangeln will.
und das hier
Dim doc As NotesDocument
Set doc = ws.currentdocument
kann schon gar nicht funktionieren, weil ws.currentdocument ein NotesUIDocument zurückgibt, und kein Notesdokument.
eknori:
schmeisse das
Set uidoc = ws.currentdocument
Set doc = ws.currentdocument
raus, dann sollte es funktionieren
Axel:
Ich habe das Script mal ein bisschen angepasst und eine minimale Fehlerbehandlung eingebaut. Eine Fehlerbehandlung ist das A und O einer Programmierung. Zu kannst z.B. nicht davon ausgehen, dass immer ein Profildokument vorhanden ist.
So sollte es eigentlich funktionieren.
Dim ws As New NotesUIWorkspace
Dim session As New NotesSession
Dim db As NotesDatabase
Dim uiview As NotesUIView
Dim collection As NotesDocumentCollection
Dim doc As NotesDocument
Dim profDoc As NotesDocument
Dim tmpSEAStartDate As String
On Error Goto ErrorHandler
Set db = session.CurrentDatabase
Set collection = db.UnprocessedDocuments
If collection.Count = 0 Then
Messagebox "Keine Dokumente markiert"
Exit Sub
End If
Set uiview = ws.CurrentView
' The profile document
Set profDoc = db.GetProfileDocument("MainProfile")
If profDoc Is Nothing Then
Messagebox "Kein Profildokument vorhanden"
'Hier kommt die weitere Fehlerbehandlung
'Wenn Fehler dann Ausstieg
Exit Sub
End If
tmpSEAStartDate = profDoc.dlgSEAStartDate(0)
Msgbox tmpSEAStartDate
Set doc = collection.GetFirstDocument 'Erstes Dokument
While Not (doc Is Nothing) 'Schleife solange ausführen wie Doks in collection
doc.SEAStartDate = tmpSEAStartDate 'Wert in Feld schreiben
'Alternativ wäre auch das möglich, dann sind die zwei Zeilen oben hinfällig
doc.SEAStartDate = profDoc.dlgSEAStartDate 'Wert in Feld schreiben
Call doc.Save( False, True )
Set doc = collection.GetNextDocument(doc) 'Zugriff auf nächsten Dokument
Wend
' Remove all the selections
Call uiview.DeselectAll
Ende:
Exit Sub
ErrorHandler
Messagebox "Es ist ein Fehler aufgetreten." & Chr$(13) & "Fehler: " & Str$(Err) + " -> '" & Error$ & _
"' in Zeile " & Str$(Erl) , 16, "Fehler"
Resume Ende
Axel
Navigation
[0] Themen-Index
[*] Vorherige Sete
Zur normalen Ansicht wechseln