Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: kendo am 13.03.03 - 12:42:22
-
Guten Tag,
ich bin ein Lotus Notes neuling und suche ein script mit dem ich das persönlcihe adressbuch exportieren kann. ein link auf ein paar script beispiele ist auch wilkommen.
vielen dank für eure hilfe :)
-
HMM, exportieren ist soweit ja kein Problem; wäre nur gut zu wissen, WOHIN ?? ;D
Gib mal bitte ein paar Infos
-
danke erstmal für die schnelle antwort.
ich brauche das file im plain unix format zum import in sap crm. (batch input job) dazu soll (so weit ich es bis jetzt verstanden habe) ein button in einer mail / datenbank das persönliche adressbuch des users in ein verzeichniss auf dem server exportieren. (möglichst mit filename = username)
im nächsten schritt suche ich ein "ding" das mir einen event in lotus notes trigert (das ändern des persönlichen adressbuchs) und draufhin automatisch dieses text file erzeugt.
gibt es es bei lotus so etwas wie das msdn code center?
-
OK,
beim Export hast du zunächst einmal 2 Möglichkeiten:
1. ein Script, das den Datensatz entsprechend zusammensetzt. Ich weiß jetzt nicht ob UNIX mit festen Feldlängen arbeitet, oder ob die Feldinhalte mit einem trennzeichen übergeben werden können.
2. du kannst jede Ansicht über Datei - Exportieren als Ascii File exportieren.
deine 2. Frage ist nicht SOO einfach. hier müßtest du den Export durch einen Event im Document steuern. Das Datenbank Script selber bietet keine Möglichkeit wie z.B. OnDocumentCreated oder so eine Aktion zu starten.
Zum Codecenter:
auch da gibt es unterschiedliche Seiten im Netz. Allerdings wirdst du durt die Infos nicht in der Form wie im MSDN finden; fast alle Seiten sind auf Diskussionsbasis geführt.
Nun möchte ich auch nicht unbedingt Werbung in eigener Sache machen, aber schau dir doch einfach mal meine Homepage an. Da findest du so was ähnliches wie ein Codecenter
eknori
-
"2. du kannst jede Ansicht über Datei - Exportieren als Ascii File exportieren."
das ist es was ich brauche :) . die funktion "alle doktumente exportieren" liefert mir ein text file in dem untereinander alle einträge des persönlichen adressbuchs stehen.
jetzt muss ich nur noch rausfinden wie man das in einem script schreibt.
kann man das als agent machen und dann an die user verteilen? (zb der agent führt sich 1 mal initial aus und danach alle 12h)
p.s. hab mir erstmal deine schatzkiste bestellt ;)
-
Beim export hast du die Möglichkeit zwischen structured text und tabular text zu wählen.
nimm mal tabular text; dann bekommst du eine Liste.
Hst du "nur" einen 4.x Client oder auch die Möglichkeit die Kiste auf einem R5 System zu öffnen; ich frag nur, damit ich die DB noch in das R4 Format zurüchkonvertieren muss
-
ich selber habe hier ein r5 aber der kunde hat imho 4.6.x .
muss mich das erste mal mit lotus notes unter entwicklungs sicht beschäftigen. -> mal ein "hallo welt" agenten machen ;)
-
für den Anfang wäre erst einmal wichtig in welcher reihenfolge die Feldwerte vorliegen sollen und ob ein trennzeichen verwendet werden kann.
Einen Agenten kann ich dir dann auf die Schnelle zusammenbraten
-
alle felder sind ok dann filter ich auf der sap seite.
trennzeichen macht er schon selber das /n .
danke für die hilfe
-
ich meinte eher das trennzeichen zwischen den Feldwerten
Vorname~Nachname
und nicht das EOL
-
trennzeichen ist fast egal ein ";" reicht.
-
Hier habe ich ein Script, das einen Export aus unserem Organisationsverzeichnis macht.
Ich denke, das kannst du auf deine Bedürfnisse anpassen
Option Public
Option Declare
'Export_STRATTEC:
'=====================================
' C L A S S "FileGuard"
'=====================================
'The specific example is a "FileGuard" class that guarantees that a file you open gets closed, no matter what else happens.
' How it works: whenever you declare a class in LotusScript, you can define a Delete method that executes
' when an object of that class is deallocated. This happens whenever the memory is freed, whether it's
' because the object has gone out of scope from the function it was declared in, or because the script aborted
' with an error, or by Ctrl+Break.
' The simple class below is useful when doing file I/O to make sure that you don't leave a file open if the user aborts.
' Note: you must open a file using the returned file handle from the Handle method, before you allocate
' another instance of FileGuard, or else they will get the same file number. Since Freefile returns the number
' of the first file handle that's not yet in use, calling it twice without using the result of the first call to open a
' file, returns the same value again.
Class FileGuard
filenumber As Integer
isopen As Integer
Public Property Get Handle
Handle = filenumber
End Property
Sub New()
filenumber = Freefile( )
isopen = True
End Sub
Sub Close
If isopen Then
On Error Resume Next
Close filenumber
isopen = False
End If
End Sub
Sub Delete
Me.Close
End Sub
End Class
Sub Click(Source As Button)
Dim s As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim View As NotesView
Dim Item As NotesItem
Dim outString As String
Dim i As Integer
' Keep the next three statements together
Dim FG1 As New FileGuard
outfile% = FG1.Handle
Open "D:\TEMP\STRATTEC.TXT" For Output As outfile%
Set db = s.CurrentDatabase
Set view = db.GetView ("(PicklistPersons)")
Set doc = View.GetFirstDocument
i = 1
outstring = Chr$(34) + "ID" +Chr$(34) + "," + Chr$(34) + "Name" +Chr$(34) + "," + Chr$(34) + "E-Mail Address" +Chr$(34) + "," + Chr$(34) + "First Name" +Chr$(34) + "," + Chr$(34) + "Last Name"
Print #outfile%, outString
While Not ( doc Is Nothing )
'// Read field values from document
Set Item = doc.GetFirstItem ("FirstNameOS")
FirstName$ = Item.Text
Set Item = doc.GetFirstItem ("LastNameOS")
LastName$ = Item.Text
If doc.hasItem ("InternetAddress") Then
Set Item = doc.GetFirstItem ("InternetAddress")
MailAddress$ = Item.Text
Else
MailAddress$ = ""
End If
Set Item = doc.GetFirstItem ("OfficePhoneNumber")
OfficePhoneNumber$ = Item.Text
Set Item = doc.GetFirstItem ("Department")
Department$ = Item.Text
'// Build outString
'// "ID","Name","E-Mail Address","First Name","Last Name"
outstring = Cstr(i) + ", " + Chr$(34) + LastName$ + ", " + FirstName$ + Chr$(34) + ", " +_
Chr$(34 ) + MailAddress$ + Chr$(34) + ", " +_
Chr$(34 ) + FirstName$ + Chr$(34) + ", " +_
Chr$(34 ) + LastName$ + Chr$(34)
' + ", " +_
'Chr$(34 ) + OfficePhoneNumber$ + Chr$(34) + ", " +_
'Chr$(34 ) + Department$ + Chr$(34)
Print #outfile%, outString
Print outstring
i = i +1
outString = ""
Set doc = view.GetNextDocument(doc)
Wend
FG1.Close
End Sub
-
vielen dank für das bsp.
jetzt suche ich noch eine object referenz für lotus notes.
(damit ich weis wie ich bestimmte notes db's ansprechen kann bzw wie ich einen bestimmten view setze)
p.s. ich habe gegoogelt aber nichts vernünftiges gefunden ::)
-
gehe mal auf http://www.lotus-schmidt.de
unterSonstiges -Tools findest du das Poster
-
vielen dank für die hilfe :)
jetzt muss ich nur noch nen drucker finden der mir das vernünftig gross druckt.
(ist zum lesen aber auch schon gut)
-
Hi,
ich muss jetzt mal 1-2 dumme fragen stellen.
wenn ich einen agten erzeuge und dein beispiel code einbaue kommt ein debug error. liegt denke ich mal darann das notes den code zerstückelt. (oder mache ich was falsch?)
wie kann ich das persönliche adressbuch ansprechen?
(ala "Set db = currentsession.$PersönlichesAdressbuch")
gibt es ein gutes buch zur einführung?
(wie man an den fragen merkt bitternötig :-\ )
-
kannst mir mal bitte das AB schicken ? Dann kann ich mir das mal vor Ort ansehen.
Hat Notes denn beim Einfügen des Code irgendwo gemeckert ??
-
zur erklärung wie ich das script einfüge.
ich gehe in mein persönliches adressbuch (notes r5)
und sage create new agent. in diesem agenten stelle ich unten das editor fenster auf lotus script und paste dein code rein.
sobald ich das ganze saven will kommt ein debug error
"varibale not declared MailAddress$"