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.