如何获取Notes count列的值
How to obtain value of Notes count column
我创建了一个视图,其中列出了具有特定承包商 ID 的合同的文档数量。一列是计数列,未分类,硬编码为“1”的公式,并设置为总计。第二列是 ContractorID 设置为字段 ContractorID 并且已分类。到目前为止这很好,但我希望输出具有相同 ContractorID 的文档。我尝试使用 "Count" 列上的计数修改视图,但没有成功。我还尝试按降序对 "Count" 列进行排序,以在顶部显示使用相同 ContractorID 的文档,但这似乎也不起作用。最后,我尝试使用代理来确定 "Count" 列的值,但这似乎只能识别“1”的值。如何让代理确定值是否不是“1”或进一步过滤视图以仅显示计数大于“1”的视图?
这是代理代码的摘录;
Dim columnCount As Integer
Set requestDoc1 = viewContractors.GetFirstDocument
Do Until requestDoc1 Is Nothing
columnCount = requestDoc1.Columnvalues(0)
strContratorID = requestDoc1.getitemvalue("ContractorID")
If columnCount <> 1 Then
..... Add strContratorID to list to output
End if
Set requestDoc1 = viewContractors.Getnextdocument(requestDoc1)
Loop
这是我希望进一步过滤或代理操作的视图的屏幕转储
您需要使用 NotesViewNavigator 和 NotesViewEntry- 对象。
NotesDocument 始终代表视图中的文档(单行),但从不代表类别本身。这就是您需要 NotesViewentries 的原因:它们还可以表示类别行。
要获取所有 "duplicate" 文件的列表,您可以这样做:
Dim viwNav As NotesViewNavigator
Dim veCat As NotesViewEntry
Set viwNav = viewContractors.Createviewnav()
Set veCat = viwNav.Getfirst()
While Not veCat Is Nothing
If veCat.Columnvalues(0) > 0 Then
strContratorID = veCat.Columnvalues(1)
'- ..... Add strContratorID to list to output
End If
Set veCat = viwNav.Getnextcategory( veCat )
Wend
不幸的是,总计 - 列不能按总值排序,也不能过滤。所以你真的需要走 "code"- 路。
1)我认为你应该改变两列的位置:
2) 这是您的代理的改编代码:
Dim session As New NotesSession
Dim db As NotesDatabase
Dim viewContractors As NotesView
Dim viewNavigator As NotesViewNavigator
Dim viewEntry As NotesViewEntry
Dim contractorID As String
Dim columnCount As Integer
Set db = session.CurrentDataBase
Set viewContractors = db.getView("Contractors")
Set viewNavigator = viewContractors.CreateViewNav()
Set viewEntry = viewNavigator.Getfirst()
While Not(viewEntry Is Nothing)
If viewEntry.Iscategory Then
contractorID = viewEntry.Columnvalues(0)
columnCount = viewEntry.Columnvalues(1)
End If
Set viewEntry = viewNavigator.Getnextcategory(viewEntry)
Wend
我创建了一个视图,其中列出了具有特定承包商 ID 的合同的文档数量。一列是计数列,未分类,硬编码为“1”的公式,并设置为总计。第二列是 ContractorID 设置为字段 ContractorID 并且已分类。到目前为止这很好,但我希望输出具有相同 ContractorID 的文档。我尝试使用 "Count" 列上的计数修改视图,但没有成功。我还尝试按降序对 "Count" 列进行排序,以在顶部显示使用相同 ContractorID 的文档,但这似乎也不起作用。最后,我尝试使用代理来确定 "Count" 列的值,但这似乎只能识别“1”的值。如何让代理确定值是否不是“1”或进一步过滤视图以仅显示计数大于“1”的视图?
这是代理代码的摘录;
Dim columnCount As Integer
Set requestDoc1 = viewContractors.GetFirstDocument
Do Until requestDoc1 Is Nothing
columnCount = requestDoc1.Columnvalues(0)
strContratorID = requestDoc1.getitemvalue("ContractorID")
If columnCount <> 1 Then
..... Add strContratorID to list to output
End if
Set requestDoc1 = viewContractors.Getnextdocument(requestDoc1)
Loop
这是我希望进一步过滤或代理操作的视图的屏幕转储
您需要使用 NotesViewNavigator 和 NotesViewEntry- 对象。
NotesDocument 始终代表视图中的文档(单行),但从不代表类别本身。这就是您需要 NotesViewentries 的原因:它们还可以表示类别行。
要获取所有 "duplicate" 文件的列表,您可以这样做:
Dim viwNav As NotesViewNavigator
Dim veCat As NotesViewEntry
Set viwNav = viewContractors.Createviewnav()
Set veCat = viwNav.Getfirst()
While Not veCat Is Nothing
If veCat.Columnvalues(0) > 0 Then
strContratorID = veCat.Columnvalues(1)
'- ..... Add strContratorID to list to output
End If
Set veCat = viwNav.Getnextcategory( veCat )
Wend
不幸的是,总计 - 列不能按总值排序,也不能过滤。所以你真的需要走 "code"- 路。
1)我认为你应该改变两列的位置:
2) 这是您的代理的改编代码:
Dim session As New NotesSession
Dim db As NotesDatabase
Dim viewContractors As NotesView
Dim viewNavigator As NotesViewNavigator
Dim viewEntry As NotesViewEntry
Dim contractorID As String
Dim columnCount As Integer
Set db = session.CurrentDataBase
Set viewContractors = db.getView("Contractors")
Set viewNavigator = viewContractors.CreateViewNav()
Set viewEntry = viewNavigator.Getfirst()
While Not(viewEntry Is Nothing)
If viewEntry.Iscategory Then
contractorID = viewEntry.Columnvalues(0)
columnCount = viewEntry.Columnvalues(1)
End If
Set viewEntry = viewNavigator.Getnextcategory(viewEntry)
Wend