Autor Thema: Suche ein Script welches mir das Persönliche Adressbuch exportiert.  (Gelesen 3912 mal)

Offline kendo

  • Frischling
  • *
  • Beiträge: 10
  • Ich liebe dieses Forum!
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 :)

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
HMM, exportieren ist soweit ja kein Problem; wäre nur gut zu wissen, WOHIN ??  ;D

Gib mal bitte ein paar Infos
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline kendo

  • Frischling
  • *
  • Beiträge: 10
  • Ich liebe dieses Forum!
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?

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
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

Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline kendo

  • Frischling
  • *
  • Beiträge: 10
  • Ich liebe dieses Forum!
"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 ;)

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
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
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline kendo

  • Frischling
  • *
  • Beiträge: 10
  • Ich liebe dieses Forum!
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 ;)

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
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
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline kendo

  • Frischling
  • *
  • Beiträge: 10
  • Ich liebe dieses Forum!
alle felder sind ok dann filter ich auf der sap seite.
trennzeichen macht er schon selber das /n .

danke für die hilfe

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
ich meinte eher das trennzeichen zwischen den Feldwerten

Vorname~Nachname

und nicht das EOL
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline kendo

  • Frischling
  • *
  • Beiträge: 10
  • Ich liebe dieses Forum!
trennzeichen ist fast egal  ein ";" reicht.

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
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

Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline kendo

  • Frischling
  • *
  • Beiträge: 10
  • Ich liebe dieses Forum!
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  ::)

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
gehe mal auf http://www.lotus-schmidt.de

unterSonstiges -Tools findest du das Poster
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline kendo

  • Frischling
  • *
  • Beiträge: 10
  • Ich liebe dieses Forum!
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)

Offline kendo

  • Frischling
  • *
  • Beiträge: 10
  • Ich liebe dieses Forum!
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  :-\ )

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
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 ??

Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline kendo

  • Frischling
  • *
  • Beiträge: 10
  • Ich liebe dieses Forum!
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$"

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz