`
qq17906
  • 浏览: 52561 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

LOTUS学习技巧-2-公式学习

阅读更多

1.变量

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

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


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

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

 

3.  公式关键字    关键字语法

     字符串处理函数介绍?

     @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)

 

4.逻辑操作

      @if
        注意: 1.该函数必须有奇数个参数。
                   2.总共可以加99个条件
                   3.可以嵌套

5.日期操作

      @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
         返回明天日期的时间-日期值。

6.算术操作

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

      @min(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 )

 

7.列表操作

       @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)


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

9.特殊函数

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

           如果用户名是层次结构名, @username 将以规范格式返回(其中包含 cn、ou、o 和 c 标识符)。 如果如果要返回缩写格式的名字(忽略标识符),请使用 @v3username。
         @name
            用来裁剪层次结构名。可以用它将标准格式的名称进行缩写,将缩写名称扩展为它的标准格式,在名称中找到某一个部分,掉转部件的顺序以便用层次名称为一个视图分类。 如:@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")

 

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


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

        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


12.怎样在公式里用dos命令

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


13.怎样截取@dblookup的错误信息

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


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

       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])


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

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


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


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

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics