Autor Thema: Alle Maildatenbanken auf dem Server bearbeiten  (Gelesen 4798 mal)

Offline CLI_Andreas_Schmidt

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 668
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
    • Lotus Notes & Domino Schulung und Entwicklung
Alle Maildatenbanken auf dem Server bearbeiten
« am: 15.02.04 - 16:40:55 »
Hi an alle,

ich arbeite gerade an einem Agenten, der auf einem Server alle Maildatenbanken nacheinander aufrufen soll.

Ich habe zwar getnextdatabase gefunden, jedoch geht es leider nur über das directory und somit auf alle Datenbanken. Ich will aber Zugriff (nur) auf die Maildatenbanken. Also...

getfirst Maildatabase......agent.....fertig
getnextMaildatabase......agent.....fertig
getnextMaildatabase......

Fertig.

Hat jemand das auch schon mal probiert ?

Gruss

Andreas
Viele Grüße

Andreas.Schmidt@lotus-schmidt.de

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re:Alle Maildatenbanken auf dem Server bearbeiten
« Antwort #1 am: 15.02.04 - 16:43:34 »
Musst Du wohl aus dem Adressbuch auslesen, eine andere zuverlässige Methode ist mir nicht bekannt.
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re:Alle Maildatenbanken auf dem Server bearbeiten
« Antwort #2 am: 15.02.04 - 16:47:46 »
das geht nur ressourcenverschwenderisch über alle DB; du kannst aber die relevanten DB mittels db.path ( oder so ) ausfiltern.

Also wenn path nicht mail, dann zu nächsten DB sonst bearbeite aktuelle DB.

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

Offline animate

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.540
  • Uh, I'm just gonna go find a cash machine.
    • LA2
Re:Alle Maildatenbanken auf dem Server bearbeiten
« Antwort #3 am: 15.02.04 - 16:50:08 »

Ich habe zwar getnextdatabase gefunden, jedoch geht es leider nur über das directory und somit auf alle Datenbanken. Ich will aber Zugriff (nur) auf die Maildatenbanken. Also...

getfirst Maildatabase......agent.....fertig
getnextMaildatabase......agent.....fertig
getnextMaildatabase......

Fertig.

du kannst dir doch ne Klasse schreiben, die die NotesDBDirectory-Klasse nutzt und dir dann deine eigenen getFirst/nextMailDB-Funktionen schreiben. Dazu brauchst du dann halt ein Kriterium, woran du eine MailDB erkennst (Name ihres Mastertemplates z.B.)
Thomas

Fortunately, I'm adhering to a pretty strict, uh, drug, uh, regimen to keep my mind, you know, uh, limber.

Offline CLI_Andreas_Schmidt

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 668
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
    • Lotus Notes & Domino Schulung und Entwicklung
Re:Alle Maildatenbanken auf dem Server bearbeiten
« Antwort #4 am: 15.02.04 - 16:51:40 »
Hi eknori,

wie sieht den dann der code aus ? muss ich dann wissen, wie die Datenbank heißt ? oder kann ich sagen: db.path und dann mit getfirstDatabase und getnextdatabase dieses Verzeichnis durchlaufen ? Das würde mir schon reichen. Ich habe bisher nur zugreifen können, wenn ich den Namen der Datenbank kannte.

???

Scheint gar nicht so trivial zu sein.

Gruss

Andreas
Viele Grüße

