Autor Thema: Probleme mit "Dokument schliessen"  (Gelesen 2111 mal)

Offline Kadlec

  • Senior Mitglied
  • ****
  • Beiträge: 489
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Probleme mit "Dokument schliessen"
« am: 14.03.05 - 15:04:57 »
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???

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Probleme mit "Dokument schliessen"
« Antwort #1 am: 14.03.05 - 18:57:13 »
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
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re: Probleme mit "Dokument schliessen"
« Antwort #2 am: 14.03.05 - 19:49:25 »
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.
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline Kadlec

  • Senior Mitglied
  • ****
  • Beiträge: 489
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: Probleme mit "Dokument schliessen"
« Antwort #3 am: 14.03.05 - 20:01:22 »
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

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re: Probleme mit "Dokument schliessen"
« Antwort #4 am: 14.03.05 - 20:06:45 »
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.
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline Kadlec

  • Senior Mitglied
  • ****
  • Beiträge: 489
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: Probleme mit "Dokument schliessen"
« Antwort #5 am: 14.03.05 - 20:12:12 »
Error Handler ist am Ende.
Der gab den Fehler in der Zeile mit Call doc.save(True,True).
Deshalb kam ich ja drauf das das setzen des doc über das uidoc
nicht funktioniert und habe deshalb den Weg über die Dok iD genommen.
Im Moment kommt kein Fehler nur das Dok muss von Hand geschlossen werden.

Boris

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re: Probleme mit "Dokument schliessen"
« Antwort #6 am: 14.03.05 - 20:32:44 »
Im Moment kommt kein Fehler nur das Dok muss von Hand geschlossen werden.

Heisst das, Wenn Du die ProgressBar auskommentierst, dann schließt das UIDocument automatisch, wenn Du diese drinlässt dann bleibt das UIDocument geöffnet?

Dann liegt's wohl an dem NotesAPI-Code.
Delete pb schon probiert?
Ansonsten kannst Du noch ein "Call uidoc.close(True)" versuchen statt dem normalen "Call uidoc.close".
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Probleme mit "Dokument schliessen"
« Antwort #7 am: 15.03.05 - 08:18:02 »
Also das mit dem Debugger ist so ne Sache, der hängt sich immer auf.
Danach geht nur noch Taskmanager Notes beenden usw.

Hi,

das Problem kenn' ich. Ich kommentiere die Anzeige des ProgressBars immer aus, wenn ich mit dem Debugger durch den Code gehe.

Dass die Progressbar den Ablauf aber so durcheinander bringt habe ich bisher noch nie gehört. Ich sehe aus deinem Code nicht wie deine Klasse(?) für den Progressbar aufgebaut ist. Ich benutze seit Jahren die hier: Bibliothek mit Progressbar und hatte bisher noch nie Schwierigkeiten, bis auf oben erwähnte Probleme bei Debuggen.

Was mir außerdem noch aufgefallen ist, ist das hier:

...
Set doc = uidoc.Document
unid = doc.UniversalID
Delete doc
....

...
Set doc = DocIDView.GetDocumentByKey(unid)
...

Call uidoc.save   
Call uidoc.close
Call doc.save(True,True)
....

Bei diesem Kontrukt habe ich ein bisschen Bauchschmerzen. Ich kann nicht sagen warum, aber ich habe sie. Am Ende ziegt uidoc auf ein anderes Dokument als doc. Ich habe das Gefühl hier kommt irgendwas durcheinander. Nimm mal für GetDocumentBykey eine andere Variable.

Axel


Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline Kadlec

  • Senior Mitglied
  • ****
  • Beiträge: 489
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: Probleme mit "Dokument schliessen"
« Antwort #8 am: 17.03.05 - 10:25:15 »
Also das Problem ist gelöst.
Der Tip mit Delete pb war einfach aber Goldrichtig.
Danke!!

Boris

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz