Das Notes Forum

Lotus Notes / Domino Sonstiges => OLE/COM-Programmierung => Thema gestartet von: mibo11 am 19.02.08 - 09:59:06

Titel: OpenOffice Anbindung an Lotus Notes per OLE
Beitrag von: mibo11 am 19.02.08 - 09:59:06
Hallo zusammen,

ich versuche gerade erfolglos aus OpenOffice 2.3.1 und folgenden Zeilen eine Anbindung an Lotus Notes 7.02 herzustellen.

oleService = createUnoService("com.sun.star.bridge.oleautomation.Factory")
oApp = oleService.createInstance("Notes.NotesSession")
oApp.Username


Nachdem die Lotus NotesSession und damit auch Notes gestartet wird, bricht jeder Zugriff auf Eigenschaften oder Methoden mit angehängter Fehlermeldung ab.
Auch der Zugriff über "Lotus.NotesSession", "Notes.NotesUIWorkspace" brachte keinen Erfolg. Hat jemand schon einmal Erfahrungen mit einer Lotus Notes Anbindung aus OpenOffice gemacht? Es scheint sich dabei auch um ein Lotus Notes spezifisches Problem zu handeln, da der Zugriff über OLE in Verbindung mit Word, bzw. WordPro problemlos funktioniert.

Gruß Sascha

Ich habe die Anfrage auch im OpenOffice Forum gestellt. http://de.openoffice.info/viewtopic.php?f=18&t=16241 (http://de.openoffice.info/viewtopic.php?f=18&t=16241)
Titel: Re: OpenOffice Anbindung an Lotus Notes per OLE
Beitrag von: Axel am 19.02.08 - 10:02:45
Es scheint sich dabei auch um ein Lotus Notes spezifisches Problem zu handeln, da der Zugriff über OLE in Verbindung mit Word, bzw. WordPro problemlos funktioniert.

Gruß Sascha

Warum soll das ein Notes-spezifisches Problem sein, wenn es in Verbindung mit Word bzw. WordPro funktioniert?
Ich denke eher, dass es ein OpenOffice-Problem ist.


Axel
Titel: Re: OpenOffice Anbindung an Lotus Notes per OLE
Beitrag von: mibo11 am 19.02.08 - 10:13:17
Hallo Axel,

bitte keine Wertung, bzw. Diskussion über ggf. unglücklich formulierter Beschreibungen eröffnen.  ;)

Ich habe ja auch, wie bereits erwähnt, ein weiteres Posting im OO Forum aufgemacht.

Gruß
Sascha
Titel: Re: OpenOffice Anbindung an Lotus Notes per OLE
Beitrag von: Axel am 19.02.08 - 10:32:32
Hallo Axel,

bitte keine Wertung, bzw. Diskussion über ggf. unglücklich formulierter Beschreibungen eröffnen.  ;)

Ich habe keine Wertung abgegeben und will auch keine Diskussionen lostreten. Es war nur ein Hinweis für eine Eingrenzung des Bereichs für die Fehlersuche.

Axel
Titel: Re: OpenOffice Anbindung an Lotus Notes per OLE
Beitrag von: ata am 19.02.08 - 18:57:09
... also die Fehlermeldung kommt von OpenOffice - und so wie ich das sehe ein Problem mit der Initailisierung der Notes.Session hat. Dazu muß Notes ordentlich installiert worden sein, da die OLE-Instanzierung sonst nicht funktionieren kann.

Ich schau mir das heute Abend noch an, da ich an dem Thema OpenOffice gerade auch dranhänge - morgen also mehr...

Die Frage, die sich mir stellt ist, ob der Thread nicht verschoben werden sollte => Richtung Campanion und OLE ...

Toni

Titel: Re: OpenOffice Anbindung an Lotus Notes per OLE
Beitrag von: ata am 19.02.08 - 22:14:13
... hat mir keine Ruhe gelassen - ich habe etwas herumprobiert, und mein Verdacht ist, daß OpenOffice hier bei der Einbindung der OLE/COM-Schnittstelle nicht ganz sauber implementiert hat. Der Verdacht begründet sich darauf, daß OO beim Initialisieren mit session.Initialize die Länge der Argumente bemängelt - laut Spezifizierung aber gar nicht notwendig. In meinem Beispiel arbeite ich mit einem leeren Passwort - das wird angenommen - zumindest geht Lotus Notes damit im Frontend auf. Probiert habe ich mit Windows XP ...

Der folgende Code in OpenOffice bringt die Fehlermeldung, daß ein Initialize fehlschlägt, der bei dir im Code gefehlt hat, aber notwendig ist. Die Session erscheint im Frontend, der Debugger bleibt aber beim session.Initialize("") stehen, mit dem Hinweis, daß er nicht initialisieren kann: Basic-Laufzeitfehler, Object-Variable ist nicht belegt

sub open_LN()
   dim service as object
   dim session as object
   dim db As object
   service = createUnoService("com.sun.star.bridge.oleautomation.Factory")
   session = service.createInstance("Lotus.NotesSession")
   session.Initialize("")
   db = session.GetDatabase("" ,"names.nsf")
   MsgBox( "Das lokale Adressbuch heißt => " & db.Title )
end sub

Ein Versuch es mit "Lotus.NotesSession.7.0" und anderen Möglichkeiten schlug ebenso fehl.

Der Leerstring im Initialize steht für ein Passwort, falls es bei der Anmeldung in Notes erforderlich wäre. Laut Spezifizierung braucht man auch keines einzugeben. Für den Fall, daß es erforderlich wäre, würde dann danach gefragt werden.

Eine Initialisierung mit session.InitializeUsingNotesUserName (username, password) wird speziell für den Zugriff auf einen Server benötigt - der klappt bei lokalem Zugriff nicht...


