lotus常用语法汇总
### Lotus Notes Formula Language知识点详解 #### 一、@If 的用法 在Lotus Notes Formula Language中,`@If` 是一个非常强大的条件语句,它允许开发者根据不同的条件执行不同的命令。`@If`的基本格式是:`@If(条件表达式;真表达式;假表达式)`。 **示例1:** ``` @If(@IsDocBeingEdited;"";@Command([EditDocument])); ``` 这段代码用于检查当前文档是否正在被编辑。如果是,则不做任何操作(即执行空字符串 `""`)。如果不是,则执行`@Command([EditDocument])`命令来打开文档进行编辑。 **示例2:** ``` @If(@IsDocBeingEdited;@True;@Command([EditDocument];1)); ``` 这个例子与上一个类似,但是当文档不在编辑状态时,它不仅会打开文档进行编辑,还会将文档锁定以防止其他用户同时编辑。这里`1`参数代表锁定文档。 **示例3:** ``` @If(@DocLock([Lock]);"";@Command([EditDocument])); ``` 此代码检查文档是否已被锁定。如果文档未锁定,则允许用户进行编辑。这里的`@DocLock([Lock])`用于检查文档是否处于锁定状态。 **示例4:** ``` @If(@Prompt([YesNo];"提示";"确认")=1;"";@Return("")); ``` 这段代码通过弹出一个“确认”对话框来询问用户是否继续某个操作。如果用户选择“是”,则不做任何操作。如果用户选择“否”,则终止当前操作。 **示例5:** ``` @If(((h>8&h<12)|(h>=14&h<17)|(h=8&m>=30&m<=60)|(h=17&m>=0&m<=30));@Do(@Prompt([Ok];"提示";"时间(8:30--12:00 14:00--17:30)外不允许编辑"));@Return("")); ``` 此示例检查当前时间是否在指定的时间范围内。如果是,则允许编辑文档。否则,显示一条警告消息并阻止编辑操作。 **示例6:** ``` temp:=@Integer(@AttachmentLengths/(1024*1024)); @If(@Sum(temp)>30;@Do(@Prompt([Ok];"提示";"附件总大小超过30M"));@Return("")); ``` 这段代码计算所有附件的总大小,并将其转换为兆字节(MB)。如果总大小超过30MB,则显示一条警告信息并停止后续操作。 **示例7:** ``` @If(@IsNewDoc;"新建文档";"编辑文档") ``` 这段代码用于判断当前文档是否为新文档。如果是新文档,则显示“新建文档”。如果不是,则显示“编辑文档”。 **示例8:** ``` @If(yallreaders="";@Do(@Prompt([Ok];"提示";"未指定阅读者");@Return(""));@Success); ``` 这段代码检查变量`yallreaders`是否为空。如果是,则显示一条提示信息,告知用户未指定阅读者,并停止后续操作。 #### 二、@Prompt 的用法 `@Prompt`用于显示对话框以获取用户的输入或反馈。基本格式是:`@Prompt([按钮类型];标题;信息)`。 **示例9:** ``` @Prompt([Ok];"计算结果";"3+4*5的值为:"@Text(3+4*5)); ``` 这段代码显示一个包含计算结果“3+4*5”的对话框。注意,这里使用了`@Text`函数将数值转换为文本形式。 #### 三、@PostedCommand 和 @Command 的用法 `@PostedCommand`和`@Command`都用于执行Lotus Notes中的各种命令。 **示例10:** ``` @PostedCommand([FileSave]); ``` 这条命令用于保存当前文档。`@PostedCommand`与`@Command`的区别在于它不会立即执行命令,而是将其添加到命令队列中。 **示例11:** ``` @Command([FileCloseWindow]) ``` 这条命令用于关闭当前窗口。 **示例12:** ``` @Command([EditDocument];"1") ``` 这条命令用于编辑文档,并且锁定文档以防止其他用户同时编辑。 **示例13:** ``` @Command([NavigatePrev]) ``` 这条命令用于导航至前一个文档。 **示例14:** ``` @Command([NavigateNext]) ``` 这条命令用于导航至下一个文档。 **示例15:** ``` @Command([Compose];@MialDbName:"Memo") ``` 这条命令用于创建一个新的备忘录文档。 **示例16:** ``` @Command([ViewRefreshFields]) ``` 这条命令用于刷新视图中的字段数据。 **示例17:** ``` @Command([MailAddress];"yauditor1") ``` 这条命令用于显示指定收件人的电子邮件地址。 **示例18:** ``` @Command([Compose];"";"MainTopic") ``` 这条命令用于创建一个新的邮件,并设置其主题。 **示例19:** ``` @Command([Compose];"SALES//nyoffice":"Westchester\\REPS.NSF";"ClientInformation") ``` 这条命令用于创建一个指向特定数据库的新邮件,并设置邮件的主题。 **示例20:** ``` @Command([FileOpenDatabase];@Subset(@DbName;1):"NEWOA\\officefixing.nsf") ``` 这条命令用于打开指定的数据库。 #### 四、@Text 的用法 `@Text`用于将数字或其他类型的值转换为文本格式。 **示例21:** ``` salse:=800; @Text(salse;"C,2") ``` 这段代码将数值800转换为货币格式的文本,即“$800.00”。 **示例22:** ``` @Text(@Now;"D1S1") ``` 这条命令将当前日期和时间转换为文本格式,显示为“04/93 10:43 AM”。 #### 五、@Unique 的用法 `@Unique`用于返回一组值中的唯一项。 **示例23:** ``` @Unique("red":"green":"blue":"green":"red") ``` 这段代码返回一个字符串列表,其中只包含唯一的颜色名称:“red”、“green”和“blue”。 #### 六、@DbLookup 的用法 `@DbLookup`用于从另一个数据库中检索数据。 **示例24:** ``` @DbLookup("":"NoCache";yservername:"newoa\\db_renyuan.nsf";"v_renyuan";"20";11) ``` 这条命令从名为`db_renyuan.nsf`的数据库中查找名为`v_renyuan`的视图中的数据。`20`表示返回第20行的数据,`11`表示返回该行第11列的数据。 **示例25:** ``` @DbLookup("":"NoCache";yservername:"bbk\\groups.nsf";"Groups";"#"+ydep;3) ``` 这条命令用于从名为`groups.nsf`的数据库中查找与部门相关的组信息。`#`加上变量`ydep`用于构建查询字符串,`3`表示返回该行第3列的数据。 **示例26:** ``` @DbLookup("":"NoCache";@DbName;"v_renyuan";"4";3) ``` 这条命令用于从当前数据库中查找名为`v_renyuan`的视图中的数据。`4`表示返回第4行的数据,`3`表示返回该行第3列的数据。 **示例27:** ``` @DbLookup("":"NoCache";@Subset(@Name([CN];@DbName);1):"names.nsf";@DbColumn("":"NoCache";@Subset(@Name([CN];@DbName);1):ymaindatabase;"v_systemvar";5);@Name([CN];@UserName);4) ``` 这条命令用于从名为`names.nsf`的数据库中查找与当前用户名相关的数据。`@DbColumn`用于获取当前数据库中名为`v_systemvar`的视图中的第5列的数据。`ymaindatabase`是一个变量,其值为`@LeftBack(@Subset(@Name([CN];@DbName);-1);"\\")+"\\\\"+"OAMAIN.NSF"`。
- Taddei2013-09-12很有用的文档,不过现在研究domino是不是有点落伍?
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助