我又要请你帮忙。我在创建公共变量并在公式中使用它时遇到问题。此问题的详细信息是:1,在启动 Lotus Notes 应用程序后,我必须创建公共变量 EmpNum,该变量将包含一个员工编号(该数字将从 IBM 蓝页导入)2,这个EmpNum变量将用于过滤视图中的数据,所以我必须在视图选择的公式中使用它。
如果您帮助解决这个问题,我将不胜感激。也许这个问题可能有什么最简单的解决方案?
提前感谢,托马斯 (td2003)
编辑:托斯滕,帕努,谢谢。我决定尝试在笔记中编写一个 EmpNum 变量.ini使用 @SetEnvironment 并通过@GetEnvironment读取它,它可以工作。但是(!)有一件非常奇怪的事情:1)当我输入公式"SELECT((form="ITForm")和(状态="已完成")和(TX_EmployeeNumber=@Environment("EmpNum")))"时,视图显示"TX_EmployeeNumber"为空的所有文档;2)否则,当我输入公式"SELECT((form="ITForm")和(Status="Complete")和(TX_EmployeeNumber!=@Environment("EmpNum")))"(不相等)时,视图向我显示"TX_EmployeeNumber"不为空的所有文档,无论TX_EmployeeNumber是否具有与EmpNum完全相同的值。例如:如果 EmpNum="P11",则带有第二个公式的视图显示TX_EmployeeNumber字段包含"P11"、"P22"、"A32"等的文档。
我确定@Environment("EmpNum")从笔记.ini中检索正确的数据。
我完全困惑,完全不知道发生了什么。你对此有什么想法吗?
首先:Lotus Notes 中没有您请求的公共变量。无论是在 LotusScript 中还是在 Formula 中。每个变量都只存在于其上下文中,而不是存在于完整的客户端中。
有两个地方可以放置这样的变量:
-
在notes.ini中,您可以使用Formula(@Environment,@SetEnvironment,@getEnvironent)或LotusScript(NotesSession.GetEnvironmentString,NotesSession.SetEnvironmentVar)设置/读取它。
-
在数据库的配置文件文档中,您可以使用@GetProfileField(公式)或 NotesDatabase.GetprofileDocument()(LotusScript) 获取它
这两个方法都对您的数字 2 没有帮助。所有用户只有一个视图 - 选择 - 公式。在其中放置一些"用户特定"的东西将允许它正确呈现一个值(服务器在构建视图索引时使用的值),但不能为所有其他值呈现。
要解决您的问题,您可以使用:
a) 嵌入式视图
- 按 empNum 分类的视图 嵌入了此视图的
- 窗体和此嵌入视图集的"显示单个类别"的公式
b) SPOFU视图
SPOFU 是"共享的,首次使用时是私有的",这意味着每个用户都有自己的视图副本。这些视图有一些警告,很难维护。如果您不完全了解其含义,则不应使用它们(正确使用ACL对于这些视图非常重要)...
编辑(由于有问题的更改):SPOFU 既不适用于环境,也不适用于配置文件文档,因为视图中不支持读取它们的方法......所以b)不是一个真正的选择...不好意思。。。
可以在视图的 QueryOpen 和/或 PostOpen 中使用 @SetViewInfo 公式,使视图仅显示一个类别中的数据。请注意这一点,因为您需要触摸每个视图,以便在用户导航到未按员工编号分类的视图时清除该值...
FWIW:我只使用@UserName而不是使用另一条数据来做到这一点。我建议您通过在导入过程中将用户的完全限定 Notes 名称添加到导入文档来执行此操作。
NotesView
类修改视图选择公式。在这种情况下,您必须使用专用视图。
更好的解决方案是使用 XPage 来显示视图并使用类别筛选器。或者,如果要使用传统样式,请将视图嵌入到表单或页面,并使用"显示单个类别"功能。