Das Notes Forum

Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: VB3Bernd am 27.09.07 - 12:01:22

Titel: Anhang direkt in Maske
Beitrag von: VB3Bernd am 27.09.07 - 12:01:22
Hallo zusammen,

ich steh total auf dem Schlauch  :P

Ich habe eine Maske, in die direkt ein Anhang eingestellt wurde (im Design), also quasi ohne eigenes Feld. Wenn ich dann ein neues Dokument erstelle, erscheint der Anhang in der Maske und man kann ihn öffnen usw. - soweit klar.

Habe ich eine Chance, diesen Anhang in einem Maskenereignis (z.B. beim QuerySave) direkt zu drucken?

Die Skripte hier im Forum funktionieren, wenn ich den Anhang in einem RT-Feld (z.B: "Body") stehen hab.

Mir fällt im Moment irgendwie nicht ein, wie das funzt, wenn der Anhang per Designer direkt in der Maske steht  :-[

Vielen Dank für Eure Hilfe.

Grüßchen
Bernd
Titel: Re: Anhang direkt in Maske
Beitrag von: Glombi am 27.09.07 - 12:16:29
Mit
 Forall o In doc.EmbeddedObjects

    End Forall
solltest Du an den Anhang kommen, auch wenn er nicht in einem Feld steht.

Andreas
Titel: Re: Anhang direkt in Maske
Beitrag von: VB3Bernd am 27.09.07 - 12:40:15
@Glombi
Danke für die schnelle Antwort, aber ich erhalte die Meldung "Type Mismatch" in der Zeile: Forall o In doc.EmbeddedObjects

Hier mal mein Skriptanfang:

Sub Querysave(Source As Notesuidocument, Continue As Variant)
   Dim ws As New notesuiworkspace
   Set source = ws.CurrentDocument
   Dim doc As NotesDocument
   Set doc = source.Document
   
   Call source.refresh
   
   Forall o In doc.EmbeddedObjects
   (... usw...)

Bei "EmbeddedObjects" wird im Debugger auch <leer> angezeigt  :-\

Grüßchen
Bernd




Titel: Re: Anhang direkt in Maske
Beitrag von: koehlerbv am 27.09.07 - 12:42:48
Wenn das die Erstspeicherung ist, gibt es auf jeden Fall noch kein Attachment im Backend - derartige Objekte stehen erst nach erfolgter Speicherung zur Verfügung.

Bernhard
Titel: Re: Anhang direkt in Maske
Beitrag von: Glombi am 27.09.07 - 12:47:06
Neuer versuch:

Sub Querysave(Source As Notesuidocument, Continue As Variant)
   Dim ws As New notesuiworkspace
   Set source = ws.CurrentDocument
   Dim doc As NotesDocument
   Set doc = source.Document

dim anhangname as string
dim ret_eval as variant
ret_eval = Evaluate( |@AttachmentNames| )
if not IsArray( ret_eval ) then exit sub
anhangname = ret_eval(0)


dim anhang as NotesEmbeddedObject
set anhang = doc.GetAttachment( anhangname )


In der Hilfe steht, dass es soch auch mit V2 Attachments geht. Ich vermute, dass Notes Anhänge, die direkt in der Maske sind, auch als V2 Attachments interpretiert.

Given the name of a file attachment, returns a NotesEmbeddedObject representing the attachment. You can use this method to find file attachments which are not contained in a rich text item (such as an attachment in a Release 2 database), as well as file attachments that are contained in a rich text item.

Andreas
Titel: Re: Anhang direkt in Maske
Beitrag von: VB3Bernd am 27.09.07 - 14:01:20
@Andreas
Mahlzeit ...    ;)

Leider findet er keinen Dateinamen. Im Debugger ist ret_eval (0) = <leer> und damit kommt dann auch in der Zeile

set anhang = doc.GetAttachment( anhangname )

ein "Object variable not set".

