按列列出的文档数量

时间:2017-05-26 14:47:55

标签: lotus-domino lotusscript

我试图使用基于某个列的lotus脚本来查找Domino数据库中的条目数。我在下面创建了以下脚本,该脚本运行正常,但消息框总数比脚本结束时显示的对话中的总数少几百。我假设一个包含所有父类别等。如何根据"创建日期"计算视图中的记录数量?列?

我在视图中包含了我想要的总列的图像。

enter image description here

Sub Initialize
   Dim db As NotesDatabase
   Dim view As NotesView
   Dim s As NotesSession
   Dim NotesDocColl As NotesDocumentCollection
   Dim requestDoc As NotesDocument
   Dim lngDocCount As Long

   Set s = New NotesSession
   Set db = s.CurrentDatabase
   Set view = db.GetView("By Category")
   Set requestDoc = view.Getfirstdocument()
   lngDocCount = 0
   Do Until requestDoc Is Nothing
       lngDocCount = lngDocCount + 1
       Set requestDoc = view.GetNextDocument(requestDoc)
   Loop
   MessageBox "Number of documents = " & lngDocCount
End Sub

2 个答案:

答案 0 :(得分:2)

你想要的是一个NotesViewNavigator对象。这个功能强大的工具允许您利用视图所做的工作来生成总计,计数,计算列值等,而无需实例化每个文档对象。对于您的示例,请尝试以下代码段:

Sub Initialize
    Dim session As New NotesSession
    Dim db As NotesDatabase
    Dim view As NotesView
    Dim nv As NotesViewNavigator
    Dim e As NotesViewEntry
    Dim dc As NotesDocumentCollection   
    Set db = session.Currentdatabase
    Set view = db.getview("Categories")
    Set nv = view.Createviewnav()
    Set e = nv.Getfirst()

    Dim categcount, totalcount
    While Not e Is Nothing
        If e.Indentlevel=3 Then
             categcount = e.Childcount '<-do something with this value
             totalcount = totalcount+categcount
        End If  
        Set e = nv.Getnext(e)
    Wend
End Sub

查看NoteviewEntry类的所有属性。你可能会发现一些其他有用的东西,比如.Siblings

答案 1 :(得分:0)

以下代码将为您提供在视图中为所有98个类别创建的&#34;总文档&#34;:

add_of_arr

为了获得每个类别的文档数量,我在视图中添加一个计算为1的列,并使用&#34;隐藏详细信息行&#34;总计(设计器中排序选项卡的底部)。选择。大多数情况下,它是视图中的第一列。

为了以编程方式获取它,我使用NotesViewNavigator并遍历顶级类别。