使用Lotus Notes公式计算视图中的文档数

时间:2012-08-06 13:16:15

标签: lotus-notes lotus-formula

我在工具栏中有一个按钮,可以将选定的文档邮寄到邮箱。问题是我不知道如何为每个选定的文档运行按钮公式代码。无论选择了多少文档,它现在只会运行一次。这并不理想,因为用户通常会有许多文件要邮寄。

创建代理是不可能的,因为我无权访问数据库本身的开发访问权限。人们还告诉我代码将针对每个选定的文档运行,但我已对此进行了测试,而且它不是来自工具栏按钮。

提前致谢:)

3 个答案:

答案 0 :(得分:1)

有可能获取所选文档并在不必修改数据库的情况下处理每个文档,但这很棘手,我需要一些时间来弄明白。

工具栏中的代码必须执行 @Command([Compose];“”:“yourActionDb.nsf”;“StartAction”)

数据库“yourActionDb.nsf”(在本例中为local)必须有一个表单(在这里称为StartAction),这里有诀窍: 在Form的“QueryOpen”中,上下文仍然是视图......所以你可以使用如下代码:

Dim ws as New NotesUIWorkspace
Dim uiviw as NotesUIView
Dim dc as NotesDocumentCollection
Set uiviw = ws.CurrentView
If not uiviw is Nothing then
  set dc = uiviw.Documents
  ...your code comes here
End if

不幸的是,这种技巧在公式语言中是不可能的,因为只有代理才有可能对选定的文档采取行动,并且每个被调用的代理都会有错误的背景......

之后您必须关闭此表单(尝试在queryopen中设置continue = False或稍后执行uidoc.Close),但在这里您必须找到最适合您需求的内容。

答案 1 :(得分:0)

我担心您的测试是正确的 - 您无法在选定的文档上运行工具栏宏。你需要一个代理人。

答案 2 :(得分:0)

我相信如果您创建一个公式代理(与工具栏按钮相同的公式内容)并将目标设置为“选定文档”,则在工具栏按钮中添加:

@command([toolsrunmacro];“代理商名称或Alias here”);

  • 它将针对每个选定的文档运行公式代理。将代理目标设置为Selected Dcouments。