LOTUS中常用到的API函数(转载)

1.关于InStr函数
InStr函数是一个字符串函数,它的作用是返回某字符串在另一字符串中第一次出现的位置。
InStr函数的格式为:InStr([start, ]string1, string2[, compare])
InStr函数的语法参数含义如下:
start
可选参数。为数值表达式,设置每次搜索的起点。如果省略,将从第一个字符的位置开始。如果 start 包含 Null,将发生错误。如果指定了 compare 参数,则一定要有 start 参数。
string1
必要参数。接受搜索的字符串表达式。
string2
必要参数。被搜索的字符串表达式。
Compare
可选参数。指定字符串比较。如果 compare 是 Null,将发生错误。如果省略 compare,Option Compare 的设置将决定比较的类型。
compare 参数设置为常数或者值:

返回值:返回0、1、2、-1或Null等。
返回指定一字符串在另一字符串中最先出现的位置。在字符串string1中,从start开始找string2,省略start时从string1头开始找。找不到时,函数值为0。
如果 InStr 返回
string1 为零长度
0
string1 为 Null
Null
string2 为零长度
Start
string2 为 Null
Null
string2 找不到
0
在 string1 中找到string2
找到的位置
start > string2
0
例如
使用 InStr 函数来查找某字符串在另一个字符串中首次出现的位置:
Dim SearchString, SearchChar, MyPos
SearchString ="XXpXXpXXPXXP" ' 被搜索的字符串。
SearchChar = "P" ' 要查找字符串 "P"。

' 从第四个字符开始,以文本比较的方式找起。返回值为 6(小写 p)。
' 小写 p 和大写 P 在文本比较下是一样的。
MyPos = Instr(4, SearchString, SearchChar, 1)
' 从第一个字符开使,以二进制比较的方式找起。返回值为 9(大写 P)。
' 小写 p 和大写 P 在二进制比较下是不一样的。
MyPos = Instr(1, SearchString, SearchChar, 0)
' 缺省的比对方式为二进制比较(最后一个参数可省略)。
MyPos = Instr(SearchString, SearchChar) ' 返回 9。
MyPos = Instr(1, SearchString, "W") ' 返回 0。

2.Left 函数
返回指定数目的从字符串的左边算起的字符。
Left(string, length)
参数
string
字符串表达式,其最左边的字符被返回。如果 string 参数中包含 Null,则返回 Null。

3.Length
数值表达式,指明要返回的字符数目。如果是 0,返回零长度字符串 ("");如果大于或等于 string 参数中的字符总数,则返回整个字符串。
说明
可使用 Len 函数确定 string 参数中的字符数目。
下面的示例利用Left 函数返回MyString 的左边三个字母:
Dim MyString, LeftString
MyString = "VBSCript"
LeftString = Left(MyString, 3) 'LeftString 包含 "VBS"。
注意 LeftB 函数与包含在字符串中字节数据一起使用。length 不是指定返回的字符串数,而是字节数。


4.search方法
lotus本身的搜索就是模糊的搜索,比如你要搜索db.search("标题"),结果不会只是标题域中只有标题两个域值的文档被搜索出来。凡是标题域中的域值包含“标题”的文档都会被搜索出来的。
例子:
1.db.search({@contains(title;"标题")},true,0)返回所有title域值包含标题的文档;
2.
query$="form="+"'"+"表单名"+"'"+"&"+ "作者="+"'"+doc.作者(0)+"'"+"&"+ "标题 contains "+"'"+doc.标题(0)+"'"
DC = DB.Search(Query)

DC = DB.FTSearch(搜索字)

详细解析search()的思路与方法:
searchFormula$ = {Form = "formname" & starttime>"开始时间" & endtime<"结束时间"}

Set collection = db.Search(searchFormula$, dateTime,0)

Set doc=collection.getfirstdocument

While Not(doc Is Nothing)
print '打印文档
Set doc = collection.GetNextDocument(doc)
Wend


