Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Alexis am 16.12.04 - 15:29:43

Titel: Attachments lösen und einfügen
Beitrag von: Alexis am 16.12.04 - 15:29:43
Hallo Forum,

mit diesem Script kann ich prima Attachments in das Parent-Dokument übernehmen. Leider werden dabei alte Werte im rtitem-Feld überschrieben. Gibt es da einen "easy way round"?

Hier mein Code auszugsweise:

 Set Db = Session.CurrentDatabase
   Set workspace = New notesuiworkspace
   Set uidoc = workspace.currentdocument 
   Set doc = uidoc.Document
   vFileName = Evaluate("@AttachmentNames", doc)
   If vFileName(0) = "" Then Goto Leer
   For i = 0 To Ubound(vFileName)
      Set Object = Doc.GetAttachment( vFileName(i) )
      Call Object.ExtractFile( "c:\Temp\" & vFileName(i) )
      Call rtitem.AddNewLine( 1 )
      Call rtitem.EmbedObject ( EMBED_ATTACHMENT, "", "c:\temp\" & vFileName(i))
      Kill "c:\temp\" & vfilename(i)
   Next
Leer:
Titel: Re: Attachments lösen und einfügen
Beitrag von: TMC am 16.12.04 - 20:16:40
Leider hast Du entscheidende Code-Stellen weggelassen (z.B. wie kommst Du zu Deinem rtitem).

Sowas wie hier sollte in jedem Fall gehen:
Code
	Const RTITEM_NAME$ = "RTFeld"
	Const FULL_PATH$ = "c:\Doks\abc.pdf"
	
	Dim session As New NotesSession
	Dim uiws As New NotesUIWorkspace
	Dim db As NotesDatabase
	Dim rtitem As Variant
	Dim doc As NotesDocument
	
	Set db = Session.CurrentDatabase
	Set uiws = New NotesUIWorkspace
	Set doc = uiws.Currentdocument.Document
	
	Set rtitem = doc.GetFirstItem(RTITEM_NAME)
	If Not rtitem.Type = RICHTEXT Then
		Msgbox "Das Feld <" & RTITEM_NAME & "> ist kein Richtextfeld !", 48, "Fehler !"
		Exit Sub
	End If
	
	Call rtitem.AddNewLine( 1 )
	Call rtitem.EmbedObject ( EMBED_ATTACHMENT, "", FULL_PATH)
	Call doc.Save(True, True)

Man beachte da insbesondere das
Code
Set rtitem = doc.GetFirstItem(RTITEM_NAME)
Titel: Re: Attachments lösen und einfügen
Beitrag von: TMC am 16.12.04 - 20:25:03
   vFileName = Evaluate("@AttachmentNames", doc)

Das kann übrigens unschöne Ergebnisse liefern, wenn im Quelldok 2 Attachments mit dem selben Namen sind. Dann vergibt Notes intern andere Namen. Diese sind zwar eindeutig, aber es fehlen die Extensions.
Besser wäre wohl
a) in solchen Fällen die ursprüngliche Dateiendung dranzuhängen oder
b) doppelte Attachments abfangen und entsprechend eine fortlaufende Zahl dranzuhängen oder
c) Ein Attachment nach dem anderen abarbeiten ohne @AttachmentNames.
Titel: Re: Attachments lösen und einfügen
Beitrag von: Alexis am 17.12.04 - 12:47:35
Hallo Matthias,

Danke für Deine Hinweise.

@1: Der Code war mir zu lang fürs Forum. Die Funktion klappt schon, mein Problem ist, dass beim zweiten Durchlaufen des Codes das rtItem-Feld überschrieben wird mit samt seinem Inhalt und die Attachments nicht wie gewünscht angehängt werden.

@2: Der Hinweis ist prima. In der Praxis dürfte der Fall eigentlich nicht vorkommen, aber wer weiss. Vorsorge ist besser als Nachsorge.

Alexis
Titel: Re: Attachments lösen und einfügen
Beitrag von: DatenDuck am 05.01.06 - 11:30:24
Hallo Leute,

eine kleine Nachfrage zu diesem Thema.
Mir ist nur bekannt, dass man Anhänge ausschließlich an RTItems tackern kann.
Der erste Satz lautet jedoch
Zitat
mit diesem Script kann ich prima Attachments in das Parent-Dokument übernehmen
Gibt es denn überhaupt eine Möglichkeit einen Anhang an ein Dokument zu hängen, ausserhalb eines RTItems? Ich finde dazu in der Designerhilfe nix und dass Attachments ausserhalb von RTItems hängen scheint ja auch eher 'ne Ausnahme bzw sogar ein Fehler zu sein oder!?

Vielen Dank schonmal für die Antwort!
Bis dann,
-Moritz
Titel: Re: Attachments lösen und einfügen
Beitrag von: koehlerbv am 05.01.06 - 11:34:46
Attachments können tatsächlich nur in RichTextItems aufgenommen werden. Dies ist aber eine reine Backend-Geschichte und bedeutet nicht, dass es zum RTI auch im Frontend ein Gegenstück - sprich eine Maske - geben muss.
Betrachtet man ein Dokument mit RTI (incl. Attachment) mit einer Maske, die kein entsprechendes Feld enthält, dann wird das Attachment am Ende des Dokuments dargestellt.

HTH,
Bernhard
Titel: Re: Attachments lösen und einfügen
Beitrag von: DatenDuck am 05.01.06 - 11:50:37
Hallo Bernhard,

dass passt ja dann einigermaßen zu diesem Thema hier http://atnotes.de/index.php?topic=27777.0

Resumé:
Auch wenn ein Anhang unter dieser schwarzen Linie angezeigt wird, ist er programatisch in einem RTItem. Sprich, wenn man diesen "aussenstehenden" Anhang löst und man sich den Namen des RTItems merkt, kann man ihn auch wieder genau wie zuvor anhängen. Nach der Wiederherstellung ist alles wieder so wie zufor.

Wenn das so richtig ist, dann bin ich schlauer geworden ;)

Vielen Dank!
-Moritz