第三讲 Notes公式编程文档格式.docx
- 文档编号:918087
- 上传时间:2023-04-29
- 格式:DOCX
- 页数:23
- 大小:27.92KB
第三讲 Notes公式编程文档格式.docx
《第三讲 Notes公式编程文档格式.docx》由会员分享,可在线阅读,更多相关《第三讲 Notes公式编程文档格式.docx(23页珍藏版)》请在冰点文库上搜索。
+FirstName
在下面的语句中,关键字SELECT后面至少要有一个空格。
SELECT@All
大小写
除了在文本常量中,其他地方并不区分大小写。
按约定,关键字(例如FIELD)要大写,@function和@command名(例如ProperCase)可以大小写混合使用。
键入时可以不遵照本约定,Domino会在保存公式时按照约定转换大小写。
运算符和值
两个值之间应至少有一个运算符相隔
公式语言的逻辑运算符:
!
(Not)&
(And)|(Or)
3)使用变量的方法
变量有两种类型:
域、临时变量。
域变量使用时必须先用Field关键字声明,才能在之后的公式中使用
语法:
Field域名变量:
=域名声明
临时变量只能存在于公式中
变量名:
=值
4)使用常量的方法
公式中有三种类型的常量:
文本常量、数字常量、日期-时间常量。
文本常量是在引号中包含的字符,其中包括空格、数字和特殊字符。
不要在引号中输入变量名,这样会把变量名当作文本对待。
要包括连续的多个字符,例如空格,可以使用@Repeat.
数字常量由数字和特殊字符构成,中间不加空格。
时间-日期常量是由时间和(或)日期构成,放在方括号中。
样式:
[hh:
mm:
ss]。
5)使用运算符的方法
运算符用来赋值、修改值或者将现有的值合并到新值。
(省略)
6)使用函数的方法
Notes函数是在公式中使用的,公式执行特定的计算并返回一个值。
语法、返回值、附加效果、@Command、计算顺序。
i.语法函数通常的格式是:
@Function-name(argument1;
argument2;
…argumentn);
ii.返回值函数计算出一个返回值,并用该值替换自身。
@Power(2;
Exp)
iii.计算顺序Notes是从上向下、从左到右计算公式的,完成一个语句之后再进行下一个语句,但@PostedCommand和少数@Command函数必须在完成其他所有函数以后才被执行。
iv.附加效果是在公式的直接影响范围之外发生的操作。
函数
附加效果
@Command
执行Notes命令(例如打开一个数据库)
@DbColumn
@DbCommand
@DbLookup
访问另一个数据库或视图,并且提取数据
@DDEInitiate
@DDEExecute
@DDEPoke
@DDETerminate
DDE对话框被初始化(或终止),或执行一个DDE语句
@MailSend
创建一个Notes邮件便笺,并转发给另一个用户或数据库
@Prompt
@PickList
@DialogBox
显示对话框,还可能返回数据
三、使用公式的对象
在以下对象可以用公式编写:
便捷图标公式、编写操作、按钮、热点、表单公式、编写窗口标题、区段存取、插入子表单公式、编写区段标题、隐藏段落公式、数据库、视图、表单、域。
复制公式、代理、列公式、选择公式。
注释:
1.便捷图标公式(Domino备有100多个预定义的便捷图标按钮,它只与每个用户的工作台有关而与数据库无关,也不能在用户之间共享。
它保存在Desktop5.dsk
例:
以下的便捷图标公式打开”DOC”服务器上的数据库”NAMES.NSF”,并切换到”People”视图。
@Command([FileOpenDatabase];
”DOC”:
”NAMES.NSF”;
”People”)
2.复制公式(可以选择在复制过程中哪些文档写入当前数据库。
它必须以一个SELECT语句结束。
)例:
以下公式适用于邮件数据库的复本中,不复制从”ArnoldRunion”或”zhangyuan”发送的邮件文档。
Select!
(From=”ArnoldRunion”|From=”zhangyuan”).
3.编写代理(如@deletedocument)。
4.编写操作(操作是与视图或表单相关联的定制处理过程)您可以使用“公式条件为真时隐藏操作”选项,有条件地限制在菜单中的操作或操作条的按钮的使用。
当限制公式的结果为真时,操作将被隐藏起来。
5.编写按钮和热点
(1)按钮(例:
本按钮公式是导航器的一部分。
以下公式提示用户并打开用户选定的视图。
View:
@Prompt([OKCANCELLIST];
”whichviewdoyouwanttoopen?
”;
””;
”Byfirstname”:
”Bylastname”);
@Command([openview];
view))
(2)热点是一种文本或图片,单击该文本或图片便可以执行一个操作。
6.编写表单、选择和列
(1)编写表单(用于判定在不同的条件下使用哪个表单填写和显示文档)例本公式使用”OpenNew“表单创建新文档,而使用”hesoft”表单存取现有文档。
@If(@IsNewdoc;
”OpenNew”;
”hesoft”)注释:
@IsNewDoc对于一个正在编辑的文档,指出该文档是否已经存盘。
(2)选择公式选择要显示在视图中的文档。
本公式必须以select语句结束。
(例:
数据库缺省的选择公式是,Select@All)。
(3)列公式用来判定在视图的列中显示的内容,它必须返回一个文本字符串。
以下的公式指定在列中显示Subject域的内容.Subject)
7.编写窗口标题、区段存取和插入子表单:
(1)窗口标题公式针对那些使用该表单创建的文档,生成显示在标题条中的文字。
RTF文本域不能用在窗口标题公式中。
以下的公式在标题条中显示静态文本“思科达软件”。
(“思科达软件”)。
(2)编写区段存取公式指定可以编辑区段中的域的用户名称。
其他用户只能读取区段。
然而,这个设置不能超越数据库的存取控制列表的限制。
它必须返回一个姓名或姓名列表例:
以下的公式限定可以编辑存取本区段的用户是当前数据库“Person”视图中第一列中列出的用户(@DbColumn(“”;
”Person”;
1).
(3)插入子表单公式指定向表单中插入的子表单名称。
8.编写区段标题和隐藏段落公式:
(1)编写区段标题公式‘表单或RTF文本域中的可折叠区段的标题可以通过公式生成。
必须返回一个数值或文本,或者是一个允许类型的域’
(2)编写隐藏段落公式‘如果相关公式值为真,则表单中的段落或RTF文本域将被隐藏(不显示出来)’例:
如果“Department”域的值不是“Sales”,本公式隐藏段落(Department!
=”Sales”).
9.域设计公式:
(1)编写缺省值公式,它提供了域的初始值。
公式在一个文档被创建时执行,对于不可编辑的RTF文本域,则在文档保存时执行。
以下的缺省值公式使域中的缺省值为大写的用户姓氏。
如果用户名称中包含斜杠的话,
@Left函数将返回第一个斜杠左边的部分,即从层次结构名称中摘录适当的姓名部分。
@RightBack函数返回前面返回的值中最后一个空格右边的部分,即用户姓氏。
@Uppercase(@RightBack(@Left(@UserName;
”/”);
””)))。
(2)编写转换公式转换输入到域中的数据,调整域值或使该域遵从指定的格式。
当包含该域的文档被保存时,执行该公式。
以下输入转换公式使Subject域中的值规范化(首字母大写),并去除多余的空格。
(@Trim(@Propercase(Subject)))。
(3)编写输入校验公式:
按您指定的规则检查输入到域中的数据。
以下输入校验公式限制”Cost”域中的值必须小于100(@If(Cost<
100;
@Success;
@Failure(“Costmustbelessthan$100)))。
(4)编写计算域的值:
如果域的类型为“计算”、“显示时计算”或“创建时计算”,则必须编写一个公式来指定域的内容。
公式的执行时间为:
对于“计算”类型的域,在文档被创建和保存时执行;
对于“显示时计算”类型的域,在文档被打开时执行;
对于“创建时计算”类型的域,只在文档被创建时执行。
域中的值不能修改。
以下的计算域公式使”Date”域的值包含文档创建的日期和时间(@Created)。
(5)关键字域提供给用户域中输入的关键字列表。
以下的公式取得当前数据库中”Names”视图的第一列中内容作为关键字列表(@DbColumn(“”;
”Names”;
1))
四、编写公式的方法
一个公式中含有一条或多余按顺序执行的语句。
除了从公式返回以外,公式中没有循环和控制跳转的语句。
在编写公式之前先介绍几个概念:
列表、@函数、@command命令
1.列表元素
列表就是一个可以包含多个同类型值的命名实体。
一般用冒号分隔
以下函数是列表所特有的。
函数
描述
@Elements(list)
确定列表元素的数量
@Explode(string)
将文本字符串转换成一个文本列表。
空格、逗号和分号用于分隔字符串的元素
@Explode(string;
separator)
与上面的函数一样,但第二个参数指定了字符串中的元素的分隔符
separator;
empties)
与上面的函数一样,但是返回值为@True,因为第三个参数包含空的列表元素,其中出现了连续的分隔符
@Explode(date-range)
将一个日期范围转换成一个日期列表,参数必须是一个时间-日期值;
返回值是文本列表
@Implode(list)
将文本列表转换成文本字符串,用空格分隔各个元素
@Implode(list;
与上面的函数一样,但是第二个参数指定了字符串中每个元素之间的分隔符
@IsMember(string;
list)
确定一个字符串是否为一个列表的成员。
返回真
(1)或假(0)
@IsMember(list1;
list2)
确定一个列表是否被包含在另一个列表中。
@IsNotMember(string;
确定一个字符串是否不是一个列表的成员。
@IsNotMember(list1;
确定一个列表是否不被包含在另一个列表中。
@Keywords(list1;
在list1中找到与list2中的单词相匹配的单词。
单词分隔符有”,?
;
:
[]{}<
>
list2;
与上面的函数一样,但第二个参数指定了单词的分隔符
@member(value;
确定一个值在字符串列表中的位置
@Replace(list1;
list3)
将list1中与list2相匹配的值用list3中对应的值替换
@Subset(list;
n)
从列表中提取出n个值。
用-n表示从右到左提取
@Unique(list)
从字符串列表中删除重复的值
@Unique
返回一个随机的,唯一的文本值
2.执行字符串操作的方法
1)转换数据类型:
@Text(value)
将一个值转换为文本字符串
@Text(value;
format)
根据指定的格式将一个数字或时间-日期值转换成文本字符串。
@TextToNumber(string)
将文本字符串转换成一个数字
@TextToTime(string)
将文本字符串转换成一个日期-时间值。
@IsText(value)
如果值是文本字符串或文本字符串列表,则返回真值
(1)
@IsMember(value)
如果值是数字或数字列表,则返回真值
(1)
@IsTime(value)
如果一个值是时间-日期或时间-日期列表,则返回真值
(1)
@Char(number)
将一个IBM代码页850代码转换为对应的字符。
@Char样例:
将整数65转换成大写字符A:
”IBMCodePage850code65”;
@char(65))
2)连接、比较和判定长度
@Length(string)
返回字符串的长度,以字符为单位
@Length(stringlist)
返回字符串列表中每个元素的长度,以字符为单位
@Matches(string;
pattern)
判定两个字符串是否匹配。
@Like(string;
遵循ANSISQL标准。
pattern;
esc)
与上面的一样只是多了一个转义字符
3)查找并提取子串
以下函数查找并提取子串:
@Contains(string;
sub)
判定一个字符串是否包含一个子串
判定一个字符串是否包含一个列表中的子串
@Begins(string;
判定一个字符串是否以一个子串开始
@Ends(string;
判定一个字符串是否以一个子串结束
@Left(string;
从一个字符串中提取最左边的n个字符
从一个字符串中提取最左边的字符,直到一个子串为止,从左到右搜索
@LeftBack(string;
从一个字符串中提取最左边的字符,直到从右边开始的第n个字符为止
以下函数修剪字符串、重复字符、添加新行(回车),并改变大小写:
描述
@Trim(string)
从字符串中删除开头、结尾和多余的空格
@Trim(list)
从字符串列表的每个元素中删除开头、结尾和多余的空格,并从列表中删除空白元素
@Repeat(string,number)
将字符串string重复number次
@NewLine
在字符串中插入一个新行(回车)
@LowerCase(string)
将字符串中所有的大写字符转换成小写
@UpperCase(string)
将字符串中所有的小写字符转换成大写
@ProperCase
将字符串中每个单词的第一个字符转换成大写,并将其余的字符转换为小写
3.执行算术运算
@Abs(number)
求绝对值
@Sign(number)
对于正数返回1,对于负数则返回-1,对于零则返回0。
@Sum(num;
num;
…)
计算数字和数字列表的和
@Round(number)
对一个数字进行四舍五入
@Round(number;
factor)
以一个指定的因子规整数字
@Round(numberlist)
将列表中的每个数字都进行四舍五入
@Round(numlist;
以一个指定的因子规整数字列表中的每个元素
@Modulo(number;
number)
计算第一个数被第二个数除之后得出的余数
@Modulo(numlist;
numlist)
用矩阵式里表操作计算余数
@Power(base;
exp)
指数运算
@Sqrt(number)
计算平方根
@Pi
圆周率值
@Log(number)
计算常用的对数
@Ln(number)
计算自然对数
@Exp(number)
计算以e为底的指数
@Random
返回一个0到1之间的随机数
@Atan2(x;
y)
Y/x正切值的反正切函数
@Atan(tangent)
反正切函数
@Tan(angle)
计算角度的正切
(@Round)该样例将3.12四舍五入为3,将6.735取为7,7.5取为8;
753以10为因子归整为750;
列表元素中的3.12、6.735和7.5分别归整为3、6和7(把它们转换为文本字符串以显示)。
”@Round(3.12)”;
@Text(@Round(3.12)));
”@Round(6.735)”;
@Text(@Round(6.735)));
”@Round(7.5)”;
@Text(@Round(7.5)));
”Round(753;
10)”;
@Text(@Round(753;
10)))
”@Round(3.12:
6.735:
7.5)”
@Implode(@Text(@Round(3.12:
7.5))))
4.执行时间-日期运算
以下的函数用来确定并操作时间-日期值。
@Created
返回文档创建的时间-日期
@Accessed
返回最后一次访问文档的时间-日期
@Modified
返回最后一次编辑并保存文档的时间-日期
@Now
返回当前的时间-日期
@Today
返回当天的日期
@Tomorrow
返回明天的日期
@Yesterday
返回昨天的日期
@Weekday(time-date)
返回星期几如1-7(星期日到星期六)
@Day(time-date)
从时间-日期中提取月历中的日期
@Month(time-date)
从时间-日期中提取月份值,从1到12
@Year(time-date)
从时间-日期中提取年值
@Hour(time-date)
从时间-日期中提取小时值
@Minute(time-date)
从时间-日期中提取分钟值
@Second(time-date)
从时间-日期中提取秒值
@Date(y;
m;
d)
返回年,月,日中的日期部分
d;
h;
s)
返回年,月,日,小时,分钟,秒中的日期部分
@Date(time-date)
返回时间-日期中的日期部分
@Time(y;
返回年,月,日中的时间部分
返回年,月,日,小时,分钟,秒中的时间部分
@Time(time-date)
返回时间-日期中的时间部分
@Adjust(time-date;
y;
通过加减某一数值以调整时间-日期
@Zone
返回当前计算机的时区设置
返回当前时间-日期的时区设置
5.访问用户环境
用户环境是包含公式的数据库所在的服务器或工作站,否则用户环境是用户运行公式的Notes工作站。
以下是在用户环境中返回或处理信息的函数:
@UserName
返回用户名或服务器名
@Name([key];
name)
改变用户名的结构。
关键字包含[CN]以从一个专有名字中解析出公式名,[Abbreviate]缩写规范格式的专有名字,[Canonicalize]与上述作用相反,[ToKeyword]将名字各部分按相反顺序排序,用反斜杠分开(用于分类视图)
@UserRoles
对于服务器上的数据库,返回当前用户的角色列表
@MailDbName
返回用户邮件数据库的服务器名和路径名。
该函数判定两个元素的列表
@OptimizeMailAddress(address)
从地址中删除无用的网络域
@Platform
返回用户当前运行的平台:
Macintosh、NetWare、OS2V1、OS2V2、UNIX、Windows/16或Windows/32
@Version
返回正在运行的Notes版本(字符串)
@Password(string)
对一个字符串编码。
您无法从编码结果中确定原始字符串
6.访问当前数据库和视图
您对运行公式的数据库有直接的访问权。
下表列出返回数据库和视图属性的函数。
@DbManager
返回当前对数据库有“管理者”权限的用户、群组和服务器。
返回一个列表
@DbName
返回当前Notes服务器和数据库的名字。
返回二元素列表
@ViewTitle
返回当前视图的标题
7.访问当前文档
下面的表格列出返回文档和域属性的函数
@DocumentUniqueID
返回文档唯一的标识符,这是文档的全部复本唯一的标识符;
在一个域中,创建一个当前文档的文档链接
@InheritedDocumentUniqueID
返回文档的父文档唯一的标识符,在一个域中,创建一个当前文档的文档链接
@NotesID
返回“NT”和跟在后面的文档的项目标识符
@DocLength
返回文档的字节数大小
@Author
返回全部作者的缩写姓名
@DocFields
返回文档中全部域的名称
@IsAvailable(field)
如果某域存在于文档中,则返回真
(1)
@IsUnavailable(field)
如果某域不存在于文档中,则返回真
(1)
@Attachments
返回附件的个数
@AttachmentNames
返回全部附件的文件名
@AttachmentLengths
返回每个附件的字节数大小
@Responses
返回在当前使徒中当前文档的答复数目
@AllChildren
选择匹配文档的直接答复;
只用于选择公式中
@AllDescendants
选择匹配文档的所有答复;
@IsResponseDoc
如果文档是一个
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第三讲 Notes公式编程 第三 Notes 公式 编程
![提示](https://static.bingdoc.com/images/bang_tan.gif)