经过那么多曲折以后,有了一些感概,供和我一样的新手参考:)
1、search及ftsearch里的查询条件均为字符串,它是不能再在里面进行其它计算的
所以
set collection=db.ftsearch([date1] > doc.date2(0),0)
这样是得不到正确结果的
最好的办法就是设一字符串集中所有的条件,安全简便
search=[date1] > +doc.date2(0)+……
set collection=db.ftsearch(search,0)
2、也是别人告诉我的,field和[]只要用一个就可以了
3、在所有的运算符两边加空格,虽然notes并没有强调,但你会发现这样能避免一些出错的可能。


LotusScript方法
Lotus测试来确定在获得一组文档方面,谁是表现最好的最常使用的LotusScript 方法-实际上在LotusScrip任何部分程序代码中最常运行的任务。在这一小节,我们比较以下常用的LotusScript方法:
db.FTSearch
db.Search
view.GetAllDocumentsByKey
view.GetDocumentByKey
在这类测试过程中,使用不同大小的数据库(10,000、100,000和1,000,000份文档)来了解每种方法是如何很好地运行的。
db.FTSearch方法
在对数据库的全文检索后,db.FTSearch返回文档集合。它运行良好,但需要当前的全文索引,也许对语法更深入的了解。此外,根据服务器的Notes.ini 设置,对返回的文件集合的大小施加了限制。当然,如果您的查找是基于多文本字段的内容,那么这是您唯一切实可行的选择。
db.Search方法
在使用视图选择公式进行数据库查找之后,db.Search返回文档集合。对于大数据库中的小规模集合来说这是相对低效率的执行程序。例如, 如果您的数据库中有100,000份文档并且您只需查找5或10份文档,您可能希望避免使用db.Search。在另一方面,它不需要全文索引和预先创建的视图,因此它是一种非常方便的查询方法。例如,如果您对几乎不能控制的数据库进行查询,这可能是您唯一可靠的选择。
view.GetAllDocumentsByKey方法
从Release 5开始,这种方法成为检索文件集合最快的方式。唯一的缺点是需要建立相关的视图。但是,只要您精简了您的视图设计和不使用昂贵的时间/日期敏感的公式(正如第一部分所讨论),这些视图对性能和磁盘空间的影响应可以降低以最小,程序使用view.GetAllDocumentsByKey从这些视图获得文件集合的速度将非常迅速。
通常,当遍历使用任何这些方法检索到的大量文件时,您的程序应使用
set doc = DocumentCollection.GetNextDocument ( doc )

而不是
set doc = DocumentCollection.GetNthDocument ( i )


其中i从1增加到DocumentCollection.count。 对于文档小集合来说-和对于单独运行的程序来说,如预定的代理-性能下降为最小,但对于文档大集合来说-或者许多用户同时运行的程序来说会影响性能,它使GetNth成为不明智的选择。GetNth方法通常适用于您想要从集合中挑选文档的情形,而不是简单地遍历整个集合。
view.GetDocumentByKey方法
这是唯一一种不将一组文档保存到内存中的方法。view.GetDocumentByKey而是使用已经构建的视图索引作为其集合并且一次只把一份文档放到视图中。这种方法与view.AutoUpdate = False一同使用,它非常迅速且不需要内存来保存可能的大文件集合。
注:如果前一份文档已经从视图中删除,当有机会访问视图中的下一文档时,view.AutoUpdate = False主要用于避免错误信息,但它还可以显著提升性能以便运行代理。当更改文档中的数据时,使用view.AutoUpdate = False您会看到视图中有显著的改进。
事件、共享的要素和其它
以下是必须记住的一些编程注意事项:
注意表单中事件的数量,不要"overcode"
当删除程序时,注意完全删除它。不要只是重新标记它为删除,或者部分删除程序。您可以根据circle/squiggle是填满还是清空来告诉事件是否有程序代码。
共享的要素是低效率的执行程序,但是它们可以在多个位置使用,从而弥补了其糟糕的性能。
使用共享的元素来保存某些工作以及重复一个要素来提升性能时仔细考虑。
如果您实施了错误检测,确保当遇到错误时检测停止。
在精心编程的情形下,通过当它逻辑上应结束时使其继续运行,这可以确保您的程序不会"漏掉"。
大规模的子表单是低效率的执行程序。
大规模的子表单会影响应用程序的性能。如果您在应用程序中未多次使用大规模的子表单,考虑在每个表单中重复这类字段,而不是使用子表单。
使用较少的字段。
在文档中使用较少的字段与性能相关,而不是文档的大小。使用具有较多数据的较少字段,如多值字段,而不是使用较少数据的比较多的字段可以提升应用程序的性能。由于许多传统的编程人员对Notes/Domino应用程序开发不熟悉,这可能一些概念直观,但实际测试很明显地验证了这一概念。
使用view.Autoupdate=False 来阻止视图刷新。
正如前面介绍,同时使用view.GetDocumentByKey方法和这一属性可以是高效率的执行程序。
使用StampAll方法来立即修改大量文档。
当您需要使用静态值来标记大量文档时这种方法极其有效,如当前日期/时间或值的标记集。
ForAll 语句是遍历循环的最快方法。
固定数组是比动态数组更卓越的执行性能。
动态数组是比固定数组稍微低效率的执行性能,但动态数组的规模恰如其分,在您选择固定还是动态数组之前请预以权衡。
公式语言函数简介 -------------------------------------------------------------------------------- @Abs 返回一个数字的绝对值 @Abstrcat 将一个或多个域的内容缩写 @Accessed 指出最后一次访问(即读取或编辑)该文档的时间和日期 @Acos 使用角度的余弦,计算反余弦 @Adjust 按照指定的年月日小时分钟秒来调整指定的时间-日期值。调整的值可正可负 @All 需要 SELECT 语句的公式使用 @All @AllChildren 包含父文档的所有满足选择标准的“答复”文档 @AllDescendants 包含所有满足选择标准的父文档的答复文档以及答复的答复文档 @Ascii 将一个 LMBCS (Lotus 多字节字符集)字符串转换成一个 ASCII 字符串 @Asin 使用角度的正弦,计算反正弦 @Atan 使用角度的正切,计算反正切 @Atan2 使用角度的 y/x 正切,计算反正切 @AttachmentLengths 返回表示当前文档各个附件长度的数字或数字列表 @AtachmentNames 返回附加到文档的文件的操作系统文件名 @Attachments 返回附加到文档的文件数目 @Author 返回包含文档姓名的文本列表 @Begins 确定一个指定的子串是否保存在另一个字符串的开头 @Certificate 从公用通讯录的“已验证的公用密钥”提取信息 @Char 从公用通讯录的“已验证的公用密钥”提取信息 @CheckAlarms 触发闹铃守护程序检查邮件文件是否有新的闹铃信息 @ClientType 返回文本字符串以从WWW客户机区分 Notes 客户机 @Command 执行一个 Notes 命令 @Contains 确定某个子串是否包含在一个字符串 @Cos 余弦函数 @Created 返回创建此文档时的时间-日期值 @Date 将数字转换成时间和日期的不同部分;然后返回时间-日期值 @Day 从指定日期值提取天的部分 @DbColumn 1 从当前或别的 Notes 数据库的视图或文件夹里查找并返回一个完整的列值 2 使用数据源信息激来激活 ODBC 驱动程序 @DbCommand 给出 ODBC.INI 文件的数据源信息,利用这些信息来激活 ODBC 驱动器。驱动器寻找指定的 DBMS,将命令送去进行处理,然后返回该命令检索到的数据 @DbExists 给定一个服务器和文件名,或复本标识符,查明该数据库是否存在 @DbLookup 1 给定一个值,在一个指定的视图(或文件夹)里查找,找出视图里的第一个排序列里包含该值的所有文档。对每个选的文档,@DbLookup 返回视图里指定列的内容,或者返回一个指定域的内容 2 使用 ODBC.INI 文件里的数据源信息激活恰当的 ODBC 驱动器。驱动器定位指定的 DBMS,表和列,并对那些关键字列的值和指定的关键字匹配的记录返回该列的值。您还可以定义返回的列表是否排序,是否删除重复值以及如何处理空值 @DbManager 返回当前对数据库有“管理者”存取权限的用户、群组和服务器的列表 @DbName 返回当前 Notes 服务器和数据库的名称 @DbTitle 返回当前数据库的标题 @DDEExecute 将指定的命令串传递给由一个对话标识符标识的 DDE 应用程序,@DDEExecute 通常和 @DDEInitiate 与 @DDETerminate 配合使用 @DDEInitiate 初始化与 DDE 服务器的一个对话,并返回该对话的标识符 @DDEPoke 将未申请的数据存储到 DDE 服务器应用程序的特定位置 @DDETerminate 止与 DDE 应用程序的对话 @DEFAULT 为域指定缺省值。在公式的计算过程,如果文档的某个域不存在,就用 DEFAULT 作为它的值。允许给域指定动态的缺省值 @DeleteDocument 在代理运行时此函数时,删除正在被处理的文档 @DeleteField 在代理运行该函数,@DeleteField 将删除指定的域 @DialogBox 弹出一个对话框,用指定的表单显示当前的文档 @Do 从左到右计算表达式,并返回列表最后一个表达式的值 @DocChildren 返回当前文档(或分类)下的子文档(或子分类)的个数 @DocDescendants 在一个列公式或窗口标题公式返回属于当前文档或分类的子文档或子分类的数目 @DocFields 返回文档所有域的列表 @DocLength 返回文档的字节数 @DocLevel 返回表示文档或分类级别的字符串 @DocMark 在运行公式的代理,表明您是否想保存对文档的改变 @DocNumber 在列公式或窗口标题公式,返回一个代表当前文档或分类的项目编号的字符串v @DocParentNumber 在列公式或窗口标题公式,返回一个视图项目的上一层项目的编号 @DocSiblings 在列公式或窗口标题公式,返回与某个视图(文档或分类)处于同级的项目数 @DocumentUniqueID 32 个字母和数字组合,在数据库的多个复本用来唯一标识某个文档 @Domain 返回 NOTES.INI 或 Notes Preferences 文件里当前用户的 Notes 网络域名 @EditECL 为指定的通讯录和名称显示“工作站安全性:执行控制列表”对话框,使您可以修改ECL @EditUserECL 为指定的通讯录和名称显示“工作站安全性:执行控制列表”对话框,使您可以在当前工作站上改变ECL @Elements 计算列表文本、数字、时间-日期的个数 @EnableAlarms 启动或停止后台警告守护进程 @Ends 确定子串是否在字符串的后面 @ENVIRONMENT 设置环境变量并存储在NOTES.INI或Notes Preferences里 @Environment 设置或返回存储在NOTES.INI或Notes Preferences的环境变量 @Error 允许您在表达式产生错误条件 @Exp 计算以e为幂,以指定的数为指数的值 @Explode 返回由文本串或日期范围的元素所组成的文本列表 @Failure 若输入的数值不符合条件,返回您给出的消息 @False 返回数字 0, 该函数等价于 @No @FIELD 在给文档里的域赋值时(与临时域相对)必须要用到 FIELD 关键字 @GetDocField 给定唯一的文档标识符,返回文档某个域的内容 @GetPortsList 返回激活或禁止的端口的列表 @GetProfileField 从简要表文档获得域,并缓存这个域的值,以备会话使用 @Hour 返回时间-日期的小时部分 @If 判定一个条件 @Implode 连接文本列表的成员,并返回文本字符串 @InheritedDocumentUniqueID 当前文档继承的父文档的唯一标识符 @Integer 将数字或数字列表截断成一个整数,去掉其小数部分 @IsAgentEnabled 判定定时运行的代理是否有效 @IsAvailable 查找文档是否存在某个域 @IsCategory 在列公式,如果视图某一行为一个分类,则返回指定的字符串 @IsDocBeingEdited 检查文档的当前状态,如果文档正在被编辑,则返回1(True) @IsDocBeingLoaded 查看文档的当前状态,如果文档正被装入内存并显示,则返回1(True) @IsDocBeingMailed 检查文档的当前状态,如果文档正在被邮寄,则返回 1 (True) @IsDocBeingRecalculated检查文档的当前状态,如果文档的公式正在被计算,则返回 1 (True) @IsDocBeingSaved 检查文档的当前状态。如果正在保存文档,则返回 1 (True) @IsDocTruncated 说明当前文档是否被截短过 @IsError 如果数值是一个 @ERROR 值,则返回 1 (True) @IsExpandable 在列公式,如果视图的某一行是可展开的,则返回某个特定的字符串 @IsMember 指出一段文本(或文本列表)是否包含在另外一个文本列表 @IsModalHelp 说明当前文档是否为一个模态帮助文档 @IsNewDoc 对于一个正在编辑的文档,指出该文档是否已经存盘 @IsNotMember 判断一段文本(或文本列表)是否不包含在另一个文本列表 @IsNumber 判断某个值是否为一个数字(或数字列表) @IsResponseDoc 判断某个文档是否为答复文档 @IsText 判断某个值是否为文本(或文本列表) @IsTime 判断一个值是否为时间-日期值(或时间-日期列表) @IsUnavailable 判断域名是否存在于文档里 @Isvalid 在当前表单执行所有检验公式 @Keywords 给定两个文本列表,返回第一个列表和第二个列表之间重叠的部分 @Left 从左到右搜索字符串,并返回字符串最左边的几个字符 @LeftBack 从右至左搜索字符串并返回子串 @Length 返回文本字符串字符的个数 @Like 将字符串和样本串进行匹配将字符串和样本串进行匹配 @Ln 返回一个以e为底的自然对数 @Log 返回大于 0 的数的常用对数 @LowerCase 将指定字符串里的大写字母转换成小写 @MailDbName 返回 Domino 服务器的名称和当前用户的邮件数据库的名称 @MailEncryptSavedPreference判断用户是否在“用户惯用选项”对话框选择了“加密保存的邮件” @MailEncryptSentPreference判断用户是否在“用户惯用选项”对话框选择了“加密发送邮件” @MailSavePreference 判断用户在“用户惯用选项”,选择了“保存发送的邮件” 的哪个选项 @MailSend 将当前的文档邮寄给指定的收件人 @MailSignPreference 判断用户是否选择了“用户惯用选项”对话框的“签发邮件” @Matches 用一个样本字符串去匹配一个字符串 @Max 给出两个数字,返回较大的那个数字 @Member 给定一个值,在文本列表找到该值的位置 @Middle 从一个字符串的间部分返回一个子串 @MiddleBack 从一个字符串间部分返回一个子串 @Min 给定两个数字,返回较小的那一个 @Minute 从时间-日期提取分钟数值 @Modified 返回一个时间-日期值,表示文档最近和次编辑和保存的时间 @Modulo 返回除法操作的余数 @Month 从指定的时间-日期提取月份值 @Name 用来裁剪层次结构名 @NerLine 在文本字符串插入一个新行(回车) @No 返回数字 0 @NoteID 当前文档的标识符号 @Now 返回当前的日期和时间 @OptimizeMailAddress 给定一个邮件地址,删除其不必要的网络域 @Password 密码字符串 @Pi 返回常量 p,精确到 15 个小数位 @PickList 显示一个模态窗口, 某个视图或地址对话框 @Platform 返回当前 Notes 运行的平台版本 @PostedCommand 执行一条 Notes 命令 @Power 求一个数的幂值 @Prompt 显示一个对话框,并根据用户的操作返回一个文本值。@Prompt 用来给用户提示信息,并根据用户的输入确定以后的操作过程 @ProperCase 将字符串的单词转换成字首大写的形式 @Random 产生一个 0 和 1 之间的随机数,包含 0 和 1 @RefreshECL 从指定的通讯录和名称,将管理执行控制列表拷贝到用户的个人工作站ECL @REM REM 关键字允许您给公式增加解释性的注释 @Repeat 以指定的次数重复某字符串 @Replace 在文本列表执行查找/替换操作 @ReplaceSubstring 用指定的新单词或新短语代替字符串的某个单词或短语 @Responses 返回文档的答复文档的(在当前视图)个数 @Return 立即停止公式的执行并返回指定的值 @Right 返回字符串最右边的字符 @GightBack 返回字符串最右边的字符 @Round 将指定的数字归整,结果为最接近它的一个数 @Second 从指定的时间-日期,提取并返回秒值 @SELECT 定义文档的选择条件 @Select 返回列表某个位置编号上的值 @Set 为临时变量赋值 @SetDocField 给定一个文档的唯一标识符,设置此文档的某个域的值 @SetEnvironment 在NOTES.INI或Notes Preferences设置并保存一个环境变量 @SetField 为文档的某个域赋值(使用 @Set 可以为临时变量赋值)。 这与关键字 FIELD 相似,只是 @SetField 还可以用在另一个函数 @SetProfileField 在简要表文件设置域值 @Sign 判定一个数是正数、负数还是零 @Sin 给定一个用弧度表示的角度,返回该角度的正弦值 @Soundex 返回某指定字符串的 Soundex 码 @Sqrt 返回一个数字的正平方根 @Subset 从左到右搜索一个列,并返回您所指定数量的值 @Success 在输入检查公式将该函数与 @If 一起使用可以判断输入的值是否满足检查条件 @Sum 在一组数字或数字列表进行加法运算 @Tan 给定某个角度的弧度值,返回该角度的正切值 @Text 将任意值转换成文本字符串 @TextToNumber 在可能的情况下,将文本字符串转换成数字 @TextToTime 将文本字符串转换为时间-日期值 @Time 将时间和日期的组成部分转换成数字;然后返回时间-日期值 @Today 返回当天的日期 @Tomorrow 返回明天日期的时间-日期值 @Trim 从文本字符串删除位于开头和结尾的空格,同时还删除多余的空格 @True 返回数字 1。该函数等效于 @Yes @Unavailable 使用本函数删除某个域 @Unique 带有参数时,通过仅返回列表里第一次出现的每个成员来从文本列表里删除重复值 @UpperCase 将指定字符串里的小写字母转换为大写 @URLGetHeader 从 URL 返回指定的超文本传输协议 (HTTP) 的标题信息 @URLHistory 用于查找、保存和重新加载一个 URL 历史记录 @URLOpen 提取一个由 URL 指定的 W.W.W 页面 @UserAccess 给定一个服务器和文件名,指出当前用户对这个数据库的存取级别 @UserName 返回当前的用户名或服务器名 @UserPrivileges 返回代表当前用户权限的文本列表 @UserRoles 对于选择了“强行统一此数据库的所有复本的存取控制列表”选项的服务器上的数据库或本地数据库,返回当前用户具有的角色的列表。角色是在数据库的存取控制列表定义的 @V2If 这个函数执行一个 @If 操作;其语法和 @If 的语法一样 @V3UserName 返回当前用户名或服务器名 @Version 返回您正在运行的 Notes 软件的版本号 @ViewTitle 返回当前视图的名称 @Weekday 算出一周的某一天,返回一个表示这一天的数字 @Word 从一个文本字符串里返回指定的单词 @Year 从指定的时间-日期值提取年份 @Yes 返回值 1 @Yesterday 返回与昨天日期相对应的时间-日期值 @Zone 返回当前计算机或时间-日期值的时区设置,并指出它是否遵循夏时制
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值