Autor Thema: Excel-Dokument als Object -> Source-File austauschen  (Gelesen 4144 mal)

Offline yannick

  • Junior Mitglied
  • **
  • Beiträge: 94
Hallo zusammen,
ich habe in einer Form ein Excel-Dokument als Object gespeichert und lasse dieses als Bild anzeigen. Bei der Form handelt es sich um eine Art Dashboard und das Excel-Dokument ist ein Teil davon. Ich habe diese Form also als Dokument in der DB gespeichert und lasse dann entsprechend dieses Dokument anzeigen unter Dashboard. Nun soll es möglich sein das enthaltene Excel-Dokument zu aktualisieren, sprich eine andere Excel-Datei hochzuladen. Jetzt habe ich einiges durchgelesen und versucht an dieses Object ran zu kommen...Über EmbeddedObjects und über Items kein Erfolg.
Ist es überhaupt möglich für ein existierendes Object in einem Dokument eine andere Source-File hochzuladen? Ich hatte mir einen File-Chooser gedacht, über welchen man dann die gewünschte Excel-Datei in das Dokument hochladen und damit die "alte" Excel-Datei austauschen/aktualisieren kann.
Danke & Grüße
« Letzte Änderung: 17.08.12 - 13:46:49 von yannick »

Offline yannick

  • Junior Mitglied
  • **
  • Beiträge: 94
Re: Excel-Dokument als Object -> Source-File austauschen
« Antwort #1 am: 17.08.12 - 13:59:31 »
Jetzt bin ich wohl irgendwie an das Objekt gekommen, irgendwie aber auch nicht. Hier erstmal was ich bisher habe
Code
	Dim workspace As New NotesUIWorkspace
	Dim session As New NotesSession
	Dim db As NotesDatabase
	Dim view As NotesView
	Dim doc As NotesDocument
	Dim uidoc As NotesUIDocument
	Dim var As Variant
	
	Set db = session.Currentdatabase
	Set view = db.Getview("Dashboard")
	Set doc = view.Getfirstdocument()
	
	Call workspace.Editdocument(False, doc)
	Set uidoc = workspace.Currentdocument
	Set var = uidoc.Getobject("Microsoft Excel 97-2003 Worksheet")
"Microsoft Excel 97-2003 Worksheet" ist der Name, der mir unter "Object Properties" angezeigt wird. Im Debugger sehe ich jetzt, dass "var" ein [Object] enthält. Der Vorgang hat auch einiges gedauert (das Excel-Dokument ist sehr groß). Nur jetzt weiß ich nicht wie es weiter geht. Mit dem "var" kann ich nichts anstellen... :-\

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Excel-Dokument als Object -> Source-File austauschen
« Antwort #2 am: 17.08.12 - 14:19:05 »
Die Datei sollte nicht in einer Form gespeichert sein, sondern in einem Dokument. Wenn ich micht recht erinnere, hatten wir das neulich erst diskutiert, oder?

Du willst die Datei in einem Gestaltungselement aktualisieren, falls Du da technisch ran kommst, muss der ausführende Benutzer Entwicklerrechte auf die Datenbank haben. Das willst Du auf keinen Fall!

Offline yannick

  • Junior Mitglied
  • **
  • Beiträge: 94
Re: Excel-Dokument als Object -> Source-File austauschen
« Antwort #3 am: 17.08.12 - 14:25:29 »
Die Datei sollte nicht in einer Form gespeichert sein, sondern in einem Dokument.
Das meinte ich hiermit:
Ich habe diese Form also als Dokument in der DB gespeichert
Ist also bereits getan. Wie komme ich denn an dieses Object ran? Wie gesagt, über EmbeddedObjects und Items kommt nichts.

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Excel-Dokument als Object -> Source-File austauschen
« Antwort #4 am: 17.08.12 - 15:06:57 »
Ganz konkret: Wo ist die Datei gespeichert?

1. In der Maske und mit der Maske hast Du ein Dokument erstellt und gespeichert

oder

2. In der Maske ist ein Feld, in das ein Dateianhang angehängt werden kann (Richtext), und mit der Maske wurde ein Dokument erstellt und in das Feld (Item) im Dokument die Datei angehängt

Im Falle von 2. musst Du über das Item mit EmbeddedObjects an die Datei herankommen, sonst stimmt etwas nicht.

Offline yannick

  • Junior Mitglied
  • **
  • Beiträge: 94
Re: Excel-Dokument als Object -> Source-File austauschen
« Antwort #5 am: 17.08.12 - 15:19:24 »
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")
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.

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Excel-Dokument als Object -> Source-File austauschen
« Antwort #6 am: 17.08.12 - 15:22:50 »
IIRC geht genau das nicht - Du kannst den Typ der Darstellung des Objects nicht bestimmen.

Bernhard

Offline yannick

  • Junior Mitglied
  • **
  • Beiträge: 94
Re: Excel-Dokument als Object -> Source-File austauschen
« Antwort #7 am: 17.08.12 - 15:27:36 »
Verdammt. Gibt es sonst eine andere Möglichkeit ein Sheet des Excel-Files grafisch darzustellen über LS?

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Excel-Dokument als Object -> Source-File austauschen
« Antwort #8 am: 17.08.12 - 15:32:18 »
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.
« Letzte Änderung: 17.08.12 - 15:37:52 von Peter Klett »

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Excel-Dokument als Object -> Source-File austauschen
« Antwort #9 am: 17.08.12 - 15:40:12 »
Verdammt. Gibt es sonst eine andere Möglichkeit ein Sheet des Excel-Files grafisch darzustellen über LS?

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)
« Letzte Änderung: 17.08.12 - 16:00:36 von Peter Klett »

Offline yannick

  • Junior Mitglied
  • **
  • Beiträge: 94
Re: Excel-Dokument als Object -> Source-File austauschen
« Antwort #10 am: 17.08.12 - 15:58:27 »
Super Idee mit dem CopyAllItems! Ich habe jetzt also mein Dokument mit dem Excel-File als OLE-Object eines RT-Felds. Das Dokument kann ich bearbeiten, und so ein neues Excel-File einbauen. In die Dashboard-Form habe ich den Code mit der CopyAllItems-Methode unter QueryOpen eingefügt. Es funktioniert auf jeden Fall. Leider habe ich jetzt eine kleine Verschiebung drin. Wenn ich jetzt in der Auswahl auf Dashboard klicke wird im Frame links ein Stück vom Dashboard abgeschnitten. Man muss immer erst wieder nach links scrollen um das Dashboard richtig sehen zu können. Meine Tabelle (=Dashboard) passt aber genau in das Frame, sodass das eigentlich nicht passieren dürfte.

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Excel-Dokument als Object -> Source-File austauschen
« Antwort #11 am: 17.08.12 - 16:03:43 »
Kontrollier mal die Randeinstellungen, vielleicht ist da was schief. Oder die Randeinstellungen des kopierten Items werden übernommen und zu den Randeinstellungen in der Maske addiert. Irgend so ein Quatsch wird das sein. Da musst Du probieren und findest bestimmt eine Lösung

Offline yannick

  • Junior Mitglied
  • **
  • Beiträge: 94
Re: Excel-Dokument als Object -> Source-File austauschen
« Antwort #12 am: 17.08.12 - 16:08:57 »
Bestimmt, also vielen Dank nochmal für die super Idee ;)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz