Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: juebri am 09.12.03 - 13:11:44
-
Hallo,
ich habe einen Agenten in einer Datenbank erstellt, der Dateien aus einem Pfad in RT-Felder eines neuen Notes-Dokuments erstellt.
...
Dim session As New NotesSession()
Dim view As NotesView
Dim doc As NotesDocument
Dim db As NotesDatabase
Set db = session.CurrentDatabase
Set doc = db.CreateDocument
doc.Form = "Dateiarchiv"
....
'Für jede Datei wird ein eigenes RT-Feld erstellt
Redim Datei(Ubound(DateiArray ))
For index = Lbound( DateiArray ) To Ubound(DateiArray )
Set Datei(index) = doc.CreateRichTextItem("Datei" & index)
Next
....
'Die Dateien werden in die erstellten Felder kopiert
If Isarray( DateiArray ) Then
Redim Dateianhanggroesse(Ubound(DateiArray ) )
For index = Lbound( DateiArray ) To Ubound(DateiArray )
Set object = Datei(index).EmbedObject(EMBED_ATTACHMENT, "", TempOrdner & DateiArray(index))
Print |Datei angehängt: | & TempOrdner & DateiArray( index )
Next
End If
Wenn ich nun in der Schleife des vorstehenden Absatzes folgenden Code eintrage:
msgbox object.name
msgbox object.filesize
dann wird der Name des Objekts angezeigt, als Dateigröße aber 0.
In dem Array Dateianhanggroesse(Ubound(DateiArray ) ) sollen nämlich die File-Größen hinterlegt werden.
Warum wirft der mit nicht die Filegröße aus.
Hat jemand eine Idee?
-
... versuch es mal mit CStr( object.FileSize )...
ata
-
Wurde Dein Doc denn schon gespeichert, wenn Du die Dateigrösse ermittelst ? Sonst ist die nämlich logischerweise 0.
Bernhard
-
Das Dokument wurde noch nicht gespeichert, wird erst am Ende der Routine erfolgen. Nur, warum wirft object.name den Namen des Dateianhangs aus (auch wenn das Doc noch nicht gespeichert ist)?
-
Warum nicht? Der ist ja schon bekannt. Die Dateilänge ist tatsächlich erst beim Speichern notwendig und ich vermute mal, dass Notes bei einem neuen Attachement die Datei tatsächlich erst beim Speichern einliest.
Andere Frage, woher kommen denn diese Attachements? Die müssen ja irgendwo im Dateisystem herumliegen und da liesse sich ja die Dateigrösse des Originals auslesen?
-
Hi, ich lese die Dateien von jedem beliebigen Medium, lege diese im Ordner D:\Temp\ ab, kompremiere die und hänge diese im Dokument in das entsprechende RT-Feld.
Hab einen Lösungsansatz: Ich könnte in der (Ausgabe)-Maske ein Script einbauen, das die Dateigröße ermittelt, sobald das Dokument das erste mal geöffnet wird.
Aber ich will eigentlich alles in dem Agenten einbinden, der die RT-Felder füllt. Da greife ich ja eh schon auf alle Klassen etc. zu.
Werde mal den Hinweis "Die müssen ja irgendwo im Dateisystem herumliegen" aufgreifen. Hast Du Lösungsansätze?
-
Viel einfacher ist vermutlich, das Doc samt Attachments zu speichern, dann FileSize zu ermitteln und nochmal zu speichern ;-)
Bernhard
-
FileLen function
-
Yep, manchmal liegen die Lösungen so greifbar nahe und man sieht sie nicht ;-))
If Isarray( DateiArray ) Then
Redim Dateianhanggroesse(Ubound(DateiArray ) )
For index = Lbound( DateiArray ) To Ubound(DateiArray )
Set object = datei(index).EmbedObject(EMBED_ATTACHMENT, "", TempOrdner & Strrightback(Strleftback(DateiArray(index),"."),"\") & |.zip|)
Dateianhanggroesse(index)=Filelen(TempOrdner & Strrightback(Strleftback(DateiArray(index),"."),"\") & |.zip|)
Msgbox Dateianhanggroesse(index)
Print |Datei angehängt: | & TempOrdner & DateiArray( index )
Next
End If
Danke für eure Hilfe!
-
Setzest Du den Thread noch auf erledigt? Buhtong über jeder Message