Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: adminnaddel am 21.08.03 - 14:06:20

Titel: @Attachmentlengths im Queryclose Event
Beitrag von: adminnaddel am 21.08.03 - 14:06:20
Hallo liebe Gemeinde,

ein Button ermöglicht mir das in einer Form ein Attachment auszuwählen, es in ein RichTextField zu packen und den Path zur eigentlichen Datei in ein weiteres Field zu schreiben.

Jetzt möchte ich aber, das beim speichern über das Event Queryclose abegrfragt wird, ob das Attachment über 1Mb groß ist. Wenn ja, dann bitte überschreibe es wieder und speicher es ohne.

Ich poste mal beide Formeln. Mein Problem ist halt nur, das eigentlich das ganze sauber läuft, nur habe ich eine Problem mit dem @SetField, denn das greift bei RichTextFeldern nicht!

Ich kriege einfach keine saubere Lösung hin!!! :(
Bessere wäre natürlich noch, wenn man gleich bei der Auswahl des Attachments darauf hingewiesen wird, aber ich denke, das wird nicht wohl nicht möglich sein!!!???

newFileList := @Prompt( [LOCALBROWSE]; "" ; "1" );
@SetField( "Path"; newFileList );
@Command([EditGotoField]; "Attachment");
@Command([EditInsertFileAttachment]; newFileList)

Hier das Event:
FIELD Attachment := Attachment;
@If(@AttachmentLengths/1024 >1024;
@Do(@Prompt([OK];"Attachment ist über 1Mb!";"");@Command([EditGotoField]; "Attachment");@SetField("Attachment";""));"")

Viele Grüße
Andreas
Titel: Re:@Attachmentlengths im Queryclose Event
Beitrag von: koehlerbv am 21.08.03 - 14:21:22
Ohne es ausprobiert zu haben: Könnte in diesem Kontext @DeleteField weiter helfen ?
Kommt LS nicht in Frage ?

Bernhard
Titel: Re:@Attachmentlengths im Queryclose Event
Beitrag von: adminnaddel am 21.08.03 - 14:25:06
Hi,
@DeleteField greift doch nur, so meine ich, wenn die Form nicht im EditModus ist.
How ever, wenn ich das Feld lösche, aber im nachhinein dann doch das Tool packe und es dem Dokument hinzufügen möchte, gibt es das Feld nicht mehr.

Lotus Script eine schöne Sache, doch fehlt in der Formel doch einfach nur das i-tüpfelchen, oder nicht?

Andreas
Titel: Re:@Attachmentlengths im Queryclose Event
Beitrag von: koehlerbv am 21.08.03 - 14:29:53
... und mit @Commands ?
- GotoField
- SelectAll
- EditClear

Wie gesagt - nur so aus dem hohlen Bauch ...
Titel: Re:@Attachmentlengths im Queryclose Event
Beitrag von: adminnaddel am 21.08.03 - 15:01:45
Null Chance

Das greift bei richtext nicht!
Hier muss es einen anderen Weg geben  ???

Grüße
Andreas
Titel: Re:@Attachmentlengths im Queryclose Event
Beitrag von: harkpabst_meliantrop am 21.08.03 - 16:02:18
Ich sach mal - ebenfalls aus dem schon wieder ziemlich holen Bauch heraus:

PostSave-Event

Da ist das RT-Feld schon im Dokument, und obwohl das Dok ja eigentlich schon gespeichert ist, kann man genialerweise noch Änderungen vornehmen. Eines der viel zu wenig beachteten neuen R5-Features.
Titel: Re:@Attachmentlengths im Queryclose Event
Beitrag von: Driri am 21.08.03 - 16:09:20
Hi,

ich würde das wirklich mit Script lösen. Ich hab gerade mal nen bißchen rumprobiert :

Dim ws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument
Dim item As NotesItem
Dim rtitem As NotesRichTextItem
Dim object As NotesEmbeddedObject
Dim filesize As Long
   
Set uidoc = ws.CurrentDocument
Set doc = uidoc.document
Set rtitem = doc.GetFirstItem("Body")
Set item = doc.GetFirstItem("Body")
   
filesize = 0
   
If doc.HasEmbedded Then
If ( rtitem.Type = RICHTEXT ) Then
Forall o In rtitem.EmbeddedObjects
If ( o.Type = EMBED_ATTACHMENT ) Then
Set object = rtitem.GetEmbeddedObject( o.Source )
filesize = filesize + object.FileSize
End If
End Forall
End If
End If
   
If (filesize > 1048576) Then
Messagebox "FEHLER"
      
Forall x In rtitem.EmbeddedObjects
If Not( x Is Nothing ) Then
If ( x.Type = EMBED_ATTACHMENT ) Then
Call x.Remove
End If
End If
End Forall
      
Call doc.save(True, False)
      
End If      
End If


Edit : Das sollte so funktionieren, erste Version war buggy.
Titel: Re:@Attachmentlengths im Queryclose Event
Beitrag von: adminnaddel am 21.08.03 - 16:29:00
 ::)
Ein Versuch der Erklärung!
Es liegt nicht an der Auswahl des Events, ich denke mal laut, es liegt an der Eigentschaft des RichTextFeldes. Hier ist es nicht mit @Commands möglich, den enthaltenen Wert "x" im RichTextField vor dem saven zu greifen.

Grüße
Andreas
Titel: Re:@Attachmentlengths im Queryclose Event
Beitrag von: adminnaddel am 21.08.03 - 16:44:24
@Diri,

danke für das Script, doch wo bringe ich es rein? Ins event?
Titel: Re:@Attachmentlengths im Queryclose Event
Beitrag von: Driri am 21.08.03 - 16:46:46
Jupp, ich habs im Queryclose getestet.
Titel: Re:@Attachmentlengths im Queryclose Event
Beitrag von: adminnaddel am 21.08.03 - 17:02:07
Okay, postsave läuft es glatter!

 ;D
Tausend dank!!

Andreas
Titel: Re:@Attachmentlengths im Queryclose Event
Beitrag von: harkpabst_meliantrop am 23.08.03 - 23:18:19
Kein Wunder.

Ein RichtText-Feld (oder natürlich nachträgliche Änderungen an sienem Inhalt) werden erst nach dem Speichern Teil des Dokuments. Die Verwendete Programmiersprache hat damit nichts zu tun.

Vermutlich hätte man's auch mit Formeln irgendwie hinbiegen können, aber wozu, wenn du das Skript frei Haus bekommst?  8)