Domino 9 und frühere Versionen > ND7: Entwicklung

Word-Dokumente an Notes Dokumente per Programm anhängen oder darin einfügen

(1/5) > >>

Wetterhexe:
Ich möchte Word-Dokumente an Lotus Notes Dokumente per Programm anhängen oder darin einfügen. Ich habe mehrere unterschiedliche Ansätze gemacht, um das Problem zu lösen. Jeder Versuch hat zu anderen Problemen geführt. Daher habe ich jetzt eine ganze Reihe Fragen
 
Mein 1. Versuch: Einbau einer Schaltfläche  „ Datei einfügen“ins Notes-Dokument.
Diese Schaltfläche habe ich mit dem Befehl EditInsert der Formelsprache hinterlegt. Nach meinem Verständnis macht dieser Befehl das gleiche wie Erstellen Objekt im Dialog. Leider funktioniert das überhaupt nicht, ich bekomme die Fehlermeldung „Angegebener Befehl kann nicht ausgeführt werden.“ Wer weiß, warum das nicht funktioniert oder wie es funktioniert?

Mein 2. Versuch: Per Lotus-Skript-Programm ein neues Notes-Dokument anlegen, in das das Word-Dokument eingebettet wird. Ich verwende die Klasse RichtextItem mit der Methode EmbedObject. Laut Beschreibung kann man zwischen 3 Typen auswählen 1) ATTACHMENT, 2)EMBEDDED_OBJECT 3) OBJECT_LINK. Bei mir klappt aber nur das Attachment, bei EmbeddedObject oder ObjectLink passiert gar nichts. Weiß jemand warum die anderen beiden Typen nichts tun?
Aber auch mit dem funktionierenden Attachment hat das ganze einen ziemlichen Haken. Dem neu erstellten Dokument weise ich mit
Doc.form = „Maskenname“
eine Maske zu.
Trotzdem werden mir die so per Programm angelegten notes-Dokumente in Ansichten, die diese Maske verwenden nicht angezeigt.
Wie schaffe ich es, dass ich die neuen notes-Dokumente auch in Ansichten sehen kann?

Mein 3. Versuch: Per Lotus-Skript-Programm in einem vorhandenen Notes-Dokument, das auch aktuell geöffnet ist (also übers Front End angesprochen wird), das Word-Dokument einfügen. Ich verwende folgenden Code:

   Set doc = uidoc.document
   
   For I = 1 To 100
      RTF = "KAngebot" & I
      Set rtffeld = doc.GetFirstItem( RTF)
      
      If  rtffeld Is Nothing Then
         Set rtffeld = doc.CreateRichTextItem (RTF)
         Exit For
      End If
   Next
   Set ebo = rtffeld.EmbedObject (EMBED_ATTACHMENT, "",  "C:\Dokumente …)

Auch das klappt nur für den Typ Attachment. Aber jetzt gibt’s gleich mehrere Merkwürdigkeiten:

·   Die Datei-Anhänge lassen sich nicht mehr aus dem Notes-Dokument löschen. In allen Menues ist das Löschen deaktiviert. Wie kriege ich das Attachment wieder aus dem Notes-Dokument raus?
·   Vollkommen unabhängig davon, welchen Feldnamen ich für das verwendete RichTextFeld angebe, wird der Anhang immer am Ende des Dokuments erstellt. Wie krieg ich das Attachment genau in das dafür vorgesehene Maskenfeld rein?

Wer hat Erfahrungen mit meinen Problemen?

Gruß
Wetterhexe















m3:
a) Herzlich willkommen.

b) Ein wenig mehr Code wäre in jedem Fall nicht schlecht, da auch immer das Umfeld wichtig ist.

c) Zu Deinen Fragen:

ad (1):
Hast Du den Button in ein Dokument oder in ein Form eingebaut? "@Command( [EditInsertFileAttachment] )" schon mal angesehen?

ad (2):
Auf welcher Plattform bewegst Du Dich? Die Designer-Hilfe meint:

--- Zitat ---Embedded objects and object links are not supported for OS/2, UNIX, and the Macintosh. File attachments are.
...
Files can be attached on any Notes platform, but objects and links can only be created on platforms supporting OLE.
--- Ende Zitat ---

