Das Notes Forum
Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: Pavel am 14.01.13 - 14:54:01
-
Hallo und ein verspätetes Gesundes Neues Jahr an alle.
Vielleicht weiß jemand Rat oder hat einen Tipp.
Ich nutze nachfolgenden Code (Ausschnitt), um ein txt-datei in ein Notesdokument zu hängen und später über eine URL wie ..../$FILE/export.txt zu öffnen.
Es funktioniert auch alles ganz wunderbar, allerdings fehlen in der angehängten Datei mehrere Zeilen am Ende der Datei.
Die Datei schreibe ich zuerst ins Filesystem, da ist sie noch komplett vorhanden, erst im Notesdokument fehlt etwas.
Woran könnte es liegen?
Gruß
René
hier der Code: sName beinhaltet den kompletten Pfad mit Dateiname.
Dim rtitem As NotesRichTextItem
Dim item As NotesItem
Dim object As NotesEmbeddedObject
If ndoc.HasItem("Body") Then
Set item = ndoc.GetFirstItem( "Body" )
Call item.Remove
Call ndoc.Save(True,True)
End If
Set rtitem = New NotesRichTextItem( ndoc, "Body" )
Set object=rtitem.Embedobject(EMBED_ATTACHMENT,"", sName)
Call ndoc.Save(True,true)
-
Das ist sicher einti ing- Problem. Bist Du sicher, dass das file fertig gespeichert ist, wenn Du es attached? Ich fürchte, der save des textfiles passiert zu spät... Weil emeddobject verändert NICHTS
-
@Tode
Hallo,
ja es scheint ein Timing Problem zu sein, konnte es nachvollziehen. Mal sehen, wie ich es lösen kann.
Danke.
Gruß
René
-
Du könntest nach dem Speichern der Datei eine zweite Datei (ohne Inhalt) erstellen und beim Import das Vorhandensein der zweiten abfragen. Zwischendurch wartest Du mit Sleep.
-
Hallo,
konnte jetzt nachvollziehen, was passiert.
Habe mal das komplette Script reingestellt.
Folgendes passiert:
Die Datei wird geschrieben, aber nicht komplett. Der Rest der Datei wird erst geschrieben, wenn das Script (Agent) beendet ist.
Gibt es eine Möglichkeit den NotesDXLExporter zu beenden oder dazu zu zwingen die Datei komplett zu schreiben bevor das script beendet ist?
Oder woran könnte es liegen, das dieser Effekt auftritt?
Notlösung wäre, daß ich einen 2. Agent erstelle, denn ein paar Minuten später läuft und die exportierte Date holt, aber eigentlich sollte es auch so klappen.
Gruß
René
Dim session As New NotesSession
Dim db As NotesDatabase
Dim ndoc As NotesDocument
Dim nView As NotesView
Dim stream As NotesStream
Dim exporter As NotesDXLExporter
Dim sname As String
Set session = New NotesSession
Set db = session.CurrentDatabase
Set nView = db.GetView ( "(xmlexportansicht)" )
Dim dc As NotesDocumentCollection
Set dc=nView.Getalldocumentsbykey("1", False)
sName="c:\temp\exportadr.txt"
Set stream = session.CreateStream
Print "start export adr2xml"
If Not stream.Open( sName ) Then
' MessageBox "Cannot open " & sName,, "Error"
Print "export adr2xml fehler!!!!"
Exit Sub
End If
Call stream.Truncate
Set exporter = session.CreateDXLExporter ( dc, stream )
Call exporter.process
Print "export adr2xml ein wenig geschlafen"
Sleep 900
Print "export adr2xml mail schicken"
Dim blindcopystr (1 To 3) As String
Dim maildoc As NotesDocument
Set maildoc = New NotesDocument(db)
maildoc.Form = "Memo"
' maildoc.SendTo = ""
blindcopystr(1)="ein Notes Empfänger"
blindcopystr(2)=""
blindcopystr(3)=""
maildoc.blindcopyto=blindcopystr
maildoc.Subject = "Export ins XML Format erfolgt"
Call maildoc.Send( False )
' exportiertes dok in xmlaustauschdok reinhängen
Set nView = db.GetView ( "(xmlaustauschansicht)" )
Set ndoc = nview.GetFirstDocument
If Not(ndoc Is Nothing) Then
'datei in dok reinbringen
Dim rtitem As NotesRichTextItem
Dim item As NotesItem
Dim object As NotesEmbeddedObject
If ndoc.HasItem("Body") Then
Set item = ndoc.GetFirstItem( "Body" )
Call item.Remove
Call ndoc.Save(True,True)
End If
Set rtitem = New NotesRichTextItem( ndoc, "Body" )
Set object=rtitem.Embedobject(EMBED_ATTACHMENT,"", sName)
Call ndoc.Save(True,true)
Else
' kein austauschdok gefunden
Exit Sub
End If
Print "export adr2xml beendet"
-
Hi
evtl. hilft es, wenn nach dem exporter.process() noch ein stream.close() einfügst.
-
@umi
Danke für den Tipp, damit klappt es.
Gruß
René