如何在Lotus Formula中使用带@Implode的@Contains

时间:2014-10-10 06:36:30

标签: lotus-notes lotus-formula

我有一个名为Pathname的文档项,它是包含数据库路径的文本列表。我需要创建一个只包含特定文档的视图,其中包含Pathname项中的特定数据库路径。 我尝试过这些陈述,但没有一个有效:

1 @isMember( “Databasepath”,路径名)

2 @Contains(@Implode(路径名); “Databasepath”)

感谢您的任何建议。

2 个答案:

答案 0 :(得分:2)

不需要" implode"在你的代码中。

如果Pathname如下所示:

apps\database1.nsf; apps\database2.nsf; mail\mailfile1.nsf;

并且您希望过滤所有"应用"路径,然后公式将如下所示:

@Contains( PathName; "apps\\" )

不要忘记复制反斜杠,如果你"硬编码"他们,因为他们是逃脱角色。

但现在考虑包含以下内容的路径名:

localapps\db1.nsf; apps\db2.nsf; local\apps\db3.nsf

然后上面的公式将选择所有条目。在这种情况下,这个公式会更好:

@Contains( "#" + PathName; "#apps\\" )

或(如果给定的路径始终在开头):

@Begins( PathName; "apps\\" )

答案 1 :(得分:1)

如果它真的是一个文本列表(即" Path1 \ Db1.nsf":" Path2 \ Db2.nsf":" Path3 \ Db3。 nsf"),那么你应该只能使用equals运算符,因为如果标量与任何列表值匹配,标量与列表值的比较将返回true。公式语言语义的这个细节实际上使@Contains的许多用法变得不必要了!

即,它应该像

一样简单
SELECT Pathname = "Path1\\Db1.nsf";

或者如果Pathname尚未进行大小写,那么

SELECT @uppercase(Pathname) = "PATH1\\DB1.NSF";