Domino 9 und frühere Versionen > ND7: Entwicklung

Problem mit einem Script

<< < (4/4)

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