Der für Excel oder Word angepasste Code funktioniert hervoragend:

sub open_LN()
   Dim session as Variant
   Dim db As Variant
   Set session = GetObject("Lotus.NotesSession")
   Call session.Initialize("")
   Set db = session.GetDatabase("" ,"names.nsf")
   MsgBox( "Das lokale Adressbuch heißt => " & db.Title )
end sub

Achtung:
Im Taskmanager verbleiben pro Versuch nlnotes.exe-Tasks, die wieder abgeschossen werden müssen, wenn sie wie in meinen Beispielen nicht wieder bereinigt wurden, und ...

Zitat
"Notes.NotesUIWorkspace" brachte keinen Erfolg

... klappt mit OLE/COM-Schnittstelle nie, da keine Frontend-Klassen unterstützt werden...

Das wärs erst mal für's erste... ::)

Toni
Titel: Re: OpenOffice Anbindung an Lotus Notes per OLE
Beitrag von: mibo11 am 20.02.08 - 10:35:04
Hallo Toni,

dass die OLE/COM Schnittstelle nicht ganz sauber implementiert ist, möchte ich noch mit einem Beispiel unterlegen. Nachfolgender Code in OpenOffice ausgeführt liefert über hasProperty oApp.hasProperty("UserName") = True, oApp.hasProperty("Hier bewusst einen faschen Wert angegeben") = False zurück. Dies kannst du auch über hasMethode(irgendwas) nachzuvollziehen. D.h. die Methoden und Eigenschaften werden schon erkannt. Wird dann allerdings auf die Eigenschaft zugegriffen, schlägt der angegebene Fehler wieder zu.

   Dim oleService as Object
   Dim oApp as Object
   oleService = createUnoService("com.sun.star.bridge.oleautomation.Factory")
   oApp = oleService.createInstance("Lotus.NotesSession")
   Msgbox oApp.hasProperty("UserName")
' liefert True zurück
   Msgbox oApp.hasProperty("Irgendwas") ' liefert False zurück
   Msgbox oApp.hasMethod("Initialize") ' liefert True zurück
   Msgbox oApp.UserName ' liefert Fehler zurück
   Msgbox oApp.getValue("UserName") ' liefert ebenso Fehler zurück


Gruß
Sascha
Titel: Re: OpenOffice Anbindung an Lotus Notes per OLE
Beitrag von: ata am 20.02.08 - 11:54:40
Hallo Sascha,

da wirst du auf diesem Weg schlechte Papiere haben, solange es nicht sauber implementiert ist, wer auch immer da den schwarzen Peter hat...

Es muß wohl in der Vergangenheit in einer früheren Version des OpenOffice schon funktioniert haben, denn ich bin beim googeln auf Threads in Foren gestossen (Jahr 2005) die mit anderen Problemen gekämpft haben - gemeinsam war bei denen, daß das Initialize eingebaut war und damals als Methode ansprechbar war. Stellt sich noch immer die Frage, woran es liegt. COM-Schnittstelle in Microsoft Office funktioniert über GetObject( "..." ) ohne Probleme. Der gleiche Weg, oder der über den Service funktioniert in OpenOffice jedoch nicht.

Auf der anderen Seite habe ich von OpenOffice aus ein MS Word-Dokument geöffnet und was reingeschrieben - das hat funktioniert. Damit dürfte es entweder die Datei sein, die Lotus zur Verfügung stellt und nicht konform ist - oder von OpenOffice unsauber verwendet wird - derzeit ein Patt in der Frage nach dem Schuldigen - und den sollte man herausfinden, um sich an den richtigen wenden zu können...

Harren wir der Dinge. Ich werde noch probieren, ob es mit der Notes-Version zusammenhängen kann - dann käme eine Alt-Installation von OpenOffice dran. Wie sieht das bei dir aus - brauchst du das bereits für einen Kunden oder dient es eher der Fortbildung? ::)

Toni
Titel: Re: OpenOffice Anbindung an Lotus Notes per OLE
Beitrag von: mibo11 am 20.02.08 - 16:01:25
Hallo Toni,

der OLE/COM Gedanken aus OO ist zunächst erst einmal verworfen. Warten wir da auf bessere Unterstützung, von wem auch immer.  ;D

Nächster Versuch ist der Zugriff über die NotesAPI. Ich werde darüber berichten, sobald ich brauchbare Ergebnisse habe.

Gruß
Sascha

PS: Bei dem Beschriebenen handelt es sich übrigens um eine Vorstudie.
Titel: Re: OpenOffice Anbindung an Lotus Notes per OLE
Beitrag von: ata am 20.02.08 - 17:40:01
Hallo Sascha,

was genau hast du denn vor?

Toni
Titel: Re: OpenOffice Anbindung an Lotus Notes per OLE
Beitrag von: mibo11 am 20.02.08 - 18:41:30
Hallo Toni,

im Prinzip etwas ganz Einfaches:

Zunächst eine OpenOffice Vorlage aus Notes heraus aufrufen, innerhalb von OpenOffice bearbeiten und auf Benutzeranforderung zurückschreiben. Zwischenzeitlich müssen in Abhängigkeit verschiedener Benutzereingaben Textbausteine aus Notes geholt werden.

Gruß
Sascha

Titel: Re: OpenOffice Anbindung an Lotus Notes per OLE
Beitrag von: ata am 21.02.08 - 00:21:36
Zitat
auf Benutzeranforderung zurückschreiben

... ein Button in OpenOffice, oder der Trigger im Notes?

Toni
Titel: Re: OpenOffice Anbindung an Lotus Notes per OLE
Beitrag von: mibo11 am 21.02.08 - 10:34:37
... leider muss es ein Button in OpenOffice sein.