@Bernhard
Das passiert auch bei schon gespeicherten Dokumenten, selbst wenn ichdas Dok schließe und wieder öffne.    :'(

Ich sehe auch kein $File-Feld in der Feldliste ... einfach nix ... und trotzdem lässt sich dieser Anhang im Frontend "ganz normal" öffnen.

Grüße
Bernd

Titel: Re: Anhang direkt in Maske
Beitrag von: koehlerbv am 27.09.07 - 14:03:56
Hm, ich habe da zu oberflächlich gedacht. Dein Attachment steckt ja gar nicht im Dokument, sondern im Designelement. Also müsstest Du Dir statt dessen das Dokument besorgen, welches hinter dem Designelement (Deine Maske) steckt.

Bernhard
Titel: Re: Anhang direkt in Maske
Beitrag von: klaussal am 27.09.07 - 14:06:57
Stimmt.
Hab das mal auf die Schnelle getestet. Es gibt in den Doc-Eigenschaften kein Feld, das auf den Anhang hinweist.
Titel: Re: Anhang direkt in Maske
Beitrag von: VB3Bernd am 27.09.07 - 14:09:52
@bernhard
 :o

Das hört sich kompliziert an ... übersteigt wohl meine Fähigkeiten.

Aber vielleicht könntest Du -oder jemand anderes- einen Ansatz posten, mit dem ich weiterkomme  :)

Gruß
Bernd
Titel: Re: Anhang direkt in Maske
Beitrag von: koehlerbv am 27.09.07 - 14:16:26
Da kommst Du (u.a.) über die NotesNoteCollection class heran.

Aber: Warum willst Du immer wieder den selben Anhang ausdrucken lassen? Der arme Wald.
Warum steckt der Anhang in der Maske und nicht in einem gesonderten Dokument?

Bernhard
Titel: Re: Anhang direkt in Maske
Beitrag von: klaussal am 27.09.07 - 14:23:16
In dem Buch "Domino Designer R5" von Raimund Mann ist ab Seite 439 ein Beispiel drin, wie man an die Designelemente dran kommt.
Titel: Re: Anhang direkt in Maske
Beitrag von: koehlerbv am 27.09.07 - 14:27:20
Dann gibt es noch die DBDesign class von Damien Katz (-> Sandbox). Alles nach dem Motto: Warum einfach, wenn's auch kompliziert geht  ;D

Bernhard
Titel: Re: Anhang direkt in Maske
Beitrag von: VB3Bernd am 27.09.07 - 14:28:36
Aber: Warum willst Du immer wieder den selben Anhang ausdrucken lassen? Der arme Wald.
Warum steckt der Anhang in der Maske und nicht in einem gesonderten Dokument?

Es handelt sich hier um eine Anlage zu einem Vertragsformular, das dem Kunden bei Vertragsabschluss zusammen mit dem Vertrag (=Notes Maske) komfortabel mitausgedruckt werden soll. Den Text und das Layout dieses PDF's (7 Seiten) erhalten wir von einer dritten Stelle, die den Wortlaut rechtlich abgesichert hat. Da soll auch nichts mehr geändert werden können.

Gruß
Bernd
Titel: Re: Anhang direkt in Maske
Beitrag von: koehlerbv am 27.09.07 - 14:33:08
Dann steck das Ding in ein separates (Konfigurations-)Dokument, dass von den Normalusern nur gelesen werden kann. In der Maske baust Du entweder einen Buhtong "Anlage drucken" oder "Vertrag und Anlage drucken" oder packst den Code tatsächlich in ein Event (fände ich nicht so toll).

Bernhard
Titel: Re: Anhang direkt in Maske
Beitrag von: VB3Bernd am 27.09.07 - 14:46:21
Stimmt eigentlich  ;D

Diesmal richtig rum: "Warum kompliziert, wenn's auch einfach geht!"

Manchmal denkt man glaub ich einfach zu einspurig  :-\

Vielen Dank für den "mehrspurigen" Denkansatz  ::)

Grüße
Bernd