[gelöst]Benutzerdaten aus LotusNotes

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

MoC08
*
Beiträge: 17
Registriert: Mo, 30.06.2008 08:54

[gelöst]Benutzerdaten aus LotusNotes

Beitrag von MoC08 »

Hallo,

mein Problem: ich möchte gerne, dass die Benutzerdaten für Briefvorlagen oder ähnliches nicht aus OOo übernommen werden sondern, dass OOo die Benutzerdaten aus einer Lotus Notes Datenbank übernimmt.
Und das alles natürlich in einer Vorlage, damit mehrere Leute damit arbeiten können.

kann mir damit jemand helfen???
Zuletzt geändert von MoC08 am Di, 22.07.2008 15:54, insgesamt 3-mal geändert.
MoC08
*
Beiträge: 17
Registriert: Mo, 30.06.2008 08:54

Re: Benutzerdaten aus LotusNotes

Beitrag von MoC08 »

Mein derzeitiger Code sieht so aus:

Code: Alles auswählen

sub main
   Dim oleService as Object
   Dim oWS as Object
   oleService = createUnoService("com.sun.star.bridge.oleautomation.Factory")
   oWS = oleService.createInstance("Notes.NotesSession")
   oWS.GetValue("UserName")
end sub
Wenn Notes nicht geöffnet ist wird es dadurch auch geöffnet aber leider ohne irgendetwas und man kann auch nichts machen.
Ich habe es auch so probiert:

[c

Code: Alles auswählen

b main
   Dim oleService as Object
   Dim oWS as Object
   oleService = createUnoService("com.sun.star.bridge.oleautomation.Factory")
   oWS = oleService.createInstance("Lotus.NotesSession")
   oWS.Initialize
   oWS.GetValue("UserName")
end sub
Dann bekomm ich einen fehler wegen dem Initialize
MoC08
*
Beiträge: 17
Registriert: Mo, 30.06.2008 08:54

Re: Benutzerdaten aus LotusNotes

Beitrag von MoC08 »

So habe eine neue Richtung eingeschlagen, aber dazu brauche ich eure Hilfe und zwar kann ich mit Lotus Notes Variablen in eine .ini datei schreiben.... ist es möglich per Macro auf diese Datei zuzugreifen die 4 oder 5 Variablen auszulesen und dann an bestimmter Stelle in einer Vorlage einzufügen???

Wenn ja könnte ich etwas Code-Hilfe gebrauchen, da ich nicht wirklich viel Ahnung vom Macro-programmieren habe....

MFG

MoC08


EDIT: habe mit Hilfe der SUchfunktion etwas gefunden, damit kann ich die ini-Datei auslesen, nur wie komm ich jetzt an die Werte ran???
Hier der Code (frech kopiert vonviewtopic.php?f=18&t=1245&start=0&st=0& ... =ini+datei)

Code: Alles auswählen

Sub IniLesen 
' 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 'die berühmte Zählvariable i 

'Initialiserung 
'---------------------------------------- 
W_Anzahl = 0 'Die Anzahl der eingelesenen Werte ist momentan ja noch nicht groß 
On Error GoTo Fehler 'Fehler führen hiermit zum Abbruch (zum Debuggen auskommentieren) 
'Jetzt geht es los, ich versuche die Daten einzulesen und muss diese dazu erst einmal öffnen: 
'-------------------------------------------------------------------------------------------- 
DateiNr = freefile 'freie Dateinummer ermitteln 
 'Fehler führen hiermit zum Abbruch (zum Debuggen auskommentieren) 
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, "WindowSizeBrowseDForms") 
loop until Position > 0 

'Wenn ich nicht mit EOF abgeflogen bin, geht es hier weiter 

'Nun werden die Werte und Wertenamen extrahiert und in das Datenarray übernommen 
'------------------------------------------------------------------------------- 
do 'dazu ist eine Schleife die beste Wahl der Waffen 
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 hoch 
ReDim Preserve Werte(W_Anzahl,1) 'Array vergrößern 
else 'ansonsten könnte es sein, dass eine fehlerhafte Zeile vorgekommen ist, oder die nächste sektion beginnt 
Position = Instr (Zeile, "[") + Instr (Zeile, "]") 'daher prüfe ich mal, ob die beien markanten Zeichen für eine neue Sektion vorkommen 
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 
msgbox 
Exit Sub
MoC08
*
Beiträge: 17
Registriert: Mo, 30.06.2008 08:54

Re: Benutzerdaten aus LotusNotes/Neuer Lösungsweg => Macro-Hilfe

Beitrag von MoC08 »

Hier die Lösung:

In Notes selber wird mittels folgenden Code die Variablen in der notes.ini Datei gespeichert:(Start=Start ist der Startpunkt für OOo um die Variablen zu übernehmen)

Code: Alles auswählen

@Environment("Start";"Start");
@Environment("Uname";@Name([CN];@UserName));
Dann wird die ini von OOo geöffnet die Werte in Variablen konvertiert und letzt endlich durch SearchAndReplace in der Vorlage ersetzt:
[

Code: Alles auswählen

ub 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)

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
[/code]
Benutzeravatar
red2sign
**
Beiträge: 47
Registriert: Mo, 28.07.2008 13:53

Re: [gelöst]Benutzerdaten aus LotusNotes

Beitrag von red2sign »

Codet ihr im Notes?
Wie das denn?
red2sign verwendet WinXP Prof. und OO3 [Developers Snapshot (BEB300m3) Build: 9328]
MoC08
*
Beiträge: 17
Registriert: Mo, 30.06.2008 08:54

Re: [gelöst]Benutzerdaten aus LotusNotes

Beitrag von MoC08 »

Irgendwie versteh ich deine Frage nicht so ganz....
Antworten