Lotus Notes SELECT公式使用@IsMember和@UserRoles作为视图

时间:2012-07-12 16:32:13

标签: lotus-notes lotus-formula

我有一个视图,其中我想要隐藏文档(稍后您会看到它不是导致我的问题的文档,而是分类视图)只能由某个角色访问。

我会尝试尽可能具体,所以如果不清楚,请不要犹豫,问我问题。

请注意,英语不是我的第一语言; - )

我有4种不同类型的文档,3(TypeA,TypeB和TypeC)对每个人都可见,1(TypeD)需要某个角色(例如[RoleD])。

视图按文档类型分类,每个文档都有安全字段,如果您没有正确的角色,则会阻止它们被查看。因此,当您在不是[RoleD]成员的情况下查看视图时,您会得到以下结果:

TypeA
    Doc1
    Doc2
    Doc3
TypeB
    Doc4
    Doc5
TypeC
    Doc6
    Doc7
TypeD
    {Empty}

我的问题是,即使TypeD的所有文件都被隐藏,我也希望隐藏“类别”。

我在视图选择中尝试了一些条件,仅当用户是角色[RoleD]的成员时才选择TypeD文档,但是使用@ If,@ IsMember(和@IsNotMember)和@UserRoles没有任何成功。结果很奇怪,即使我是角色的成员,类别和文档也被隐藏(?!?!?)。

这是我到目前为止所尝试的内容:

Try #1
    @If(@IsNotMember("[RoleD]";@UserRoles) ; DocTypeField != "TypeD" ; 1=1)
Try #2
    @IsNotMember("[RoleD]";@UserRoles) & DocTypeField != "TypeD"
    |
    @IsMember("[RoleD]";@UserRoles) & 1=1

我希望它不会太混乱。

感谢您提供急需的帮助。

2 个答案:

答案 0 :(得分:2)

有一个名为“不显示空类别”的视图属性。这是你的观点吗?

答案 1 :(得分:1)

Ken的回答是正确的。但是我想指出两件事。

首先,'不显示空类别'会导致用户性能降低。在有大量文档(数万个)且个人用户只能访问其中很小一部分的情况下尤其如此。

其次,您无法在视图中可靠地使用@UserRoles的原因是,对于常规视图,视图索引不是由客户端构建的。它是服务器上应用选择公式的索引器任务,因此@UserRoles将返回应用于服务器标识的角色。如果您使用由客户端编制索引的私有视图,则@UserRoles将返回您所期望的内容。除此之外还有更多细节要考虑,但经验法则是视图选择公式通常不应使用为不同用户返回不同结果的函数或不同日期/时间的不同结果。