Weiters: Ich habe mir angewöhnt, unter Perl nicht die Kurznotation, sondern die Methoden zu verwenden. Das macht das Ganze einfacher:

--- Code: ---$doc = $db->CreateDocument();
$doc->replaceItemValue("Form", "stat");
..
if( $doc->Save(1,0) ) { ...
--- Ende Code ---


ad (3) Der Code schaut so aus, als würdest Du weiterhin mit einem Backend-Dokument arbeiten. Das ist - im Zusammenspiel mit einem Frontend-Dokument und RTFs keine so gute Idee (siehe Forumssuche).

Und zum Thema Attachments vs. Inline Attachments kannst Du Dich mal mit Ben unterhalten. Der weiß dazu VIELE Geschichten.

"Working with attachments and embedded objects in LotusScript classes" in der Designer-Hilfe hast Du schon durch?

P.S.: Sei so nett und beachte die Forumsregeln:

--- Zitat ---2.2 Nickname
     Am liebsten ist es uns, wenn Du Deinen richtigen Namen, oder wenigstens Deinen richtigen Vornamen verwendest.
Wenn Du einen Phantasienamen gewählt hast, wäre es schön, wenn Du in Deiner Signatur Deinen (Vor-)Namen angibst.
--- Ende Zitat ---

Wetterhexe:
Hallo m3,

herzlichen Dank für Deine schnelle Antwort. Zu Deinen Anmerkungen: Ich arbeite unter Windows XP. Da ich im Dialog die gewünschten Dateien an die geplante Maske (RTF-Feld) anhängen und darin einbetten kann, war meine Folgerung, dass das auch per Programm gehen sollte. Deshalb ist mir auch unverständlich, warum das gerade in der Formelsprache mit den Befehlen EditInsert und EditINsert([FileAttachment]) nicht funktioniert. Und dann diese nichtssagende Fehlermeldung ("Angegebener Befehl kann nicht ausgeführt werden), das ist alles nicht plausibel für mich. Ich würde mich freuen, wenn mir jemand Näheres erklären könnte.

Immerhin habe ich ja das Anhängen im 3. Anlauf geschafft. Und zwar aus dem Front-End mit

                                    Set doc = uidoc.document

ins Back-End.  Dann mit folgender Schleife ein geeignetes RTF-Feld anlegen. Das ist nötig, weil möglicherweise mehrere Dateien angehängt werden.

                                    For I = 1 To 100
                                        RTF = "KAngebot" & I
                                        Set rtffeld = doc.GetFirstItem( RTF)
     
                                        If  rtffeld Is Nothing Then
                                            Set rtffeld = doc.CreateRichTextItem (RTF)
                                            Exit For
                                        End If
                                  Next

Dann Datei-Attachment in ausgewähltes RTF-Feld einbetten

                                     Set ebo = rtffeld.EmbedObject (EMBED_ATTACHMENT, "",  "C:\Dokumente …)

Anschliessend mache ich nur noch einen

                                     Call Save (True, True)

und einen
                                     Call Reload ().

Fertig!!!
Ich wäre auch hochzufrieden mit allem, aber jetzt sind die Attachments nicht mehr aus dem Dokument rauszukriegen und das darf nicht so bleiben. Kennt jemand dieses Phänomen? und wie kann man es umgehen? Ich freue mich über jeden Hinweis.

Gruß
Wetterhexe Gitti

Kadlec:
Hallo kann es sein das Dein Cursor nicht in dem entsprechenden Feld steht??
Für Edit Insert etc. muss das so sein (Dokument im Edit Mode und Cursor im entsprechenden Feld.

Boris

Wetterhexe:
Danke, Bodo für den Tipp.

Hatte tatsächlich vergessen, beim Ausführen des EditInsert den Cursor ins RTF-Feld zu setzen. Allerdings habe ich jetzt noch das Problem, das notes alle "\" im Dateipfad entfernt und dann meine Datei nicht findet. Was muss ich angegeben, damit das nicht passiert?

Gruß
Wetterhexe Gitti

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln