notesViewEntry.ColumnValues属性有这样一个特性:当某一列的列公式是一个常量时,他的列值是不会包含在ColumnValues数组里面的。所以如果想要让他能包含在ColumnValues数组里面,就需要在公式中和某个域扯上关系,如:@If(@Text(fldCbsj)="";114;114) 就可以了。

遇到不知原因的错误信息,可以到下面的地址来找找,没准就有你想要的东西。 

http://codestore.net/errors.nsf/

下面是一条样例:

Full Error Message:

Lotus Notes Exception – Special Database Object cannot be located

Synopsis:

Usually when opening documents in the web.

Suggested Causes and Solutions:

Usually due to the database not having a defualt form and you try to open a document without a correct form in the "Form" field or no "Form" field at all. Can also be caused by URLs ending in "$help" and there being no "Using this database" document created or if the "on web launch" property is set to open the "About Database" page and this has not been created yet or you use "$DefaultView" in a URL and a default view has not been specified

无意中看到Names库中的一个用来查找服务器的视图,他把简名、带层次名、带组织结构的全名作为列表放在第一列,再将多值分开显示,这样用这三种名称中的任意一种就都可以查找到服务器。如下图:

viewforlookup.jpg

这是一个不错的思路。可能存在的一个问题是会使视图变大,但是他往往能让我们绕过代理繁琐的处理,简化处理的逻辑,一般情况也不会有更低的效率,甚至有更高的效率。在实际开发中也有了几处应用:

一是在检查日程安排时,比如开始日期是11日,结束日期是13日,就可以将这个范围分开显示成11、12、13三行,好像在这三天分别建了一条文档一样,这样就可以把跨天和不跨天的统一起来了。

二是在构建地址树时,将用户所属部门的祖先部门也做为一个值,这样就好像其祖先部门下也有这样一个用户一样,达到了包含非直属部门人员的效果。

在Domino6的时候,如果发现一个代理执行缓慢,想要定位影响速度的语句,往往是采用分段Msgbox来不断缩小范围,直到找到问题所在这种方法的。Domino7加入了代理简要表的功能,让我们可以非常方便的定位代理执行缓慢的问题所在。具体方法请往下看。

继续阅读

我们在检索的时候,一般都是检索某个域值是XX的文档。使用"NOT [fieldname] is present"可以检索fieldname为空的文档,这是一个未公开的检索功能。

先看看下面的一点代码:

问题是三次msgbox打出来的都应该是什么?我们先来分析以下这段代码,答案在最后揭晓。

继续阅读

使用byKey查找视图有GetDocumentByKey、GetAllDocumentsByKey、GetEntryByKey、GetAllEntriesByKey四种方法。前面两个方法获得的是符合条件的文档/文档集,后面两个方法获得的则是符合条件的视图的一行/多行。

这四个方法使用方法基本一致,第一个参数是查找的key(多个key使用数组);第二个参数是是否精确匹配,这个参数我们一般都用true,除非在你想在检索“三”的时候,将“三毛”也一起检索出来。这就是第一个要注意的地方:精确匹配。

第二个要注意的是,使用GetAllDocumentsByKey方法获得的文档集并不是按照视图排序的,想要获得和视图顺序一样的文档集,应该使用GetAllEntriesByKey,然后再用NotesViewEntry的document属性。

前些天在项目中发现Domino的一个问题:名为“张 三”和“张_三”的两个用户在读者域中是混淆的,就是说“张 三”能看到读者域为“张_三”的文档,反过来也是。后悔不该让客户注册这种用户名的同时,客户还有另外一个要求,就是将带空格的用户重命名,并且要平滑的过渡,原来该谁看的文档还是给谁看,该谁处理的还是要谁处理。

还好Domino提供的重命名用户功能比较好用,试了一下ACL/读者域/作者域/姓名域都能处理,算是不错了。不过有个问题,系统中有些存储姓名的域并不是姓名域而是普通文本域,这样的情况就没办法了。

所以以后在写东西的时候要注意了:是姓名的地方就用姓名域、是数字的地方就用数字域,也省去了明明是数值却不能比较大小的尴尬。还有就是服务器名带下划线时SSO好像会失败,所以对于用户名、服务器名等,我们还是不要使用奇怪的字符,省得出了问题后悔莫及。