我写的我的lotusscript-agent有问题。
基本上我只是做这样的事情:
Dim s As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim coll As NotesDocumentCollection
Dim doc As NotesDocument
Dim key As String
key = "keyvalue"
Set db = s.Currentdatabase
Set view = db.GetView("MyView")
Set coll = view.Getalldocumentsbykey(key,True)
...
这很简单,但不知何故coll只返回1个文档。 当我查看MyView时,我看到2个文档具有相同的密钥。我的代理程序设置为定位数据库中的所有文档,并在“操作”菜单中触发。
我可能只是非常愚蠢,我想解决方案非常简单。 请帮忙:(
答案 0 :(得分:0)
确保对视图的第一列(您的key
适用的位置)进行排序。排序方向是任意的。如果查找视图的第一列未排序,则搜索将无法正常工作。
<强>更新强>
如果您的视图包含更多会影响搜索的列,则只需使用一个代表搜索键值的已排序列创建其他隐藏视图。并使用这个隐藏的视图。
使用可见视图通过脚本进行搜索不是一个好主意,因为最终用户可能会要求开发人员重新排列列或添加/删除列以适应更新的业务需求。如果您的代码依赖于可见视图,那么它将停止工作。
要避免此问题,请使用隐藏视图从脚本中进行搜索。要隐藏视图,请将其名称括在括号中。例如,要隐藏视图SomeView
,请将其重命名为(SomeView)
答案 1 :(得分:0)
“GetAllDocumentsByKey”中的键可以是一个数组,并包含视图中所有已排序/分类列的值。如果视图中有另一个类别并且您省略了该键,则GetAllDocumentsByKey将仅获取FIRST子类别的文档。如果您需要忽略第二列,则将其排序,而不是分类。
这就是为什么Lookups总是创建一个隐藏的单独视图的原因。可以设计一个可以满足查找需求而不会篡改用户想要查看的内容