LOTUS学习技巧 一

简介:
1、 notes同关系型数据库比较 
关系型数据库 lotus notes 
基于事务处理模型 基于文档型 
使用结构化数据 使用半结构数据元素(丰富文本,图片,等) 
提供实时访问数据 使用复制来增加或减少文档(按修改) 
使用特别的queiries定位数据 使用视图定位数据 
集中在一个企业内部 在企业与企业间 
使用sql来访问 使用全文检索来访问 

2、什么应用不适合notes 
1.实时的数据处理 
2.大于4g的数据库(r5增加到64g) 
3.基于query和基于报表 
4.复杂计算 

3、同义名有什么用? 
在表单,视图,关键字中可以用同义名,主要用途是当你想在程序中用英文,而在取名或显示给用户用中文时,你可以用同义气名,用"|"来分隔,注意:可以使用多个同义名,notes会存取最右边的一个。|| 

4、 如何做一个动态的windows title? 
在表单中的windows title的事件中写入一个公式,如想按用户的名字变,写上@username就ok了!要想按域变,写上域名就ok. 

5、怎样激活域帮助 
在域属性的选项属性中的帮助描述写入帮助信息,就可以。当光标在该域时,状态栏会自动出现帮助描述,注意如果没有看到,在操作栏上请选 查看---域帮助 

6、怎样做到关键字能自动增、减? 
在关键字属性中,选用公式,然后输入公式,公式用@dbcolumn函数返回视图中的值,这时就能做到关键字能自动增、减,不过有没有用的关键字。 

7、各种域类型区别介绍? 
域类型 何时变化 
计算型 当文档创建,存盘,刷新时计算,并保存在文档中 
显示时计算 当文档打开编辑,读或刷新时计算,不保存在文档中 
创建时计算 当文档被创建时,仅此计算一次,并保存在文档中。 

8、主文档、答复文档、答复的答复文档介绍 


类别 描述 
文档 用来创建主文档,不依附其他的文档 
答复 用来答复主文档,依靠主文档,在层次视图里有同主文档有缩进关系 
答复的答复 
可以用来答复主文档,也可以答复答复的答复文档,同它的父文档有缩进关系。 
注意:答复文档无论选定的是主文档,还是答复文档,还是答复的答复文档,都是针对主文档答复的. 

9、 如果让用户必须填一些域,否则不准保存? 
@假设该域为name;在该name域的input validati input your name");@success) 

10、怎样将一个数据库做成模板? 
有多种方法,这里介绍一种,在工作台选中一个要做模板的数据库,然后选择文件---数据库---新建拷贝,在弹出的对话框中将.nsf改为.ntf就ok了。 

11、怎样做到当光标从一个域移到另一个域,表单自动刷新? 
在该域所在的表单中选择表单属性中的缺省选项中"自动刷新域。 

12、怎样让用户保存文档时,域中的数值自动转化你想要的标准格式? 
假设该域为name;想把它转化为大写,在该name域的input translati 

13、怎样在表单中控制某一个域让谁编辑? 
你可以把该域放到存取控制区段里,指定该区段的编辑者就只有该编辑者才能修改改域了。 

14、怎样控制区域布局中域,当使用tab时,光标的移动顺序? 
假设在区域布局中有a,b,c三个域,我想要它们光标移动的顺序为a,c,b.可以这样做,选中a域,选设计----置前,选中c域,选设计----置前,选中b域,选设计----置前.(web应用程序不支持布局区域)。 

15、在视图中怎样做出主文档,答复文档,答复的答复层层缩进的效果? 
在视图属性中选"缩进一个层次显示答复文档"只代表文档有答复折叠的层次,但不能在视图中显示出来,为了做到层层缩进,我们必须另外开发,在视图中的前面做一列,选定列属性"仅显示答复文档",然后在该列的公式中写上如果是答复文档的话,该列显示什么,如果是答复的答复文档显示什么,就可以了然后调整各列的宽度就可以看到有缩进的效果。 "" 

16、acl中的安全介绍 
访问级别 功能 
管理者 能修改acl和复制设置,在本地加密一个数据库,删除一个数据库,能执行比它低级别的任何任务。 
设计者 能修改所有的设计元素,创建全文索引,能执行比它低级别的任何任务。 
编辑者 能创建文档和编辑文档 
作者 能创建和编辑在作者域中有她名字的文档 
读者 能读文档,但不能创建和编辑文档 
存放者 能创建新文档,但不能读到任何文档,即使是他自己创建的 
不能存取者 不能访问数据库 

17、 公式学习: 

变量 

变量有两种类型:域,临时变量,你可以在公式中使用域名作为变量如:firstname 

临时变量只能存在于公式中。它的作用范围就是它所在的公式,除了在公式中赋予给它的属性以外没有其他属性。创建一个临时变量的语法是:variablename := value 


常量 
常量类型 描述 
文本型 用""标记的字符集,如:"joe.",注意:为了在文本串中用引号,用转义符"",如:"" 
数字型 数字0-9,能用(+和-),科学记数法和常量e 

时间型 任何时间型的常量用([]),如:[98-2-31] 

公式关键字 
关键字语法 
field fieldname:=value :赋一个值给当前notes文档中的域,如果域不存在则创建一个,存在则覆盖该值。 
field companyname:=company+"。inc" 

rem ["remarks"]: 注释 
rem "12/15/95" 

select logicalvalue: 在视图,代理或复制公式中用来定义一个文档集 
select form="idea" 

字符串处理函数介绍? 

@propercase(string) 
将字符串中的单词转换成字首大写的形式:每个单词的头一个字母大写,后面的其他字母小写。以下的样例将返回 every child loves toys. @propercase("every child loves toys") 

@trim(strin) 
从文本字符串中(或文本列表的每一个元素中)删除位于开头和结尾的空格,同时还删除多余的空格。以下的样例将返回 robert smith。@trim(@uppercase("robert smith")) 

@length(string) 
返回文本字符串中字符的个数.该样例返回 45。@length("the boy crossed the wide, but gentle, stream.") 

@newline 
在文本字符串中插入一个新行(回车)。下面公式返回 hi there "hi"+@newline+"there" 

@matches(string;pattern) 
用一个样本字符串去匹配一个字符串。因为样本字符串可以包含一定数量的通配符和逻辑符号,所以可以用较复杂的模式去匹配字符串。该样例返回 0。 @matches("a big test";"a?test") 

@left 
从左到右搜索字符串,并返回字符串中最左边的几个字符。 该样例返回"len"。 @left("lennard wallace";3) 



逻辑操作 

@if 
@if(c 

如果满足条件1,则做action1,如果满足条件2,则做action2,否则做else-action. 
注意: 1.该函数必须有奇数个参数。 
2.总共可以加99个条件 
3.可以嵌套 

日期操作 

@created 
返回创建此文档时的时间-日期值。 

@adjust(time-date; year;m m ;sec 
按照指定的年、月、日、小时、分钟、秒来调整指定的时间-日期值。调整的值可正可负。 
以下的样例将返回 09/2/97。 @adjust([06/30/95];2;2;2;0;0;0) 

@today 
返回当天的日期。 

@m 
从指定的时间-日期中提取月份值 
该样例返回 1。 @m 

@weekday(time-date) 
算出一周中的某一天,返回一个表示这一天的数字。 
下面样例返回 5(实际是星期六)。 weekday([9/29/88]) 

@tomorrow 
返回明天日期的时间-日期值。 

算术操作 

@max(number;number) 
给出两个数字,返回较大的那个数字。 
下面样例返回 99;6;7;8 @max(99:2:3;5:6:7:8) 

@max(number;number) 
给定两个数字,返回较小的那一个。 
以下的样例将返回 5;2;3;3 @min(99:2:3;5:6:7:8) 

@round(number) 
将指定的数字归整,结果为最接近它的一个数 
该样例返回 1 @round(1.499) 

@round(number;factor) 
如果还指定了另外一个数字,就用它作为规整因子 
如果称做 numberofemployees 的域值是12338,则该样例返回12340 
@round(numberofemployees;10) 

@sum(num;num;) 
在一组数字或数字列表中进行加法运算。 
以下的样例将返回 3 
@sum( 1 : 2 ) 



列表操作 

@elements(list) 
计算列表中文本、数字、时间-日期的个数。该函数总是返回数字以指明在列表中项目的个数。如果 salesforce 域中的列表是 "rogers" : "binney" : "harris" : "lars 4。" @elements(salesforce) 

@max(list;list) 
给出两个数字列表,返回较大的那个数字列表。 

@member(value; stringlist) 
给定一个值,在文本列表中找到该值的位置。 
下面样例返回 0。 @member("sales"; "finance":"service":"legal")" 

@subset(list;number) 
从左到右搜索一个列,并返回您所指定数量的值。如果您指定了一个负数,@subset 将从右到左搜索,但结果却是按从头到尾的次序排列。 
以下的样例将返回 new orleans;l @subset("new orleans":"l 2) 


数据转换 
@text(value) 
将任意值转换成文本字符串。 如:@text(retailprice) 
@texttonumber(string) 
在可能的情况下,将文本字符串转换成数字。如 @texttonumber("32.95") 

特殊函数 

@username 
返回当前的用户名或服务器名。 

如果用户名是层次结构名, @username 将以规范格式返回(其中包含 cn、ou、o 和 c 标识符)。 如果如果要返回缩写格式的名字(忽略标识符),请使用 @v3username。 


@name([acti 
用来裁剪层次结构名。可以用它将标准格式的名称进行缩写,将缩写名称扩展为它的标准格式,在名称中找到某一个部分,掉转部件的顺序以便用层次名称为一个视图分类。 如:@name([cn];author) 

@allchildren 
包含父文档的所有满足选择标准的"答复"文档。 

@alldescendants 
包含所有满足选择标准的父文档的答复文档以及答复的答复文档。 

@isresp 
判断某个文档是否为答复文档。 

@isnewdoc 
对于一个正在编辑的文档,指出该文档是否已经存盘 

@istext(value) 
判断某个值是否为文本(或文本列表)。 

@isnumber(value) 
判断某个值是否为一个数字(或数字列表)。 

@failure(string) 
返回您给出的消息;当用于输入确认校验时,若输入的数值不符合校验条件,@failure 将显示您给出的消息。 
如:这个样例给出了输入校验公式。如果用户在"areacode"域中输入了大于 999 的数字,则返回一条错误信息"area codes have 3 digits"。 @if(areacode<999;@success;@failure(area codes have 3 digits") 

@success 
返回 1(真)。在输入检查公式中将该函数与 @if 一起使用可以判断输入的值是否满足检查条件。如:当"price"域中的值小于100 时,以下的样例将返回 1 并允许文档保存。在输入检查公式中表示输入的数据正确。 @if(price<100;@success;@failure(price too large") 


作者域、读者域介绍 

作者域是一个域类型为作者类型的域,它是用来控制文档的作者的。作者域不能控制到acl编辑者以上的权限,拥有编辑者或编辑者以上权限的,不管该文档中的作者域是否有它。作者域只能控制作者或作者以下的权限。你只须将名字,角色,群组放到作者域的公式中就可以了。 

读者域是一个域类型为读者类型的域,它是用来控制文档的读者的。读者域能控制到acl的任何权限,即使它是管理者。也就是说,只要读者域里没有他,即使他是管理者也不能看到该文档。编程方法同作者域。 


怎样定义一个域的宽度? 
在普通表单中,没有办法控制域的宽度(在notes上);但在区域布局中你可以随意拖动域的宽度。所以你要控制域宽度,你可以把它放到区域布局中。 


怎样激活表单继承属性 
在form1表单的属性中的缺省选项中选择继承整个文档到rtf域,并选择继承到哪个域。然后回到视图中选定用form2创建的文档创建文档(用form1表单)。你就可以看到用form1表单创建的文档中的rtf域中继承了form2创建的文档创建文档,它可以文档链接,也可以是整个文档,这个选择表单属性就可以了。 


常用保留域介绍 
notes 提供了预定义的域,可以使用它们来自动添加一些只有自己编程才能实现的功能。这些域名在 notes 中是保留的。如果想使用不同的保留域名称或者重新定义该域,notes 将显示错误消息。也就是说你在表单中放置同名的域,表单会自动完成一些功能,如:我加一个叫mailopti 

邮递文档的保留域 

保留域名称用途 

mailopti 
由用户决定是否邮递文档 

saveopti 
控制文档在邮递时是否保存 

sign 
创建者签名文档防止损害 

encrypt 
加密邮件sendto将邮件发送给本域列出的用户 

copyto 
将邮件的拷贝发送给本域列出的用户 

blindcopyto 
将邮件的隐藏拷贝发送给本域列出的用户 

deliverypriority 
分别以"高"、"中"、"低"的优先级邮递邮件 

deliveryreport 
当邮件邮递给收件人时返回一个报告 

returnreceipt 
当收件人阅读邮件时返回回执 

mailformat 
通过 cc:mailtm 邮递邮件 


通用的保留域 
保留域名称用途categories分类文档$versi encrypti 


怎样判断某一天所在周的最后一天 
@if(tdate != ""; @adjust(tdate; 0; 0; @modulo(8 - @weekday(tdate); 7); 0; 0; 0); tdate) 


怎样计算两个日期域间有几周? 

diffdays := (enddate - startdate) / 86400 + 1; 
strtday := @modulo(@weekday(startdate); 7); 
endday := @modulo(@weekday(enddate); 7); 
result := (diffdays - endday + strtday - 8) * 5 / 7 - @max(-2; -strtday) - @min(1; endday) + 5 - strtday + endday 


怎样在公式里用dos命令 

@command([execute]; "c:command.com"; "/c del c:test.txt") 


怎样截取@dblookup的错误信息 

tempvar := @dblookup(); 
@if(@iserror(tempvar); 'perform desired error resp 'perform desired 
action on tempvar') 


怎样做到当文档有答复时,用邮件通知该文档的作者 

1.在主文档,答复文档,答复的答复文档创建一个域:form,缺省值:@name([cn];@usernam 
2.在答复表单创建一个域:parentform,缺省值(用继承)form 
3.在答复的答复表单,创建一个域:"parentform"缺省值(用继承) 
parentfrom:from 
4.在答复和答复的答复表单增加一个隐藏,显示时计算的"announce"域,公式是:@if(@isdocbeingsaved;@success;@return(0)); 
list := @trim(@replace(parentfrom;from;"")); 
@if(@elements(list) > 0; @success;@return(0)); 
sendlist := @prompt([okcancellist]; "mail notify?"; "send mail notification about your reply to ";"";list); 
@if(@elements(sendlist) > 0; @success;@return(0)); 
@mailsend(sendlist; ""; ""; "ref:" + originalsubject; ""; "my reply: "; [includedoclink]) 


怎样在notes.ini里将环境变量删除 

environment envir variable := ""; 或者 @setenvir variable";""). 


在答复文档里如何修改主文档的值 
@setdocfield($ref;"field on parent doc";"value") 


怎样得到一个群组里有哪些成员 
@name([cn];@dblookup("";@subset(@maildbname;1) : "names.nsf";"groups";"yourgroupname"; 

"members")) 













本文转自群亮51CTO博客,原文链接: http://blog.51cto.com/tql/5374,如需转载请自行联系原作者




相关实践学习
基于函数计算快速搭建Hexo博客系统
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
相关文章