2017-05-26 69 views
1

我正在尝试使用基于特定列的莲花脚本来查找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 
+0

每个文档是否只出现在一个类别中?我的猜测是,事实并非如此。 –

+0

你想知道什么?视图中选择了多少个文档或视图中有多少文档创建了特定的日期?您是否无法根据创建的日期创建可以遍历的替代视图? – Newbs

+0

@RichardSchwartz我对迟到的反馈表示歉意,但昨天这里是苏格兰的公众假期。每个创建的文档都不是唯一的。谢谢 – AJF

回答

0

下面的代码,会得到“所有98个大类在视图中创建的总文件”:

Dim db As NotesDatabase 
Dim view As NotesView 
Dim s As NotesSession 
Dim NotesDocColl As NotesDocumentCollection 

Set s = New NotesSession 
Set db = s.CurrentDatabase 

Set view = db.GetView("By Category") 
Set NotesDocColl = db.Search(view.Selectionformula, Nothing, 0) 
MessageBox "Number of documents = " & NotesDocColl.Count 

要获取文档的数量为每个类别,我向计算为1的视图添加一列,并且在选择“隐藏详细信息行”的情况下进行总计(设计器中排序选项卡的底部)。大多数时候这是视图中的第一列。

为了获得它,我使用NotesViewNavigator并遍历顶级类别。

+0

我在上面给你添加了一条评论 – AJF

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类的所有属性。您可能会发现一些其他有用的东西。兄弟姐妹