Domino 9 und frühere Versionen > ND6: Entwicklung
Dateigröße abfragen (RTF)
umi:
Morgen,
Du willst also vor dem Attachen die Grösse der Datei wissen? Dann öffne die Datei zuerst als Stream (s.h. Hilfe) anschliessend kannst Du mit dem Property "Bytes" auf die Anzahl Bytes, sprich die Dateigrösse zugreifen.
Axel:
Hi,
RTF-Felder haben die "manchmal unangenehme" Eigenschaft, dass das Dokument erstmal gespeichert, geschlossen und wieder geöffnet werden muss, damit man sauber mit Script darauf zugreifen kann.
Der OnChange-Event wird nicht immer zuverlässig ausgeführt. Ich würde es mal in QuerySave-Event der Maske versuchen.
Was verstehst du am Code nicht. In der Hilfe ist doch alles gut beschrieben.
--- Zitat von: Andreas Huhn am 27.09.05 - 08:21:40 ---... habt ihr da vielleicht eine fertige Funktion?
--- Ende Zitat ---
Was bringt dir eine fertige Funktion, wenn dir die Funktionsweise unklar ist? die Funktion setzt du dann ein und hoffst das sie funktioniert. Wenn nicht, oder wenn Anpassungen gemacht werden müssen, stehst du wieder da und weißt nicht was du machen musst.
Sei mir nicht böse, aber ich habe es schon oft erlebt, dass es heisst: ich habe mit den Code aus dem Internet gezogen und in meine DB übernommen und nun geht nix. Das bringt nix. Du musst verstehen was du machst.
Bei Problemen helfen wir gerne, aber erwarte von uns keine fertigen Problemlösungen.
Axel
Axel:
--- Zitat von: Axel am 27.09.05 - 08:41:31 ---Ich würde es mal in QuerySave-Event der Maske versuchen.
--- Ende Zitat ---
Ich habe mal ein bisschen probiert. Im QuerySave funktionierts nicht sauber. Bei einem neuen Dokument kann man nicht auf das RTF-Feld zugreifen (weil RTF-Feld erst nach dem Speichern "wirklich ansprechbar" ist). Nach dem ersten Speichern geht's. Im PostSave-Event funktioniert das Ganze. Wenn du nur eine Warnung ausgeben willst, reicht es.
Axel
Andreas Huhn:
Okay...
ich habs jetzt so:
--- Code: ---Sub Postsave(Source As Notesuidocument)
Dim doc As NotesDocument
Dim rtitem As Variant
Dim object As NotesEmbeddedObject
Dim sizeInBytes As Long
'...set value of doc...
Set doc = source.Document
Set rtitem = doc.GetFirstItem( "A1" )
If ( rtitem.Type = RICHTEXT ) Then
Set object = rtitem.GetEmbeddedObject( "City picture" )
sizeInBytes = object.FileSize
End If
End Sub
--- Ende Code ---
Also ich versteh das so:
Zuerst muß ich der Objektvariable doc einen Verweis auf das aktuelle Dokument geben. Das wird der Funktion über den Parameter "Source" gleich mitgegeben.
Dann suche und befülle ich die Objektvariable "rtitem" mit dem Feld namens "A1"
Jetzt überprüfe ich nocheinmal ob es sich bei dem gefundenen Objekt auch wirklich um ein RichText-Feld handelt.
Wenn ja dann weise ich der Objektvariable "object" den Inhalt des Feldes "rtitem" zu, wobei dieser Inhalt den Dateinamen "City picture" hat (???)
Als letzten Schritt lese ich aus wieviele Bytes "object" nun hat.
Hab ich das so richtige verstanden / gemacht?
Wenn ja hab ich folgendes Problem: Den Namen des EmbeddedObject ("City picture") kenne ich ja nicht vorher.
Hoffe ihr seht auch daß ich mir wirklich Mühe gebe es zu verstehen..
MfG
Axel:
--- Zitat von: Andreas Huhn am 27.09.05 - 13:38:13 ---Hab ich das so richtige verstanden / gemacht?
--- Ende Zitat ---
Du hast das richtig verstanden.
Das Ermitteln des/der Namen(s) der Anhänge ist auch kein großen Problem.
If rtitem.Type = RICHTEXT Then
Forall objects In rtitem.EmbeddedObjects
If objects.Type = EMBED_ATTACHMENT Then
Messagebox objects.Name & ": " & Str(objects.FileSize)
End If 'If objects.Type = EMBED_ATTACHMENT
End Forall 'Forall objects In rtitem.EmbeddedObjects
End If 'If rtitem.Type = RICHTEXT
Du muss deinen Code so erweitern. Mit einer Forall-Schleife durchläufst du alle Objekte im RTF-Feld. Handelt es sich dabei um einen Dateianhang wird der Name und die Größe angezeigt.
Axel
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln