Domino 9 und frühere Versionen > Entwicklung
Probleme mit "Dokument schliessen"
Kadlec:
In einem Dokument welches im Edit Modus ist starte ich einen Agenten der:
1. aus einer Excel Datei werte in ein Notes Feld schreibt.
2. Diese Excel Datei in ein RT Feld anhängt.
Zum Schluss wurde das Dok. geschlossen und gut war.
Dies funktioniert auch Prima.
Bei einem Test hatte ich nun eine Datei mit 300 Zeilen also 300 Zellen die in das Feld in Notes geschrieben werden.
Da man hier ja nun nur die Sanduhr sieht, dachte ich mir "ei wie wär das schön" wenn mann(Frau) wie beim Import, ein Fenster sieht mit dem Fortschrittsbalken etc.
Da ist mir eingefallen das ich das hier schon mal gesehen hatte.
Gesucht, gefunden (ExcelExport Script v2.00 von TMC, Danke dafür), eingebaut.
Nun bekam ich aber einen Fehler 91: Object Variable not set.
Dieser kam beim Befehl Call doc.save(True,True).
Gesetzt hatte ich doc mit uidoc.Document.
Nun hatte ich schon mal das Problem das ich das doc über die DocId setzen musste.
Das habe ich dann auch hier gemacht und alles ist wunderbar.
Ausser das ich das Dok. geschlossen bekomme, habe aber keinen Schimmer was ich da tun kann???
Axel:
Hi,
was sagt den der Debugger? War doc auch wirklich initialisiert?
Kannst du auch mal ein bisschen Code posten? Vielleicht wird's dann ein bisschen klarer.
Axel
TMC:
Ganz genau, kann mich Axel nur anschließen.
Vermutlich hast Du da Probleme, weil Du mit Backend & Frontend - Klassen arbeitest, und zum Schluß irgend ein Handle-Problem vorliegt.
Code wäre wichtig, gerade eben der letzte Bereich wo das auftritt.
Und arbeite auch immer mit Zwischenabfragen à la
If doc Is Nothing Then Error 1001, "Dokument ist nicht initialisiert !"
Dann ein entsprechendes ErrorHandling im Script.
Kadlec:
Also das mit dem Debugger ist so ne Sache, der hängt sich immer auf.
Danach geht nur noch Taskmanager Notes beenden usw.
Also das das doc. initial. ist davon kann man denke ich ausgehen, denn:
1. ohne die Progressbar funkt. alles, Zellwerte aus Excel werden übernommen und der Anhang wird in das entsprechende Feld gehängt.
2. mit Progressbar gibts die Fehlermeldung und der Anhang wird an das ende des doks unter einer Linie angehängt.
Zum Code:
1. Der Teil in den ich die Progressbar eingefügt habe.
Dim pb As New LNProgressBar(True) 'Progress Bar
row = 1
Do While True
With xlSheet
If .Cells(row,ColPartNoNotDoc(0)).Value = "Freigabe" Then
Goto Done
End If
'---> ProgressBar
Call pb.SetText("Lade Teil Nummern von Excel","Teil Nummer " & row-1 & " von " & CounterPartNo & " geladen")
Call pb.SetProgressRange(CounterPartNo) ' max range of progress bar - must be long-datatype
Call pb.SetProgressPos(row-1) ' current integer
'<---- ProgressBar
PartNumbersExcel = xlCells(row,ColPartNoNotDoc(0)).Value
' Evt. werden im Excel Anhang die Teil Nummern formatiert (xx xxx xxx) deshalb werden nun die Leerzeichen entfernt
PartNumbers = Evaluate({@ReplaceSubstring("}+PartNumbersExcel+{";" ";"")})
If PlantTypeSelect = "Assembly" Then
Call uidoc.FieldAppendText("AssyPartNumber_T", Cstr(PartNumbers(0)) & ",")
Else
Call uidoc.FieldAppendText("CompPartNumber_T", Cstr(PartNumbers(0)) & ",")
End If
End With
row = row + 1
Loop
2. das ist der Teil für das Erstellen des Anhangs
Dim unid As String
Dim DocIDView As NotesView
Dim view As NotesView
Dim doc As NotesDocument
Dim rtitem As NotesRichTextItem
Dim object As NotesEmbeddedObject
Set doc = uidoc.Document
unid = doc.UniversalID
Delete doc
Set DocIDView = db.GetView( "LUAllWOAttachm_V" )
Set doc = DocIDView.GetDocumentByKey(unid)
' Datei Anhang erstellen
If PlantTypeSelect = "Assembly" Then
Set rtitem = New NotesRichTextItem( doc, "AssyMemo_R" )
Set object = rtitem.EmbedObject _
( EMBED_ATTACHMENT, "", FilePathName)
Else
Set rtitem = New NotesRichTextItem( doc, "CompMemo_R" )
Set object = rtitem.EmbedObject _
( EMBED_ATTACHMENT, "", FilePathName)
End If
Call uidoc.save
Call uidoc.close
Call doc.save(True,True)
Nochmal kurz zum Problem:
Ohne die 4 Zeilen für die Progressbar und den Weg über die DocId war alles Ok und das Dokument wurde geschlossen.
Mit den 4 Zeilen und dem Weg überdie DokID funktioniert auch alles ..aber ich muss das Dokument von Hand schliessen.
Boris
TMC:
1.) Mach mal nach der Schleife, in der Du diese ProgressBar verwendest, ein Delete pb - nur für den Fall.
2.) Bau mal ein ErrorHandling ein. Also On Error goto ErrHandler, und dann am Ende des Codes einen entsprechenden Handler, siehe auch: http://www.atnotes.de/index.php?topic=11980.0
Denn es ist wichtig zu wissen, in welcher Zeile der Fehler auftritt.
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln