Autor Thema: OpenOffice Anbindung an Lotus Notes per OLE  (Gelesen 58413 mal)

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: OpenOffice Anbindung an Lotus Notes per OLE
« Antwort #40 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.
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline LordKiri

  • Senior Mitglied
  • ****
  • Beiträge: 252
  • aka Andreas
Re: OpenOffice Anbindung an Lotus Notes per OLE
« Antwort #41 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

Offline koehlerbv

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: OpenOffice Anbindung an Lotus Notes per OLE
« Antwort #42 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

Offline LordKiri

  • Senior Mitglied
  • ****
  • Beiträge: 252
  • aka Andreas
Re: OpenOffice Anbindung an Lotus Notes per OLE
« Antwort #43 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....

Offline koehlerbv

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: OpenOffice Anbindung an Lotus Notes per OLE
« Antwort #44 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

Offline LordKiri

  • Senior Mitglied
  • ****
  • Beiträge: 252
  • aka Andreas
Re: OpenOffice Anbindung an Lotus Notes per OLE
« Antwort #45 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?

Offline LordKiri

  • Senior Mitglied
  • ****
  • Beiträge: 252
  • aka Andreas
Re: OpenOffice Anbindung an Lotus Notes per OLE
« Antwort #46 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())

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.290
  • Geschlecht: Männlich
Re: OpenOffice Anbindung an Lotus Notes per OLE
« Antwort #47 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?
Gruss Erik :: Freelancer :: KI-Dev, Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16 / OLI 2.0

--
Nur ein toter Bug, ist ein guter Bug!

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: OpenOffice Anbindung an Lotus Notes per OLE
« Antwort #48 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
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Offline LordKiri

  • Senior Mitglied
  • ****
  • Beiträge: 252
  • aka Andreas
Re: OpenOffice Anbindung an Lotus Notes per OLE
« Antwort #49 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.

Offline LordKiri

  • Senior Mitglied
  • ****
  • Beiträge: 252
  • aka Andreas
Re: OpenOffice Anbindung an Lotus Notes per OLE
« Antwort #50 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)
	

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.290
  • Geschlecht: Männlich
Re: OpenOffice Anbindung an Lotus Notes per OLE
« Antwort #51 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?
« Letzte Änderung: 04.08.08 - 16:56:37 von jBubbleBoy »
Gruss Erik :: Freelancer :: KI-Dev, Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16 / OLI 2.0

--
Nur ein toter Bug, ist ein guter Bug!

Offline LordKiri

  • Senior Mitglied
  • ****
  • Beiträge: 252
  • aka Andreas
Re: OpenOffice Anbindung an Lotus Notes per OLE
« Antwort #52 am: 05.08.08 - 12:08:46 »
Mein Makro ist in der Vorlage drin, also in der BriefVorlage01.ott

Offline joringel

  • Aktives Mitglied
  • ***
  • Beiträge: 105
  • Geschlecht: Männlich
Re: OpenOffice Anbindung an Lotus Notes per OLE
« Antwort #53 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
Nenne nie einen Server 'Lokal'...

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz