2010-06-02 13 views
2

J'ai un certain nombre de bases de données sur un serveur Domino (version 8.5) que je dois trouver les comtes de:Lotus Domino 8.5 compte d'entrée de base de données

  • le nombre de documents au total par NSF
  • la nombre de documents dans la vue "Tous les documents" par NSF

Existe-t-il un moyen simple d'afficher Domino Server 8.5?

Un grand merci Chris

Répondre

3

Vous pouvez obtenir le nombre de documents par NSF en permettant la tâche de catalogue de domaine sur l'un des serveurs de votre domaine. Cela créera une base de données de catalogue de domaines (catalog.nsf) avec des informations sur toutes les bases de données du domaine. Vous pouvez ensuite créer une vue personnalisée dans cette base de données pour organiser les bases de données en fonction du nombre total de documents, etc.

Malheureusement, le processus de catalogage ne suit pas le nombre de documents présents dans chaque vue. De plus, il n'y a aucune garantie que chaque base de données possède même une vue Tous les documents. Cette vue fait partie de nombreux modèles de conception de base de données, tels que Mail ou Discussions, mais il s'agit simplement d'un élément de conception et non d'un élément fondamental pour chaque base de données de notes.

Voici un code que vous pouvez exécuter pour récupérer cette information pour vous sur un serveur donné. Notez que ce code est assez lent.

Sub CountDocuments() 

'Handle database not open error 
On Error Goto ProcessError 
On Error 4060 Goto ProcessNotOpenError 
On Error 4063 Goto ProcessNotOpenError 
On Error 4185 Goto ProcessNotOpenError 

'Constants 
Const SERVERNAME = "SERVER/DOMAIN" 
Const FILENAME = "C:\database_entry_counts.csv" 

'Initialize Objects 
Dim s As New Notessession 
Dim db As Notesdatabase 
Dim dbDirectory As NotesDbDirectory 
Dim docCollection As NotesDocumentCollection 
Dim doc As NotesDocument 
Dim strRow As String 
Dim numDocs As Long, numAllDocs As Long 
Dim viewAllDocs As NotesView 
Dim vecAllDocs As NotesViewEntryCollection 
Dim ve As NotesViewEntry 
Dim docCount As Long 

'Get Database Directory 
Set dbDirectory = s.GetDbDirectory(SERVERNAME) 
Set db = dbDirectory.GetFirstDatabase(DATABASE) 
flag = db.Open("", "")  
While flag = False 'Get next database if first can't be opened 
    Set db = dbDirectory.GetNextDatabase 
    flag = db.Open("", "")  
Wend 

'Open output file 
Set stream = s.CreateStream 
If Not stream.Open(FILENAME, "ASCII") Then 
    Messagebox FILENAME,, "Open failed" 
    Exit Sub 
End If 
If stream.Bytes <> 0 Then 
    Messagebox FILENAME,, "File already exists and has content" 
    Exit Sub 
End If 

'Output headers 
Call stream.WriteText(|"Database Name","Total Documents","Count of All Documents"|, EOL_CRLF) 


'Main Loop 
While Not (db Is Nothing) 

    Print "Working on: " & db.Title 

    docCount = 0 
    strRow = "" 

    'Get number of documents in database (easy) 
    numDocs = db.AllDocuments.Count 

    'Get number of documents in view (annoyingly difficult) 
    Set viewAllDocs = db.GetView("($All)") 
    If Not (viewAllDocs Is Nothing) Then 
     Set vecAllDocs = viewAllDocs.AllEntries 
     Set ve = vecAllDocs.GetFirstEntry 
     While Not (ve Is Nothing) 
      If ve.IsDocument Then docCount = docCount + 1   
      Set ve = vecAllDocs.GetNextEntry(ve) 
     Wend 
    Else 
     docCount = 0 
    End If 

    'Output values to our comma delimited list 
    strRow = |"| & db.Title & |","| & numDocs & |","| & docCount & |"| 
    Call stream.WriteText(strRow, EOL_CRLF) 

    'Get next database that can be opened 
    Set db = dbDirectory.GetNextDatabase 
    If Not (db Is Nothing) Then flag = db.Open("", "") 
    While flag = False 
     Set db = dbDirectory.GetNextDatabase 
     If Not (db Is Nothing) Then flag = db.Open("", "")  
    Wend 

Wend 

'Close file 
Call stream.Close 

Exit Sub 

ProcessNotOpenError: 

Resume Next 

ProcessError: 

Messagebox "Error " & Err() & ": " & Error() 
If Not stream Is Nothing Then 
    stream.Close 
End If 

Exit Sub 

End Sub 

Affichera un fichier CSV avec le nom de base de données et les comptes que vous recherchez, à condition que vous exécutez cela avec un compte qui a accès à toutes les bases de données sur votre serveur.

0

Je créerais ma propre base de données "MyStats.nsf" sur le serveur. Cette base de données contiendra un agent LotusScript "UpdateAll" déclenché toutes les n heures.

L'agent obtient essentiellement une liste de chemins de base de données. Pour chaque chemin, ouvrez la base de données. NotesDatabase.AllDocuments.Count vous donne le nombre total de documents. Ouvrez la vue "($ All)" et renvoyez NotesView.AllEntries.Count le nr. de docs. pour "Tous les documents". Prenez cette information et créez un nouveau NotesDocument pour enregistrer le nom de la base de données et les informations de numéro récupérées. Enfin, créez une vue dans MyStat pour afficher le résultat.