Andreas.Schmidt@lotus-schmidt.de

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re:Alle Maildatenbanken auf dem Server bearbeiten
« Antwort #5 am: 15.02.04 - 16:56:46 »
guck mal in die NotesDatabaseClass --> db.FilePath
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re:Alle Maildatenbanken auf dem Server bearbeiten
« Antwort #6 am: 15.02.04 - 17:11:19 »
irgendwie so (

Sub Click(Source As Button)
   Dim s As New NotesSession
   Dim db As NotesDatabase
   Set db = s.currentdatabase

path = db.filepath
file = db.filename
pos = Instr(path, file)
path = Left(path, pos-1)

   Msgbox path
End Sub

oder einfacher

Sub Click(Source As Button)
   Dim s As New NotesSession
   Dim db As NotesDatabase
   Set db = s.currentdatabase
   
   path = Left(db.filepath, (Instr(db.filepath, db.filename) -1))
   
   Msgbox path
End Sub
« Letzte Änderung: 15.02.04 - 17:46:39 von 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 eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re:Alle Maildatenbanken auf dem Server bearbeiten
« Antwort #7 am: 15.02.04 - 17:38:31 »
nu isser weg und ich sitze hier und warte auf ein feedback... :'(
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline Axel_Janssen

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 769
Re:Alle Maildatenbanken auf dem Server bearbeiten
« Antwort #8 am: 15.02.04 - 20:54:07 »
@Andreas: eknoris Ansatz ist gut.
Wait a moment. Meine Kristallkugel sagt mir gerade, dass sich die Mailfiles möglicherweise, durch irgendwelche Zufälle in verschiedenen Verzeichnissen befinden.
Du mußt du den notesDatabase.path eben gegen ein Array testen.

Gruß Axel
... design patterns are abstract designs that help identify the structure and elements involved in a specific design solution. From this, a concrete implementation can be produced.
Kyle Brown

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Alle Maildatenbanken auf dem Server bearbeiten
« Antwort #9 am: 15.02.04 - 20:59:53 »
Nicht gegen ein Array testen, sondern das machen, was Semeaphoros schon sagte: Sicher geht das nur über das Adressbuch.

Bernhard

Offline Don Pasquale

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.390
  • Geschlecht: Männlich
  • Don Pasquale
    • Auf Verlorenem Posten
Re:Alle Maildatenbanken auf dem Server bearbeiten
« Antwort #10 am: 16.02.04 - 09:24:02 »
@Andreas: eknoris Ansatz ist gut.
Wait a moment. Meine Kristallkugel sagt mir gerade, dass sich die Mailfiles möglicherweise, durch irgendwelche Zufälle in verschiedenen Verzeichnissen befinden.
Du mußt du den notesDatabase.path eben gegen ein Array testen.

Gruß Axel

Hallo Axel,
verstehe ich das richtig ? Können die Postfächer wandern ?


Ciao
Don Pasquale

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re:Alle Maildatenbanken auf dem Server bearbeiten
« Antwort #11 am: 16.02.04 - 09:28:33 »
Zitat
Können die Postfächer wandern

warum denn nicht ? Ich habe auch etliche Maildatenbanken in unterschiedlichen Verzeichnissen ( DirLink)
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re:Alle Maildatenbanken auf dem Server bearbeiten
« Antwort #12 am: 16.02.04 - 09:42:26 »
Kommt dazu, dass Mailfiles ganz normale Datenbanken sind und sich nicht zuverlässig als Mehlpfeile identifizieren lassen.  Der Weg übers Adressbuch ist also unvermeidlich. Damit bekommt man aber solche Dateien nicht in den Griff, die nur als Replik auf dem Server liegen und bei denen Mail auf einem anderen Server eingeliefert wird.
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline Don Pasquale

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.390
  • Geschlecht: Männlich
  • Don Pasquale
    • Auf Verlorenem Posten
Re:Alle Maildatenbanken auf dem Server bearbeiten
« Antwort #13 am: 16.02.04 - 10:12:10 »
Zitat
Können die Postfächer wandern

warum denn nicht ? Ich habe auch etliche Maildatenbanken in unterschiedlichen Verzeichnissen ( DirLink)


Naja, es ist doch etwas anderes, ob ich Maildatenbanken an unterschiedlichen Orten speichere oder dieselbe Maildatenbank
sich heute hier und morgen dort befindet.

Nachfrage: Es ist also nicht klug den Zugriff auf eine Maildatenbank über ein Profildokument zu lösen in dem der Pfad steht ?

Ciao
Don Pasquale

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re:Alle Maildatenbanken auf dem Server bearbeiten
« Antwort #14 am: 16.02.04 - 10:22:21 »
Auf EINE oder auf ALLE? Und wie häufig?

Natürlich lassen sich diese Angaben cachen, nur sollte man sie dann regelmässig mit dem Adressbuch abgleichen und einen Fallback haben, wenn man die Datei nicht mehr am ursprünglichen Ort findet. Mehlpfeile werden nun mal zwischendurch abgeschossen (gelöscht) oder von einem Köcher in einen anderen verschoben, auch wenn das nicht unbedingt speziell häufig ist. Und dann kommen ja auch mal neue User dazu, oder gibt es die bei Euch nicht?  :o
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Alle Maildatenbanken auf dem Server bearbeiten
« Antwort #15 am: 16.02.04 - 10:27:44 »
Wozu ein Profil-Document ?
Im Backend weiss der Server (oder mein Agent) über das Adressbuch, wo sich die gültige Mail-DB von User X befindet.
Im FrontEnd steht die Info im Location Document.

So what ?

Bernhard

Offline Don Pasquale

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.390
  • Geschlecht: Männlich
  • Don Pasquale
    • Auf Verlorenem Posten
Re:Alle Maildatenbanken auf dem Server bearbeiten
« Antwort #16 am: 16.02.04 - 10:32:44 »
@V.B. Köhler
>Wozu ein Profil-Document ?
Wenn man es nicht besser weiß ?!
>Im Backend weiss der Server (oder mein Agent) über das Adressbuch, wo sich die gültige Mail-DB von User X befindet.
OK, wieder was gelernt !

>So what ?
Red Zac ?

:-)

