如何使用LotusScript函数作为文档选择例程

时间:2010-06-23 08:38:12

标签: lotus-notes mapreduce lotus lotus-domino lotusscript

我们可以在视图选择公式中使用lotusscript函数作为文档选择例程吗?

这是我的莲花函数,它决定了选择标准

Function MyFilter(doc As NotesDocument) as boolean

'very complex filtering function '........

End Function

这里是我想要将lotus函数合并到

中的视图选择公式

SELECT (Form = "Form1")

  1. 我们可以用任何方式在选择公式中使用上面的lotusscript函数吗?

    SELECT (Form = "Form1" & MyFilter(sourceDoc))

  2. 我们可以在视图选择中避免使用公式语言,并在运行时填充视图 遍历数据库中的每个文档并根据需要将文档添加到视图中?

  3. 有没有办法编写“用户定义的公式”(公式语言)?

  4. 我们可以编写一个C API来解决这些问题吗?

2 个答案:

答案 0 :(得分:3)

  1. 不,视图选择公式不能包含LotusScript

  2. 不是视图,而是你在那里。我过去使用过文件夹做过。视图包含一组与视图选择公式匹配的文档。另一方面,文件夹可以包含由用户或代码放置在那里的文档集合。在Lotusscript世界中,您使用NotesView类以与视图相同的方式访问文件夹。然后,您可以调用文档的PutInFolder方法或documentcollection的PutAllInFolder方法来将文档添加到该文件夹​​。

  3. 没有。但是,您可以通过SelectionFormula属性以编程方式指定视图使用的公式。但是该属性需要用公式语言编写的字符串。

  4. 我对C API并不是很熟悉,但我敢打赌,你只能做与#3相同的事情 - 指定用作选择公式的公式。它无法帮助您根据LotusScript代码选择文档。

  5. 我之前在一些项目中一直走在这条路上,我找到的最佳解决方案就是我在答案#2中的建议。也就是说,您可以清除然后以编程方式填充文件夹,然后将用户带到该文件夹​​作为代码中的最后一步。使用该方法,您可以自由地使用LotusScript过滤文档并构建“查询结果”视图。

    您可以使用的另一个不太理想但功能性的方法是使用特殊值在所有文档中标记一个项目,然后过滤视图以仅显示具有等于该特殊值的项目的文档。例如,您可以在LotusScript中运行搜索,以使用db.Search方法构建documentcollection。然后使用documentcollection.StampAll方法将“SHOWME”项设置为“YES”。然后,您的视图必须设置为仅显示SHOWME =“YES”的文档。当然,作为此代码的第一步,您需要从数据库中的所有文档中删除该SHOWME项,因此每次都要从一个干净的平板开始。你拥有的文件越多,这种方法就会变得越来越慢,但如果你只有几百个文档就可以正常工作。

    希望这有帮助!

答案 1 :(得分:1)

不幸的是,您无法在视图选择公式中使用Lotuscript。但是,我们过去解决这个问题的一种方法是在表单上的QuerySave(或WebQuerySave)事件中调用复杂的公式,并将所有文档上的隐藏字段设置为“是”或“否”。然后,只需使用该隐藏字段在您的视图选择公式中:

SELECT (Form = "Form1" & MyFilterField="Y")