Gruß
Sascha
Titel: Re: OpenOffice Anbindung an Lotus Notes per OLE
Beitrag von: ata am 21.02.08 - 13:33:53
... nur mal so ketzerisch gedacht - eventuell über einen funktionierenden Weg eine Durchreichung:

OpenOffice-Button => MS Word => Makro starten => Notes per COM verbinden und Aktion ausführen

Keinesfalls eine Musterlösung - höchstens ein Provisorium - und alles andere als charmant  ;)

Toni

 
Titel: Re: OpenOffice Anbindung an Lotus Notes per OLE
Beitrag von: mibo11 am 21.02.08 - 19:54:31
Hallo Toni,

Die Wordlösung fällt leider mangels WordClient aus. Nach vielen Versuchen OLE und NotesAPI habe ich das Problem jetzt auch noch in das IBM Forum gestellt.

Vielen Dank für deine Mühe.

Gruß
Sascha
Titel: Re: OpenOffice Anbindung an Lotus Notes per OLE
Beitrag von: mibo11 am 21.02.08 - 22:57:54
... nur mal so ketzerisch gedacht - eventuell über einen funktionierenden Weg eine Durchreichung:

OpenOffice-Button => MS Word => Makro starten => Notes per COM verbinden und Aktion ausführen

Keinesfalls eine Musterlösung - höchstens ein Provisorium - und alles andere als charmant  ;)

Toni

Den Weg über ein Zwischenprogramm habe ich übrigens auch ausprobiert. Über VB .net habe ich eine DLL erstellt, die aus OO aufgerufen werden sollte. Leider bin ich da mangels Kenntnisse auch gescheitert.

Fehlermeldung: Kein Aufrufpunkt gefunden.

Bin aber noch an dem Thema dran und werde weiteres berichten.

Gruß
Sascha
Titel: Re: OpenOffice Anbindung an Lotus Notes per OLE
Beitrag von: jBubbleBoy am 22.02.08 - 00:09:40
hi,
ich hab schon eine anbindung von und nach notes mit oo durchgeführt, als informationsträger habe ich eine datei genommen. die aufrufe erfolgten dann wie folgt:
notes --> oo via ole
oo --> notes via db öffnen, das erfolgt über aufruf von notes.exe mit parameter zur notes-db, man kann auch ein ndl zu einer notesview öffnen, auf jeden fall wird ein queryopen-script in notes ausgeführt in dem man dann alles machen kann.
die info was wie gemacht werden soll erfolgt dann über eine datei welche eineindeutig über die systemenvironment "tmp" definiert wurde.
ist schon spät am abend ich hoffe das reicht fürs erste.

bubble
ps.: das ganze geht auch mit linux ;)
Titel: Re: OpenOffice Anbindung an Lotus Notes per OLE
Beitrag von: ata am 22.02.08 - 00:36:59
@bubble,

... ich weiß ja daß es spät ist, aber kannst du nicht versuchen die Großstelltaste zu verwenden - das liest sich mehr wie anstrengend - vor allem um diese Tageszeit -  ;) - Danke...

Ich werde deinen Lösungsweg zu einer anderen Stunde mal anschauen - hört sich brauchbar an...

Toni
Titel: Re: OpenOffice Anbindung an Lotus Notes per OLE
Beitrag von: LordKiri am 11.07.08 - 10:32:31
Bin gerade an dem selben Problem dran und mir ist aufgefallen, dass wenn man von MS Office aus per OLE auf Notes zugreifen will, man erst einmal die "Lotus Domino Objects" in die Verweise aufnehmen muss danach funktioniert die Initialize-Methode auch.

Die frage ist ob es eine ähnliche Funktion auch in OpenOffice gibt.

Edit: Nebenbei OOo bringt bei mir bei

msgbox oApp.hasproperty("Initialize")

"False"
Titel: Re: OpenOffice Anbindung an Lotus Notes per OLE
Beitrag von: jBubbleBoy am 14.07.08 - 10:27:51
Hallo,
man kann nicht von OO auf Notes via OLE zugreifen, weil OO ein Plattformunabhängiges Ding ist, Sprich auch Linux, Mac usw läuft. Zum vergleich OLE ist pur Windows.
Hier muss man tricksen.

bubble
Titel: Re: OpenOffice Anbindung an Lotus Notes per OLE
Beitrag von: flaite am 14.07.08 - 11:22:35
OpenOffice hat eine Java Api.
z.B. http://weblogs.java.net/blog/tchangu/archive/2005/12/open_office_jav_1.html
Warum neue Anwendungen auf Schnittstellentechnologien basieren, die noch nicht mal mehr vom Hersteller (Microsoft) gepusht wird? 
Titel: Re: OpenOffice Anbindung an Lotus Notes per OLE
Beitrag von: LordKiri am 14.07.08 - 12:27:47
Hallo,
man kann nicht von OO auf Notes via OLE zugreifen, weil OO ein Plattformunabhängiges Ding ist, Sprich auch Linux, Mac usw läuft. Zum vergleich OLE ist pur Windows.
Hier muss man tricksen.

bubble

Es wäre nett wenn du deine Aussage ein wenig präzisieren könntest....
Titel: Re: OpenOffice Anbindung an Lotus Notes per OLE
Beitrag von: jBubbleBoy am 14.07.08 - 12:49:44
Im Grunde steht hier, in meinem alten Post, alles was gemacht werden muss.

hi,
ich hab schon eine anbindung von und nach notes mit oo durchgeführt, als informationsträger habe ich eine datei genommen. die aufrufe erfolgten dann wie folgt:
notes --> oo via ole
oo --> notes via db öffnen, das erfolgt über aufruf von notes.exe mit parameter zur notes-db, man kann auch ein ndl zu einer notesview öffnen, auf jeden fall wird ein queryopen-script in notes ausgeführt in dem man dann alles machen kann.
die info was wie gemacht werden soll erfolgt dann über eine datei welche eineindeutig über die systemenvironment "tmp" definiert wurde.
ist schon spät am abend ich hoffe das reicht fürs erste.

bubble
ps.: das ganze geht auch mit linux ;)


Mit tricksen meine ich den Aufruf einer Notes-DB und dem Triggern eines Notes-Events.

bubble
Titel: Re: OpenOffice Anbindung an Lotus Notes per OLE
Beitrag von: jBubbleBoy am 14.07.08 - 12:52:18
@Axel: Es geht um den Bezug OO --> Notes, und das lässt sich mit der OO API nicht umsetzen.

bubble
Titel: Re: OpenOffice Anbindung an Lotus Notes per OLE
Beitrag von: flaite am 14.07.08 - 16:29:25
@Axel: Es geht um den Bezug OO --> Notes, und das lässt sich mit der OO API nicht umsetzen.

bubble
Wieso ? Muß man da nicht einfach Notes.jar in den Classpath dabeigeben?
Titel: Re: OpenOffice Anbindung an Lotus Notes per OLE
Beitrag von: jBubbleBoy am 14.07.08 - 21:10:28
Klingt einfach, aber was macht man damit? OO ist eigentlich mehr Basic als Java, diesen Weg habe ich bisher nicht betrachtet.
Wüsste jetzt nicht wie ich eine "import lotus.domino.*" herstellen könnte.
Titel: Re: OpenOffice Anbindung an Lotus Notes per OLE
Beitrag von: LordKiri am 15.07.08 - 07:57:59
Im Grunde steht hier, in meinem alten Post, alles was gemacht werden muss.

hi,
ich hab schon eine anbindung von und nach notes mit oo durchgeführt, als informationsträger habe ich eine datei genommen. die aufrufe erfolgten dann wie folgt:
notes --> oo via ole
oo --> notes via db öffnen, das erfolgt über aufruf von notes.exe mit parameter zur notes-db, man kann auch ein ndl zu einer notesview öffnen, auf jeden fall wird ein queryopen-script in notes ausgeführt in dem man dann alles machen kann.
die info was wie gemacht werden soll erfolgt dann über eine datei welche eineindeutig über die systemenvironment "tmp" definiert wurde.
ist schon spät am abend ich hoffe das reicht fürs erste.

bubble
ps.: das ganze geht auch mit linux ;)


Mit tricksen meine ich den Aufruf einer Notes-DB und dem Triggern eines Notes-Events.

bubble

Kannst du dafür einen Beispiel-Code erstellen, ich bin noch ein Programmier-Neuling und brauch noch ein wenig Starthilfe....
Titel: Re: OpenOffice Anbindung an Lotus Notes per OLE
Beitrag von: jBubbleBoy am 15.07.08 - 08:24:06
Das sind leider nicht nur ein paar Codezeilen, sondern einige Bibliotheken.
Ich möchte hier auch keine fertige Lösung posten, zumal gerade der Weg OO-->Notes einiges in OO-Basic gemacht werden muss und allein die Verteilung der OO-Macros ist ein Thema für sich.
Aber wenn Du fragen hast, dann beantworte ich Dir diese gern.

Was ist deine Aufgabe, wo stehst Du und was ist aus der technischen Sicht unklar?
Titel: Re: OpenOffice Anbindung an Lotus Notes per OLE
Beitrag von: LordKiri am 15.07.08 - 09:20:34
Meine Aufgabe ist es insgesamt 4 Variablen aus einem Domino Verzeichnis über OOo abfragen leider schaff ich es noch nicht einmal von OOo aus auf das Verzeichnis zuzugreifen.
Bis jetzt habe ich es per OLE probiert aber du sagst ja das geht so nicht und aus dem was du geschrieben hast werd ich nicht schlau also:

oo --> notes via db öffnen, das erfolgt über aufruf von notes.exe mit parameter zur notes-db, man kann auch ein ndl zu einer notesview öffnen

ich kann das nicht im OOo umsetzten, dafür bräuchte ich etwas Starthilfe...
Titel: Re: OpenOffice Anbindung an Lotus Notes per OLE
Beitrag von: jBubbleBoy am 15.07.08 - 09:28:53
Startest Du von Notes aus? Oder kann es sein das Notes gar nicht aktiv ist?
Welche Variablen möchtest Du?
Titel: Re: OpenOffice Anbindung an Lotus Notes per OLE
Beitrag von: jBubbleBoy am 15.07.08 - 10:03:03
OK, nochmal Schrittweise:
1) Notes wird mit mit der Funktion shell aufrufen, als Parameter übergibt man eine DB oder eine Ansicht via NDL
2) im QueryOpen Ereignis von der DB oder der Ansicht wird LotusScript ausgeführt
3) das QueryOpen LotusScript Ereignis schreibt seine Werte an einem definierten Ort (Datei)
4) das QueryOpen Ereignis schließt sich selber, oder verhindert das weitere bearbeiten, continue=false, damit es immer wieder aufgerufen werden kann
5) OO wartet mit dem Befehl wait eine definierte Zeit, prüft dabei immer ob am vereinbarten Ort (Datei) die gewünschte Information auftaucht.
6) OO kann nach einer gewissen Zeit, wenn nichts passiert dem Anwender das auch so mitteilen

Das klingt vielleicht etwas "komisch konstruiert" wird aber so gemacht und funktioniert super.
1. Knackpunkt)  Notes muss geöffnet seit, ansonsten wird Notes geöffnet, das ist aber in der Regel der Fall
2. Knackpunkt) die notes.exe muss bekannt sein, hier gibt es 2 Ansätze um das rauszufinden, einmal die path-Variable durchlaufen und eine Notes.exe suchen oder über notes.dll Funktionen
3. Knackpunkt) ein definierter Ort (Datei), habe ich über Environment gelöst, OO & Notes --> Environ("temp")
Titel: Re: OpenOffice Anbindung an Lotus Notes per OLE
Beitrag von: LordKiri am 15.07.08 - 10:21:33
Startest Du von Notes aus? Oder kann es sein das Notes gar nicht aktiv ist?
Welche Variablen möchtest Du?

Notes ist immer offen ich möchte aber von OOo aus starten
Ich möchte den Username, eMail-Adresse, Kürzel, Telefon und FAX(hab ich vorher vergessen)
Titel: Re: OpenOffice Anbindung an Lotus Notes per OLE
Beitrag von: LordKiri am 16.07.08 - 11:00:31
so hab ein wenig probiert aber noch nix brauchbares hingekriegt.... muss ich das ganze über

createUnoService

laufen lassen oder wie???

kannst du bitte die ersten paar Zeilen posten, die mir den kontakt zu der DB herstellen?
Titel: Re: OpenOffice Anbindung an Lotus Notes per OLE
Beitrag von: LordKiri am 21.07.08 - 13:06:38
So ich hab jetzt mal einfach so probiert, da du dich ja nicht gemeldet hast:

Code
shell "C:/Programme/IBM/Lotus/Notes/notes.exe", "C:/Programme/IBM/Lotus/Notes/test.ndl"

die Zeile startet auch tatsächlich notes nur wie komm ich jetzt an die Infos in der DB??
Titel: Re: OpenOffice Anbindung an Lotus Notes per OLE
Beitrag von: koehlerbv am 21.07.08 - 13:15:26
... da du dich ja nicht gemeldet hast ...

Warum sollte er sich auch melden? Er hat Dir in dankenswerter Weise das Procedere bereits genau aufgemalt. Wenn Du damit nicht klar kommst, bräuchtest Du (umfangreichen) fertigen Code, und der wird in Foren in der Regel niemals geliefert.

Bernhard
Titel: Re: OpenOffice Anbindung an Lotus Notes per OLE
Beitrag von: LordKiri am 21.07.08 - 13:22:26
Ich will ja keinen fertigen Code, aber ein wenig Hilfe könnte ich schon noch gebrauchen.... Ich bin ja auch dankbar, dass er mich von der OLE-Schiene weggebracht hat und mir ein Procedere aufgemalt hat nur leider bin ich kein Programmiere und ich komm damit halt nicht klar....
Titel: Re: OpenOffice Anbindung an Lotus Notes per OLE
Beitrag von: flaite am 21.07.08 - 21:40:01
Zitat
als Parameter übergibt man eine DB oder eine Ansicht via NDL
Du kannst dieses Event im Postopen Event Database Script der Notes Datenbank. Oder im Postopen Event der Notes View.
Titel: Re: OpenOffice Anbindung an Lotus Notes per OLE
Beitrag von: koehlerbv am 22.07.08 - 01:18:27
.... nur leider bin ich kein Programmiere und ich komm damit halt nicht klar...

Entschuldige, aber: Du bist kein Programmierer (das wurde jetzt schon klar ...), und das gilt sowohl für IBM Lotus Notes als auch für OpenOffice. Wie stellst Du Dir dann aber vor, wie Du solch eine Programmieraufgabe lösen möchtest? Wir helfen ja gerne, aber hier würde das doch auf "andere machen Deinen Job" hinaus laufen. Diese Sache ist sowieso schon komplex, aber wenn das Null-Wissen dahinter steht ...

Bernhard

PS: Ich stand gerade vor der Entscheidung, unseren 11 Jahre alten und wohlgedienten Zweitwagen noch mal durch den TÜV zu bringen oder verschrotten zu lassen. Einer sagt: Schweller und Auspuff flicken wir selbst (Heimwerker-Szenario. Kosten ungewisss ...). Die freie Werkstatt sagt: Das kriegen wir schon hin. Am Schweller kann man ... und am Auspuff muss nur ... 400 EUR. Sicher durch den TÜV? Danach sicher fahren? (!!!) "Naja, das hält noch ein Jahr!". Hmm.
Die Fachwerkstatt, die den Wagen nun wirklich regelmässig betreut hat (viel gab es nicht zu tun): "Ja nicht wegschmeissen!! Für die Presse viel zu schade! Schweller, Auspuff, Radlager vorne rechts und noch ein paar Kleinigkeiten - der erste Aufwand für das Auto - und dann steht er auch noch die HU 2010 durch und läuft wirklich sicher!". Kosten: 900 EUR. Meine Entscheidung war sehr einfach.
Titel: Re: OpenOffice Anbindung an Lotus Notes per OLE
Beitrag von: flaite am 22.07.08 - 08:30:56
Seh das anders als Berhard. Solche Integrationsszenarien haben imho einen generischen Charakter. Fand diesen Thread bisher interessant und hab etwas gelernt. Es gibt sicher noch andere, robustere Lösungsansätze.
Man könnte sehr vermutlich z.B. auch für OpenOffice einen WebService Consumer programmieren und in Notes einen Webservice Producer programmieren, was zugegeben in Notes 6 möglich, aber wirklich nicht so einfach ist. In Notes 7 gibts dafür ein Design-Element in Notes.
http://udk.openoffice.org/java/examples/wsproxy/component_description.html
Eine weitere Möglichkeit bestände darin, die Notes Datenbank über HTTP anzusprechen. Offenbar kann man das auch in OpenOffice einbauen.
Titel: Re: OpenOffice Anbindung an Lotus Notes per OLE
Beitrag von: Ralf_M_Petter am 22.07.08 - 09:43:04
Ich denke, der Ansatz über die Webservices ist der beste, wenn man keine Offlinefunktionalität benötigt. Sonst würde ich aber auch über die java Schiene arbeiten. Am besten einen Openofficeprogrammierer anheuern für die Programmierung eines Uno Service der die entsprechenden Daten aus Notes ausliest und den dann von Openoffice Basic ansprechen. Alles andere halte ich eher wieder für einen Murks.

Grüße

Ralf M Petter
Titel: Re: OpenOffice Anbindung an Lotus Notes per OLE
Beitrag von: flaite am 22.07.08 - 10:57:42
http://searchsoa.techtarget.com/tip/0,289483,sid26_gci1317058,00.html
Hier ist ein guter Artikel, der auch "Webscraping" als weniger Architektur-intensive Lösung für openOffice anspricht. In Open Office wäre das
Insert->Link to External Data
Dort könntest du eine URL auf einen Notes Agenten einfügen und den Agenten Daten zurückliefern lassen.
Daneben gibts noch ein offenbar fertig programmiertes Beispiel, um einen Yahoo Webservice einzubinden, der sich vermutlich auch für Domino Webservices ab Domino 7 verwenden läßt.
Müßte das ganze auch für lokale Notes-Datenbanken/Repliken funktionieren, so geht das wiederum nicht. Hab irgendwo mal gehört Notes 8 Eclipse Client hätte einen Webserver eingebunden (im Client). Bin mir aber nicht sicher. Dann ging sowas wieder für lokale Datenbanken/Repliken. Bin mir aber nicht sicher.
Eine Webservice Infrastruktur zu programmieren ist kein Hexenwerk, aber für nicht-Programmierer stehen da vermutlich doch zu viele Hürden im Weg.
Titel: Re: OpenOffice Anbindung an Lotus Notes per OLE
Beitrag von: LordKiri am 22.07.08 - 16:31:17
Entschuldige, aber: Du bist kein Programmierer (das wurde jetzt schon klar ...), und das gilt sowohl für IBM Lotus Notes als auch für OpenOffice. Wie stellst Du Dir dann aber vor, wie Du solch eine Programmieraufgabe lösen möchtest? Wir helfen ja gerne, aber hier würde das doch auf "andere machen Deinen Job" hinaus laufen. Diese Sache ist sowieso schon komplex, aber wenn das Null-Wissen dahinter steht ...

Bernhard

PS: Ich stand gerade vor der Entscheidung, unseren 11 Jahre alten und wohlgedienten Zweitwagen noch mal durch den TÜV zu bringen oder verschrotten zu lassen. Einer sagt: Schweller und Auspuff flicken wir selbst (Heimwerker-Szenario. Kosten ungewisss ...). Die freie Werkstatt sagt: Das kriegen wir schon hin. Am Schweller kann man ... und am Auspuff muss nur ... 400 EUR. Sicher durch den TÜV? Danach sicher fahren? (!!!) "Naja, das hält noch ein Jahr!". Hmm.
Die Fachwerkstatt, die den Wagen nun wirklich regelmässig betreut hat (viel gab es nicht zu tun): "Ja nicht wegschmeissen!! Für die Presse viel zu schade! Schweller, Auspuff, Radlager vorne rechts und noch ein paar Kleinigkeiten - der erste Aufwand für das Auto - und dann steht er auch noch die HU 2010 durch und läuft wirklich sicher!". Kosten: 900 EUR. Meine Entscheidung war sehr einfach.


Erstmal habe ich nicht die Möglichkeit eine Entscheidung zu treffen, ich muss es halt machen und zweitens hab ichs zumindest für mich und auch hoffentlich meine Firma ausreichend hinbekommen....

Und zwar habe ich die Tipps von BubbleBoy aufgenommen und hab mit dem Befehl:
Code
@Environment

Die Variablen in die ini-Datei geschrieben und diese dann mit OOo geöffnet nach dem Startpunkt gesucht und dann simpel über SearchAndReplace in die Vorlage reingeschmissen....

Danke für die kostruktive Hilfe an alle, die hilfreiche Beiträge geschrieben haben und hier ist mein OOo-Code für die Interessierten:

Code
Sub SearchAndDestroy
' Variablendeklaration: 
'----------------------- 
dim DateiNr as Integer 	'Dateinummer für einen freien Dateikanal 
dim Zeile as String 		'Variable für die aktuell aus der Datei eingelesenen Zeile 
dim Position as Integer 	'Positionsangabe für die Suche nach Elementen zur Zeilenzerlegung 
dim Werte(0,1) as String 	'Array für die aus der Ini eingelesenen Werte (1. Element(0) = Name , 2. Element(1) = Wert) 
dim W_Anzahl as Integer 	'Zähler für die Werteanzahl, die eingelesen wurde 
dim i as integer 		'Zählvariable 

'Initialiserung 
'---------------------------------------- 
W_Anzahl = 0 				'Die Anzahl der eingelesenen Werte auf 0 setzten

'ini-Datei öffnen: 
'-------------------------------------------------------------------------------------------- 
DateiNr = freefile 								'freie Dateinummer ermitteln  
Open "c:\notes.ini" for input as DateiNr 		'INI öffnen 

'Nun muss die relevante Sektion gefunden werden: 
'----------------------------------------------- 
do 
Line Input #DateiNr, Zeile 
Position = Instr (Zeile, "$Start=Start") 
loop until Position > 0 

'Nun werden die Werte und Wertenamen extrahiert und in das Datenarray übernommen 
'------------------------------------------------------------------------------- 
do 
Line Input #DateiNr, Zeile 		                'es wird die nächste Zeile eingelesen 
Position = Instr (Zeile, "=") 		                'und die Position des Zeichens = ermittelt 
if Position > 0 then 				'dann wurde das Zeichen gefunden 
Werte (W_Anzahl,0) = mid(Zeile, 1, Position - 1)                'und es kann der Parametername in das Array übernommen werden 
Werte (W_Anzahl,1) = mid(Zeile, Position + 1, len(Zeile) 	'dazu kommt jetzt noch der Parameterwert in´s Array 
W_Anzahl = W_Anzahl + 1 				'Wertezähler 1 hoch 
ReDim Preserve Werte(W_Anzahl,1) 	'Array vergrößern 
else 				'ansonsten könnte es sein, dass eine fehlerhafte Zeile vorgekommen ist
Position = Instr (Zeile, "[") + Instr (Zeile, "]")
if Position > 1 then exit Do 								'dann beginnt vermutlich eine neue Sektion und das Einlesen ist beendet 
end if 
loop until EOF(DateiNr) 									'wenn keine neue Sektion kommt, dann geht es bis zum Dateiende weiter 
Close #DateiNr 												'die Datei brauche ich jetzt nicht mehr, ich habe alles im Array 

Uname = Werte(0,1)											'Variablen für die ausgelesenen Werte setzten
SHname = Werte(1,1)
Ophone = Werte(2,1)
Ofax = Werte(3,1)
Iadr = Werte(4,1)

'ab hier laufen die Suchen
'-------------------------------------------------
Dim oDoc As Object 
Dim oSearch As Object, nTimes As Long 
oDoc = ThisComponent 
aSearch = oDoc.createReplaceDescriptor 
  with aSearch 
  	.SearchString = "Fname" 
    .ReplaceString = Uname
    .SearchWords = true
  end with
  nTimes = oDoc.replaceAll(aSearch)
  
bSearch = oDoc.createReplaceDescriptor 
  with bSearch 
  	.SearchString = "FSHname" 
    .ReplaceString = SHname
    .SearchWords = true
  end with
  nTimes = oDoc.replaceAll(bSearch)
  
cSearch = oDoc.createReplaceDescriptor 
  with cSearch 
  	.SearchString = "Ftel" 
    .ReplaceString = Ophone
    .SearchWords = true
  end with
  nTimes = oDoc.replaceAll(cSearch)

dSearch = oDoc.createReplaceDescriptor 
  with dSearch 
  	.SearchString = "Ffax" 
    .ReplaceString = Ofax
    .SearchWords = true
  end with
  nTimes = oDoc.replaceAll(dSearch)

eSearch = oDoc.createReplaceDescriptor 
  with eSearch 
  	.SearchString = "Fadr" 
    .ReplaceString = Iadr
    .SearchWords = true
  end with
  nTimes = oDoc.replaceAll(eSearch)
End Sub
Titel: Re: OpenOffice Anbindung an Lotus Notes per OLE
Beitrag von: koehlerbv am 22.07.08 - 16:55:50
Okay, Du hast mich widerlegt, was Programmierfähigkeiten angeht  ;)

Zwei Probleme sehe ich aber nach wie vor:
Du erwartest die NOTES.INI immer an einer einzigen definierten Stelle. Das kann (und wird in grösseren Installationen) Ärger geben.
Vor allem aber gibt es nach wie vor keine automatische Verbindung von OO zu Notes. Die Aktion muss - wenn ich jetzt nichts übersehen habe - in beiden Applikationen separat angestossen werden.

Bernhard
Titel: Re: OpenOffice Anbindung an Lotus Notes per OLE
Beitrag von: LordKiri am 23.07.08 - 00:54:35
die notes.ini wird standardgemäß immer an der selben stelle abgelegt und da bei uns alle installation gleich ausgeführt werden sind auch alle verzeichnisse gleich....
Titel: Re: OpenOffice Anbindung an Lotus Notes per OLE
Beitrag von: koehlerbv am 23.07.08 - 01:01:38
Alle haben Schreibrechte in C:\ ? Wirklich?

Aber derartige Rechtevergabe, bevorstehende Probleme mit Vista oder plötzlich auftauchende mobile Benutzer sind ja gar nicht Thema dieses Threads.

LordBörnie
Titel: Re: OpenOffice Anbindung an Lotus Notes per OLE
Beitrag von: LordKiri am 30.07.08 - 08:44:09
Zum Glück haben wir kein Vista :D

dafür ein neues Problem....

nachdem es erst geklappt hat (zumindest für mich) bringt er bei allen anderen in OOo die Fehlermeldung, dass das Makro aus Sicherheitsgründen nicht ausgeführt werden kann, wenn ich aber die Vorlage so im OOo öffne geht es auch überall....
Es geht also nur nicht wenn ich das ganze von Notes aus starte, kann mir hierbei noch jemand helfen?
Titel: Re: OpenOffice Anbindung an Lotus Notes per OLE
Beitrag von: LordKiri am 04.08.08 - 09:34:15
So hab den passenden Code für OOo, mit dem es zumindest angeblich funktionieren sollte, aber ich scheiter leider bei der Übersetzung in LotusScript....

hier der UrCode:
Code
Dim oOpenProperties(0) as new com.sun.star.beans.PropertyValue
' 0: execute macros with no warning message
oOpenProperties( 0 ).Name = _
"MacroExecutionMode"
oOpenProperties( 0 ).Value = _
com.sun.star.document.MacroExecMode.ALWAYS_EXECUTE_NO_WARN ' value 4
Set objDoc = objDskTop.loadComponentFromUrl(docUrl, "_blank", 0, oOpenProperties() )

und hier meine Übersezung: (bringt Fehlermeldung: Subscript out of range)
Code
	Dim SM As Variant
	Dim Desktop As Variant
	Dim oOpenProperties()
	Set SM=CreateObject("com.sun.star.ServiceManager")
	Set Desktop=SM.createInstance("com.sun.star.frame.Desktop")
	
'0: execute macros with no warning message
	oOpenProperties(0).Name = "MacroExecutionMode"
	oOpenProperties(0).Value = "com.sun.star.document.MacroExecMode.ALWAYS_EXECUTE_NO_WARN" ' value 4
	

	Dim objDocument As Variant
	Set objDocument=Desktop.loadComponentFromURL("file:///c:/BriefVorlage01.ott","_blank",0,oOpenProperties())
Titel: Re: OpenOffice Anbindung an Lotus Notes per OLE
Beitrag von: jBubbleBoy am 04.08.08 - 09:50:59
das öffnen eines OO Dokumentes sieht bei mir so aus:

Code
Dim ooDoc, ooDesk, PropertyValue()
FilePath$ = "... Datei welche geöffnet werden soll ..."
FilePath$ = replace( FilePath$, ":", "|" )
FilePath$ = "file:///" + replace( FilePath$, "\", "/" )		
FilePath$ = replace(FilePath$, " ","%20")
Set ooDesk= word.createInstance("com.sun.star.frame.Desktop")
Set ooDoc = ooDesk.loadComponentFromURL(FilePath$, "_default",   0,PropertyValue)

Wenn es nicht am Filepath liegt (: mit | ersetzen), funktioniert es denn bei Dir ohne den Werten in PropertyValue?
Titel: Re: OpenOffice Anbindung an Lotus Notes per OLE
Beitrag von: m3 am 04.08.08 - 10:14:20
John Head hat ein paar nette Beispiele für den Zugriff von Lotusscript auf OO.org Writer:
http://www.johndavidhead.com/jhead/johnhead.nsf/dx/Downloads
Titel: Re: OpenOffice Anbindung an Lotus Notes per OLE
Beitrag von: LordKiri am 04.08.08 - 10:47:58
es funktioniert einwandfrei ohne oOpenProperty...

mein Problem ist dass es dann das Makro welches eigentlich in der Vorlage liegt nicht ausführt....
Wenn ich dann probiere das Makro manuell zu starten kommt die Fehlermeldung:
Aus Sicherheitsgründen kann das Makro nicht ausgeführt werden

die Fehlermeldung kommt auch, wenn ich bei OOo die Makrosicherheit auf die niedrigste Einstellung stelle.

Wenn ich aber die Vorlage so im OOo öffne, dann funktioniert das Makro einwandfrei.
Die Folgerung war, dass ich mich in einem OOo-Forum umgesehen habe und auch eine Lösung für das Problem nur eben in Starbasic (vorheriger Post)

Man kann durch Code die Makrosicherheit eben umgehen und ich möchte das ganze jetzt an LotusScript anpassen, damit es auch bei mir vom Notes aus funktioniert.
Titel: Re: OpenOffice Anbindung an Lotus Notes per OLE
Beitrag von: LordKiri am 04.08.08 - 15:55:40
Nach doch sehr langem Kampf hab ichs hinbekommen :D

hier der Code:
Code
'öffnet OOo
	Dim SM As Variant
	Dim Desktop As Variant
	Set SM=CreateObject("com.sun.star.ServiceManager")
	Set Desktop=SM.createInstance("com.sun.star.frame.Desktop")
	
'setzt die Makrosicherheit ganz runter
	Dim args As Variant 
	Set args= SM.Bridge_GetStruct("com.sun.star.beans.PropertyValue") 
	args.Name = "MacroExecutionMode" 
	args.Value = 4 
	Dim argsReal(0) As Variant 
	Set argsReal(0) = args
	
'öffnet die leere OOo-Vorlage
	Dim objDocument As Variant
	Set objDocument=Desktop.loadComponentFromURL("file:///c:/Eigene Dateien/BriefVorlage01.ott","_blank",0,argsReal)
	
Titel: Re: OpenOffice Anbindung an Lotus Notes per OLE
Beitrag von: jBubbleBoy am 04.08.08 - 16:13:35
Nicht schlecht, hatte OO Makros immer nur via OO Dokumentenereignisse gestartet. Dadurch musste man immer OO Makros ausliefern.

Befinden sich deine Makros im Dokument oder in der Applikation?
Titel: Re: OpenOffice Anbindung an Lotus Notes per OLE
Beitrag von: LordKiri am 05.08.08 - 12:08:46
Mein Makro ist in der Vorlage drin, also in der BriefVorlage01.ott
Titel: Re: OpenOffice Anbindung an Lotus Notes per OLE
Beitrag von: joringel am 13.03.11 - 22:16:28
Die Sache scheint jetzt (erstmals?) wie gedacht zu funktionieren, wir können ohne Umwege über Dateien etc. aus OpenOffice/LibreOffice auf Notes zugreifen.

Tonis Code-Beispiel

Zitat
   dim service as object
   dim session as object
   dim db As object
   service = createUnoService("com.sun.star.bridge.oleautomation.Factory")
   session = service.createInstance("Lotus.NotesSession")
   session.Initialize("")
   db = session.GetDatabase("" ,"names.nsf")
   MsgBox( "Das lokale Adressbuch heißt => " & db.Title )

läuft hier mit den Versionen

- LibreOffice 3.3.1 und Notes 8.5.2 auf Win7
- OpenOffice 3.3.0 und Notes 7.? auf Win XP

Gruß
Peter