1

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

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

Function MyFilter(doc As NotesDocument) as boolean

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

End Function

这是我想在里面加入莲花函数的视图选择公式

SELECT (Form = "Form1")

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

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

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

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

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

4

2 回答 2

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

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

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

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

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

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

希望这可以帮助!

于 2010-06-23T13:33:56.590 回答
1

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

SELECT (Form = "Form1" & MyFilterField="Y") 
于 2010-06-23T14:29:37.193 回答