Das Notes Forum
Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: yaka999 am 06.06.08 - 14:14:33
-
Hallo Forum,
ich habe da ein kleines Problem. Ich habe ein Script im Querysafe das mir die Dateigrößen von Dateianhängen abfragt. Das hat jetzt monatelang einwandfrei funktiniert und funktioniert teilweise noch immer. Der Server und einige Clients laufen noch auf Version 6.5..., Einige wurde auf 7 umgestellt. und bei denen gehts nicht mehr (Zufall???)
Ich unterschiede, ob das DOk neu ist oder nicht. Unten steht der Teil, der für 'nicht neu' zuständig ist. Wenn Das Dokument ohne Anhang einmal gespeichert wurde und ich später ein neues hinzufügen will, oder nur ein Dateianhang gespeichert wurde ist rt einfach leer. Ich sehe den Anhang beim debuggen aber im $file. Wenn ich nun also einen Anhang hinzufügen möchte produziert er mir in ' Forall o In rt.EmbeddedObjects' einen Type mismatch.
Könnte mir vll jemand sagen woran das liegt???
Viele Grüße
Phil
Call uidoc.Refresh
Set rt = doc.GetFirstItem("Bild")
If Not doc.HasEmbedded Then
Call source.FieldSetText("ok", "ok")
Else
idx = 0
Forall o In rt.EmbeddedObjects
Redim Preserve strdateiinfo(idx)
strdateiinfo(idx) = Trim$(Str(o.filesize))
If o.filesize > 515000 Then
Msgbox "Es muss mindestens ein Bild verkleinert werden!", , "Hinweis"
continue = False
Exit Sub
End If
idx = idx + 1
End Forall
Call source.FieldSetText("ok", "ok")
End If
-
... was sagt der Debugger denn zu den Types?
Toni
-
Hallo,
da sagt er Type = 1, was immer das heißen mag. Er findet dort aber auch nix, weil das rt-feld 'Bild' für ihn ja leer ist. In '$file' steht 1084. Da sehe ich die Datei ja auch.
Bahnhof Total!!!!
Gruß
Phil
-
strdateiinfo(idx) = Trim$(Str(o.filesize))
... ist das die Fehlerzeile?
Toni
-
... wenn dem so ist, dann müsstest du das Object mit dem richtigen Type abfangen
If o.Type = 1454 Then ' # Attachments
...
End If
Toni
-
Hallo,
nein, leider nicht. Wie oben geschrieben läuft der Fehler auf dieser ZEile auf:
Forall o In rt.EmbeddedObjects
Ich verstehe ja auch nicht, warum es nicht mehr geht. MEin Verdachtist, dass es mit VErsion 7 irgendwie anders geht. Aber ich bin da auch nur Laie
Gruß
Phil
-
Ich glaube, das hatte ich auch mal.
Versuch mal folgendes:
If Not Isempty(rt.EmbeddedObjects) Then
Forall o In item.EmbeddedObjects
...
End forall
end if
-Werner
-
Forall o In rt.EmbeddedObjects
... in dem Fall ist es, wie Werner Götz dir antwortet - das Array ist leer und muß abgefangen werden...
Toni
-
Guten Morgen,
Vielen Dank für die Antworten, dochj leider ist es nocht nicht das, wonach ich suche.
Aber ich gleube ich habe mich auch ein wenig missverständlich ausgedrückt. Sorry, mein Fehler.
Ich habe dieses Problem nur dann, wenn das Dokument bereits einmal gespeichert wurde ohne
Dateianhang. Und zwar nur dann. Wenn ich dann ein Bild etc Anhängen möchte und wieder speichere läuft er mir auf den Fehler. Der Vorschlag von Werner ist ja gut, aber er löst mein Problem nicht. Da geht er ja einfach über die eine Datei drüber ohne die Größe zu prüfen. Und genau das will ich ja vermeiden. ???
-
Hallo,
ich bin es noch einmal.
ICh habe mir jetzt mit nem Schuljungentrick geholfen. Ich greife das Richtextitem ght nicht mehr direkt an. Ich habe in dem Dokument eh schon ein Feld, in das die Größen der Dateianhänge reingeschrieben werden. ICh nehme jetzt einfach dieses Feld und Frage die Werte der Reihe nach ab.
Fertig.
Ich bin mir sicher das hier der ein oder andere die gleichen oder zumindest ähnlichen Probleme hat wie ich. Darum hier der Code:
Call uidoc.Refresh
If uidoc.fieldgettext("fsize") = "" Then
Call source.FieldSetText("ok", "ok")
Else
idx = 0
j = 0
For idx = 0 To Ubound(doc.fsize)
If doc.fsize(idx) > 515000 Then
Msgbox "Es muss mindestens ein Bild verkleinert werden!", , "Hinweis"
continue = False
Exit Sub
End If
Next
idx = idx + 1
Call source.FieldSetText("ok", "ok")
End If
Das Feld dach ich Abfrage heißt bei mir fsize und enthält folgende Formel :
@is(@Attachments > 0; @AttachmentLEngths; "")
Warum soll ich mich da verbiegen, wenns auch so geht. ;D