Domino 9 und frühere Versionen > ND8: Entwicklung
Excel-Dokument als Object -> Source-File austauschen
yannick:
Also ich habe jetzt zwei forms. In der einen gibt es nur ein einziges RichTextItem, in der anderen (die Form für das Dashboard) gibt es unter anderem auch ein RT-Item. Dann habe ich mit der 1. form ein Dokument erstellt, die Excel-Datei in das RT-Feld angehängt und das Dokument in der DB gespeichert. Jetzt will ich dieses Excel-Dokument (sprich dieses RT-Item) in das RT-Item aus der Dashboard-Form "kopieren". Ich habe es jetzt bereits soweit, dass ich es als Attachment anhängen kann. Allerdings möchte ich es im Dashboard direkt darstellen. Wenn ich das manuell im Designer mache konnte man über Create->Object->Select File das Excel-Sheet einfügen und unter Object Properties die Option Display As: Picture auswählen. Genau dies möchte ich jetzt über Lotus Notes machen. Hier mein bisheriger Code:
--- Code: --- Set db = session.Currentdatabase
Set viewB = db.Getview("scorecard")
Set docB = viewB.Getfirstdocument()
Set rtitemA = docB.Getfirstitem("scorecard")
Set obj = rtitemA.Getembeddedobject("Scorecard_2012-06-26_Report_verbessert.xls")
Set db = session.Currentdatabase
Set viewA = db.Getview("Dashboard")
Set docA = viewA.Getfirstdocument()
Set rtitemB = docA.Getfirstitem("scorecard_item")
--- Ende Code ---
Also das rtitemA enthält das vollständige Excel-File. Über rtitemA greife ich auf das RT-Feld aus der Dashboard-form zu und möchte also das rtitemA wie oben gesagt als Picture darstellen.
koehlerbv:
IIRC geht genau das nicht - Du kannst den Typ der Darstellung des Objects nicht bestimmen.
Bernhard
yannick:
Verdammt. Gibt es sonst eine andere Möglichkeit ein Sheet des Excel-Files grafisch darzustellen über LS?
Peter Klett:
Ich würde versuchen, in dem Dokument aus der form1 die Exceldatei genau so anzuhängen, wie Du sie im Dashbord anzeigen willst.
Dann holst Du Dir in Deinem Script das Dokument, entfernst alle Items, die Du nicht brauchst (sprich das Item "Form")
Call docB.RemoveItem ("Form")
und kopierst alle Items von docB nach docA (also letztlich das Richtextfeld mit dem Object)
Call docB.CopyAllItems (docA)
Das Richtextitem in docB muss genauso heißen, wie das in docA. Das ganze solltest Du ausführen, bevor docA geöffnet wurde.
Könnte klappen, habe ich aber in diesem Zusammenhang noch nie probiert.
Natürlich darfst Du nach dem Löschen der Felder in docB das Dokument nicht speichern, sonst ist das Form-Feld weg ...
EDIT: Falls in docA das Richtextfeld schon kopiert wurde, vorher löschen.
EDIT2: Wenn ich mich recht erinnere, aktualisierst Du die Exceldatei per Script und hängst sie dann an das Dokument an. Dann kannst Du meinen Vorschlag vergessen.
Peter Klett:
--- Zitat von: yannick am 17.08.12 - 15:27:36 ---Verdammt. Gibt es sonst eine andere Möglichkeit ein Sheet des Excel-Files grafisch darzustellen über LS?
--- Ende Zitat ---
Baue das Sheet als Tabelle in Notes nach und versorge die Felder.
EDIT: Oder öffne die Exceldatei, markiere den gewünschten Bereich, kopiere ihn in die Zwischenablage und füge ihn in ein bearbeitbares Richtextfeld eines temporären Dokuments ein. Das Dokument speicherst Du und gehst vor, wie ich vorhin beschreiben habe (CopyAllItems). Das geht alles per Script. Beim Einfügen müsste ein Bild von Excel erzeugt werden (zumindest passiert das, wenn man es von Hand macht)
EDIT2: Das könntest Du auch einmalig beim Aktualisieren der Exceldatei machen, dazu hast Du dann zwei Rtitems in Deiner form1, in das eine hängst Du die Datei, in das zweite kopierst Du die Zwischenablage. Später löschst Du neben Form auch das Rtitem mit dem Dateianhang und kopierst dann alle Items. Das wäre wesentlich performanter (falls es klappt)
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln