Domino 9 und frühere Versionen > Entwicklung

Probleme mit "Dokument schliessen"

(1/2) > >>

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