Alles klar, mit diesem Infos sollte ich das sauber umsetzen können.

Ciao
Don Pasquale



Offline Christopher

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.060
  • Geschlecht: Männlich
  • Dumm ist der, der dummes tut.
Re:Alle Maildatenbanken auf dem Server bearbeiten
« Antwort #17 am: 16.02.04 - 10:58:00 »
Hier wäre mal ein Beispiel Scritp was nur das Verzeichnis org und mail berücksichtigt:


Sub Initialize
   
   Dim Session As NotesSession
   Dim ws As NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Dim doc As NotesDocument
   Dim NAB As NotesDatabase
   Dim NABServer As String
   Dim NABView As NotesView
   Dim NABDoc As NotesDocument
   Dim ServerMailFile As NotesDatabase
   Dim ServerDirectory As NotesDbDirectory
   Dim NABCollectList List As NotesDocumentCollection
   Dim FileFromNABList List As String   
   Dim FileFromServerList List As ServerFileType
   
   Set session = New NotesSession
   Set ws = New NotesUIWorkspace
   Set uidoc = ws.CurrentDocument
   Set doc = uidoc.Document
   
   'Specify the server from which to get user information
   
   
   If doc.serverver(0)="" Or doc.ServerToSearch(0)="" Then
      Msgbox "Kein Server oder Verzeichnis angegeben!"
      Exit Sub
   End If
   
   NABServer = doc.serverver(0)
   
     'Open the Public Address Book
   
   Print "Adressbuch öffnen"
   
   Set NAB = Session.GetDatabase(NABServer,"names.nsf")
   
   If NAB.IsOpen Then
      
         'Server\Mail users view and place all the documents in a collection (one for each server)
      
      Set NABView = NAB.GetView("Server\Mail Users")
      
      FileCount%=0
      
      Print "Ansicht ""Server\Mail Users""  öffnen"
      
      'For each speficied server, find all the mail files (you might need to edit this section to specify the correct mail directory)
      
      Forall TKServer In doc.ServerToSearch
         
         Set ServerDirectory = Session.GetDbDirectory(Cstr(TKServer))
         Set ServerMailFile = ServerDirectory.GetFirstDatabase(DATABASE)
         
         While Not ServerMailFile Is Nothing
            
         '   test=Left$(Ucase$(ServerMailFile.FilePath),5) = "MAIL\"
         '   test2=Left$(Ucase$(ServerMailFile.FilePath),5) = "ORG\"
            
            If Left$(Ucase$(ServerMailFile.FilePath),5) = "MAIL\" Or Left$(Ucase$(ServerMailFile.FilePath),4) = "ORG\" Then 'And Mid$(Ucase$(ServerMailFile.FilePath),6,7) <> "CLUSTER" Then
               
               ' Änderung 1 13.01.03 DH:
               ' es gibt auch DBen, die nicht auf ".NSF" enden (z.B. ".NS4"), deshalb robustere Selektion
               ' alter Code
               ' FileFromServerList(FileCount%).FilePath = Left$(Ucase$(ServerMailFile.FilePath),Instr(1,Ucase$(ServerMailFile.FilePath),".NSF")-1)
               ' neuer Code
               FileFromServerList(FileCount%).FilePath = Left$(Ucase$(ServerMailFile.FilePath),Instr(1,Ucase$(ServerMailFile.FilePath),".NS")-1)
               ' Ende Änderung 1 13.01.03
               FileFromServerList(FileCount%).ServerName = TKServer
               FileFromServerList(FileCount%).Owner = ServerMailFile.Title
               
            End If
            Set ServerMailFile = ServerDirectory.GetNextDatabase()
            FileCount%=FileCount%+1
         Wend
      End Forall   
      
      'Create an array list of the files in the mail directory
      
      i=0
      Forall TKServer In doc.ServerToSearch
         Set NABCollectList(i) = NABView.GetAllDocumentsByKey(Cstr(TKServer),False)
         i=i+1
      End Forall
      'For all the users in the Public address book for the same server, create an array list
      
      FileCount%=0
      
      
      
      Forall NABCollect In NABCollectList
         For NABCount% = 1 To NABCollect.count
            
            Set NABDoc = NABCollect.GetNthDocument(NABCount%)
            
            If Right$(Ucase$(NABDoc.MailFile(0)),4) = ".NSF" Then
               ' Änderung 2 13.01.03 DH:
               ' es gibt auch DBen, die nicht auf ".NSF" enden (z.B. ".NS4"), deshalb robustere Selektion
               ' alter Code
               ' FileFromNABList(FileCount%) = Left$(Ucase$(NABDoc.MailFile(0)),Instr(1,Ucase$(NABDoc.MailFile(0)),".NSF")-1)
               ' neuer Code
               FileFromNABList(FileCount%) = Left$(Ucase$(NABDoc.MailFile(0)),Instr(1,Ucase$(NABDoc.MailFile(0)),".NS")-1)
               ' Ende Änderung 2 13.01.03
            Else
               FileFromNABList(FileCount%) = Ucase$(NABDoc.MailFile(0))
            End If
            FileCount%=FileCount%+1
         Next
      End Forall
      
      'Compare the mail files found on the server to those in the Public address book.  Exit if found and continue
      
      Forall FileFromServer In FileFromServerList
         
         Found = False
         Print "Prüfe die  Maildatei " + FileFromServer.FilePath
         
         Forall FileFromNAB In FileFromNABList
            
            If FileFromServer.FilePath = FileFromNAB Then
               Found = True
               Exit Forall
            End If
            
         End Forall
         
         'If a mail file is not listed in the Public Address Book, flag it
         
         If Found = False Then
            Call uidoc.FieldAppendText ("MailFileName", FileFromServer.FilePath & Chr$(10))
            Call uidoc.FieldAppendText ("MailFileOwner", FileFromServer.Owner & Chr$(10))
            Call uidoc.FieldAppendText ("ServerName", FileFromServer.ServerName & Chr$(10))
         End If
         
      End Forall
      
   Else
      
      Messagebox("Kann das Adressbuch nicht öffnen :-(")
   End If
End Sub
Client & Server R 5.011
Principal Certified Lotus Professional R5 System Administration
Microsoft Certified Systems Engineer 2000
Microsoft Certified Systems Administrator 2000
Microsoft Certified Systems Administrator 2003
Microsoft Certified Systems Engineer 2003

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re:Alle Maildatenbanken auf dem Server bearbeiten
« Antwort #18 am: 16.02.04 - 11:15:43 »
Hol Dir das Adressbuch über die Session, das muss nicht unbedingt names.nsf heissen
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz