lotus公式.docx
《lotus公式.docx》由会员分享,可在线阅读,更多相关《lotus公式.docx(24页珍藏版)》请在冰豆网上搜索。
lotus公式
Lotus公式用法归类
访问用户环境
用户环境是包含数据库的服务器或工作站,数据库包括以下内容:
复制公式、由新邮件到达时或定时触发的代理、选择公式或列公式。
否则,用户环境是用户运行公式的Notes工作站。
用户名可以是专有名称也可以是非专有名称,专有名称可以是规范或缩写的,使用@Name可更改用户名的格式。
以下函数返回或处理用户环境的信息。
函数描述
@UserName返回用户名或服务器名。
@Name([key];name)更改用户名的格式。
关键字包含[CN]以从一个专有名字中解析出公共名,[Abbreviate]缩写规范格式的专有名字,[Canonicalize]与上述作用相反,[ToKeyword]将名字各部分按相反顺序排序,用反斜杠分开(用于分类视图)。
@UserRoles对于服务器上的数据库,返回当前用户的角色列表。
@MailDbName返回用户邮件数据库的服务器名和路径名。
该@function计算出一个包含两元素的列表。
@OptimizeMailAddress(address)从地址中删除无用的网络域。
@Platform返回用户当前运行的平台:
Macintosh、NetWare、OS2V1、OS2V2、UNIX、Windows/16或Windows/32。
@Version返回正在运行的Notes版本(字符串)。
@Password(string)对字符串加密。
加密后别人无法从中得到最初的字符串。
访问当前数据库和视图
可以直接访问正在运行公式的数据库(便捷图标除外,因为它没有数据库环境)。
也可以在视图环境中直接访问正在运行公式的视图。
同样,在文档环境中可直接访问打开文档的视图。
数据库和视图属性
下表列出返回数据库和视图属性的函数。
函数描述
@DbManager返回当前对数据库有“管理者”权限的用户、群组和服务器。
返回一个列表。
@DbName返回当前Notes服务器和数据库的名称。
返回二个元素的列表。
@ViewTitle返回当前视图的标题。
窗口标题和列公式@function
许多@function提供了关于视图的答复层次和其他方面的信息。
在视图中,主文档以1、2、3等编号。
每组答复文档或答复的答复文档则有第二个和第三个层次的从1开始的编号。
缺省情况下,完整的答复文档的编号以小数形式出现。
例如:
第三个主文档的第二个答复文档编号为3.2,而它下面的第一个答复文档编号为3.2.1。
这些函数仅工作于窗口标题和列公式中,有一些会被限制。
返回值都是一个字符串。
函数描述
@Responses返回当前视图中当前文档的答复文档的编号(只限于窗口标题公式)。
@DocLevel返回在当前视图中当前文档的级别。
@DocSiblings返回与当前文档同级的文档编号(包含当前文档)。
@DocNumber返回当前视图中的当前文档或分类的编号。
@DocNumber(sep)同上,只是用sep,而不是句点来分隔编号。
@DocNumber("")同上,只是仅返回编号的最右边部分。
@DocParentNumber返回当前视图中当前文档或分类的父文档或父分类的编号。
@DocParentNumber(sep)同上,只是用sep,而不是句点分隔编号。
@DocParentNumber("")同上,只是仅返回编号的最右部分。
@DocDescendants返回后续文档的编号。
包含当前文档的子文档,子文档的子文档。
@DocDescendants(def)同上,只是返回def。
在def中使用%以表示编号。
@DocDescendants(zero;def)同上,只是如果没有后续文档的话则返回zero。
@DocDescendants(one,zero;def)同上,如果只有一个后续文档的话,则返回one。
@DocChildren返回当前文档的直接子文档的编号。
@DocChildren(def)同上,仅返回def。
在def中使用%以表示编号。
@DocChildren(zero;def)同上,只是如果没有后续文档的话,则返回zero。
@DocChildren(one,zero;def)同上,如果只有一个后续文档的话,则返回one。
@IsCategory如果当前行的当前域右边任何域是一个分类,则返回一个星号。
@IsCategory(True)同上,只是返回Frue代替星号。
@IsCategory(True;False)同上,但是如果没有分类域,则返回False。
@IsExpandable如果当前行是可展开的,则返回一个加号。
@IsExpandable(True)同上,只是返回True代替加号。
@IsExpandable(True;False)同上,但是如果当前行是不可展开的,则返回False。
使用@function通过LS:
DO访问外部数据库
以下@function通过ODBC访问外部数据库并返回一个值或值的列表:
@DbColumn返回表的一列中的全部值,或者全部的不同的值。
@DbLookup返回表的一列中通过关键字匹配选定的值。
@DbCommand将一个命令传递给外部的数据库管理系统(DBMS)并返回结果。
@DbColumn与@DbLookup都只能提取数据。
它们不能增加、删除、修改数据或执行其他操作。
@DbCommand能提取数据或发送其他可以更改数据的SQL语句。
LotusScript提供了包括更新外部数据库的更加强大的功能。
前四个参数对于三个函数是同样的,通过ODBC建立访问数据库。
这些参数是:
"ODBC"是字符常量;或"ODBC":
"NoCache"
定义在数据源表格中的数据源名称(在Windows中的ODBC.INI)
用户标识符,两个用户标识符列表,或者一个空串,根据外部数据源而定
口令,两个口令列表,或者一个空串,根据外部数据源而定
(@DbColumn和@DbLookup)要访问的表的名称
(@DbCommand)要执行的命令
(@DbColumn和@DbLookup)要访问的列的名称
处理由数据源返回的空数据的选项
(@DbLookup)包含关键字的列名
(@DbLookup)适当的数据类型的关键字值,或者是一个列表
(@DbColumn和@DbLookup)两个元素的列表:
“Distinct”作为关键字或空串;“Ascending”或“Descending”作为一个关键字
在需要用IDS和口令的地方,您可以指定空串并让用户在执行函数时提供它们。
使用@function通过LS:
DO访问外部数据库
1.该公式取得MANUAL表中的PARTNO列。
@DbColumn("ODBC";"Oracle";"";"";"MANUALS";"PARTNO";"":
"Ascending")
2.该公式从MANUALS表的行中取得TITLE,在该行中PARTNO是17-895A。
@DbLookup("ODBC";"Oracle";"";"";"MANUALS";"TITLE";"PARTNO";"17-895A")
3.该公式从MANUALS表中的ONHAND列的数字值小于100的每行中取得PARTNO列值。
@DbCommand("ODBC";"Oracle";"";"";"SELECTPARTNOFROMMANUALSWHEREONHAND<100")
转换数据类型
在对数据操作时类型必须是正确的。
以下的函数用来转换数据和测试数据类型。
函数描述
@Text(value)将一个值转换为文本字符串。
@Text(value;format)根据指定的格式将一个数字或时间-日期值转换成文本字符串。
@TextToNumber(string)将文本字符串转换成一个数字。
@TextToTime(string)将文本字符串转换成一个日期-时间值。
@IsText(value)如果值是文本字符串或文本字符串列表,则返回“真”值
(1)。
@IsNumber(value)如果值是数字或数字列表,则返回“真”值
(1)。
@IsTime(value)如果一个值是时间-日期或时间-日期列表,则返回“真”值
(1)。
@Char(number)将一个IBM代码页850代码转换为对应的字符。
连接、比较和判定长度
运算符+用来连接字符串。
运算符=、<>、!
=、=!
、><、<、>、<=和>=用来比较字符串。
以下的函数用来判定字符串的长度和比较字符串:
函数描述和用法
@Length(string)以字符为单位返回字符串的长度。
@Length(stringlist)以字符为单位,返回字符串列表中每个元素的长度。
@Matches(string;pattern)判定两个字符串是否匹配。
可以用通配符来扩展比较的范围。
@Like(string;pattern)判定两个字符串是否匹配。
遵循ANSISQL标准。
@Like(string;pattern;esc)与上面的一样只是多了一个转义字符。
@Matches@Matches用“?
”来匹配任意一个单独的字符,用“*”来匹配任意的字符序列,@Matches使用“\”作为转义字符。
@Like按照ANSIX3.135-1992标准,使用“_”(下划线)来匹配任意一个单独的字符,用“%”(百分号)来匹配任意的字符序列。
查找并提取子串
样例以下函数查找并提取子串:
@Contains(string;sub)判定一个字符串是否包含一个子串。
@Contains(string;list)判定一个字符串是否包含一个列表中的子串。
@Begins(string;sub)判定一个字符串是否以一个子串开始。
@Ends(string;sub)判定一个字符串是否以一个子串结束。
@Left(string;n)从一个字符串中提取最左边的n个字符。
@Left(string;sub)从一个字符串中提取最左边的字符,直到一个子串为止,从左到右搜索。
@LeftBack(string;n)从一个字符串中提取最左边的字符,直到从右边开始的第n个字符为止。
@LeftBack(string;sub)从一个字符串中提取最左边的字符,直到一个子串为止,从右到左搜索。
@Right(string;n)从一个字符串中提取最右边的n个字符。
@Right(string;sub)从一个字符串中提取最右边的字符,直到一个子串为止,从左到右搜索。
@RightBack(string;n)从一个字符串中提取最右边的字符,直到从左边开始的第n个字符为止。
@RightBack(string;sub)从一个字符串中提取最右边的字符,直到一个子串为止,从左到右搜索。
@Middle(string;off;n)从一个字符串中提取n个字符,从一个偏移量开始,从左到右搜索。
@Middle(string;sub;n)从一个字符串中提取n个字符,从一个子串开始,从左到右搜索。
@Middle(string;off;sub)从一个字符串中提取字符,从一个偏移量开始,到一个子串结束,从左到右搜索。
@Middle(string;sub;sub)从一个字符串中提取字符,从一个子串开始,到另一个子串结束,从左到右搜索。
@MiddleBack(str;off;n)从一个字符串中提取n个字符,从一个偏移量开始,从右到左搜索。
@MiddleBack(str;sub;n)从一个字符串中提取n个字符,从一个子串开始,从右到左搜索。
@MiddleBack(str;off;sub)从一个字符串中提取字符,从一个偏移量开始,到一个子串结束,从右到左搜索。
@MiddleBack(str;sub;sub)从一个字符串中提取字符,从一个子串开始,到另一个子串结束,从右到左搜索。
@ReplaceSubstring(source;from;to)在source中用from的内容替换to的内容。
如果from和to都是列表,按次序替换对应的项目。
@Word(string;sep;n)从string提取单词n,其中单词是在指定的分隔符之间的文本。
@Word(list;sep;n)从列表中的每个字符串中提取单词n,其中单词是在指定的分隔符之间的文本。
修剪、重复、添加新行,并改变大小写
以下函数修剪字符串、重复字符、添加新行(回车),并改变大小写:
@Trim(string)从字符串中删除开头、结尾和多余的空格。
@Trim(list)从字符串列表的每个元素中删除开头、结尾和多余的空格,并从列表中删除空白元素。
@Repeat(string,number)将字符串重复若干次。
@NewLine在文本字符串中插入一个新行(回车)。
@LowerCase(string)将字符串中所有的大写字符转换成小写。
@UpperCase(string)将字符串中所有的小写字符转换成大写。
@ProperCase将字符串中每个单词的第一个字符转换成大写,并将其余的字符转换为小写。
执行算术运算
乘、除、加、减运算符(*/+-)。
乘法和除法运算符的优先级高于加法和减法;运算顺序是从左到右。
但可以使用括号更改运算顺序。
以下列出的是算术运算函数。
函数描述
@Abs(number)计算一个数的绝对(无符号)值。
@Sign(number)对于正数返回1,对于负数返回-1,对于零则返回0。
@Sum(num;num;...)计算数字和数字列表的和。
@Integer(number)去掉数字的小数部分,使它成为整数。
@Integer(numlist)去掉数字列表所有元素的小数部分,使它们成为整数。
@Round(number)对一个数字进行四舍五入。
@Round(number;factor)以一个指定的因子规整数字。
@Round(numlist)对数字列表中的每个数字进行四舍五入。
@Round(numlist;factor)以一个指定的因子规整数字列表中的每个元素。
@Max(number;number)取两个数中较大的一个。
@Max(numlist;numlist)对两个数字列表进行矩阵式操作时,取两个数字中较大的一个
@Min(number;number)取两个数中较小的一个。
@Min(numlist;numlist)对两个数字列表进行矩阵式操作时,取两个数字中较小的一个。
@Modulo(number;number)计算一个数字被第二个数字除后得出的余数。
@Modulo(numlist;numlist)对两个数字列表进行矩阵式操作时,计算一个数字被第二个数字除后得出的余数。
@Power(base;exp)指数计算。
@Sqrt(number)计算平方根。
@Pi取得圆周率。
@Log(number)计算常用(以10为底)对数。
@Ln(number)计算自然(以e为底)对数。
@Exp(number)计算以e为底的指数。
@Random返回一个0到1之间的随机数。
@Sin(angle)计算角度的正弦(弧度)。
@Cos(angle)计算角度的余弦(弧度)。
@Tan(angle)计算角度的正切(弧度)。
@Asin(sine)反正弦函数。
@Acos(cosine)反余弦函数。
@Atan(tangent)反正切函数。
@Atan2(x;y)计算以y/x作为正切值的反正切函数。
答复列的公式
仅用于答复的列需要公式来生成总结答复文档的文本。
包含作者的信息:
讨论数据库可以使用如下答复列的公式来显示答复文档的作者、日期和主题:
From+"addedthiscomment:
"+Subject+"("+@Text(@Created)+")"
按以下方式显示答复:
StephanieMaharaddedthiscomment:
Greatjob!
(10/10/9704:
43:
15PM)
跟踪文档状态:
在雇员信息数据库中,答复列可以显示新雇员以及离职雇员的调查信息,作为“按雇员姓名”视图中常规的“雇员记录”的答复文档。
下面公式根据答复文档使用的表单的不同,显示不同的消息,并且显示文档的邮递状态。
@If(Form="Exit";"ExitForm,";"NewHireInformation,")+@If(Mailed="Yes";"mailedtoemployee"+@Text(@Date(PostedDate));"notyetmailed")
如果答复文档使用Exit表单,那么答复行显示也许如下:
ExitForm,mailedtoemployee08/26/97
如果答复文档使用NewHireInformation表单,那么答复行显示也许如下:
NewHireInformation,notyetmailed
跟踪答复的数目:
可以使用@DocDescendants跟踪答复文档的数目,以便作者迅速知道收到多少答复文档。
下面的主文档列(不是答复列)公式对于答复样式的视图非常有用。
Subject+"("+@Name([CN];From)+@DocDescendants(")";",%response)";",%responses)")
如果是主文档,那么列显示Subject域的内容、作者名称、答复以及答复的答复文档的数目。
如果文档有一个答复,那么列显示“response”;否则显示“responses”。
主文档行可作如下显示:
NeedHelpwithTradeShow(IndyMontoya,1response)
ChangingtheProductName(SandyBraun,2responses)
视图小程序编程
通过使用一些@commands命令可以对视图小程序编程。
有以下命令:
@command描述
ViewCollapse折叠所选文档
ViewExpand展开所选文档
ViewCollapseAll折叠所有文档
ViewExpandAll展开所有文档
ViewRefreshFields刷新视图。
刷新时,视图小程序不删除标记为已删除的文档
MoveToTrash使当前所选文档标记为已删除
EmptyTrash永久删除标记为已删除的文档
Folder将所选文档移动或拷贝到文件夹
RemoveFromFolder从当前文件夹删除所选文档。
访问用户环境
用户环境是包含数据库的服务器或工作站,数据库包括以下内容:
复制公式、由新邮件到达时或定时触发的代理、选择公式或列公式。
否则,用户环境是用户运行公式的Notes工作站。
用户名可以是专有名称也可以是非专有名称,专有名称可以是规范或缩写的,使用@Name可更改用户名的格式。
以下函数返回或处理用户环境的信息。
函数描述
@UserName返回用户名或服务器名。
@Name([key];name)更改用户名的格式。
关键字包含[CN]以从一个专有名字中解析出公共名,[Abbreviate]缩写规范格式的专有名字,[Canonicalize]与上述作用相反,[ToKeyword]将名字各部分按相反顺序排序,用反斜杠分开(用于分类视图)。
@UserRoles对于服务器上的数据库,返回当前用户的角色列表。
@MailDbName返回用户邮件数据库的服务器名和路径名。
该@function计算出一个包含两元素的列表。
@OptimizeMailAddress(address)从地址中删除无用的网络域。
@Platform返回用户当前运行的平台:
Macintosh、NetWare、OS2V1、OS2V2、UNIX、Windows/16或Windows/32。
@Version返回正在运行的Notes版本(字符串)。
@Password(string)对字符串加密。
加密后别人无法从中得到最初的字符串。
访问当前数据库和视图
可以直接访问正在运行公式的数据库(便捷图标除外,因为它没有数据库环境)。
也可以在视图环境中直接访问正在运行公式的视图。
同样,在文档环境中可直接访问打开文档的视图。
数据库和视图属性
下表列出返回数据库和视图属性的函数。
函数描述
@DbManager返回当前对数据库有“管理者”权限的用户、群组和服务器。
返回一个列表。
@DbName返回当前Notes服务器和数据库的名称。
返回二个元素的列表。
@ViewTitle返回当前视图的标题。
窗口标题和列公式@function
许多@function提供了关于视图的答复层次和其他方面的信息。
在视图中,主文档以1、2、3等编号。
每组答复文档或答复的答复文档则有第二个和第三个层次的从1开始的编号。
缺省情况下,完整的答复文档的编号以小数形式出现。
例如:
第三个主文档的第二个答复文档编号为3.2,而它下面的第一个答复文档编号为3.2.1。
这些函数仅工作于窗口标题和列公式中,有一些会被限制。
返回值都是一个字符串。
函数描述
@Responses返回当前视图中当前文档的答复文档的编号(只限于窗口标题公式)。
@DocLevel返回在当前视图中当前文档的级别。
@DocSiblings返回与当前文档同级的文档编号(包含当前文档)。
@DocNumber返回当前视图中的当前文档或分类的编号。
@DocNumber(sep)同上,只是用sep,而不是句点来分隔编号。
@DocNumber("")同上,只是仅返回编号的最右边部分。
@DocParentNumber返回当前视图中当前文档或分类的父文档或父分类的编号。
@DocParentNumber(sep)同上,只是用sep,而不是句点分隔编号。
@DocParentNumber("")同上,只是仅返回编号的最右部分。
@DocDescendants返回后续文档的编号。
包含当前文档的子文档,子文档的子文档。
@DocDescendants(def)同上,只是返回def。
在def中使用%以表示编号。
@DocDescendants(zero;def)同上,只是如果没有后续文档的话则返回zero。