LotusScript语言知识
lotusscript技巧

Lotus script 技巧LotusScript 是完全面向对象的编程语言。
它通过预定义的类与 Domino 接口。
Domino 监控用户代码的编译和加载,并且自动包含 Domino 的类定义。
访问现有的对象最好使用 LotusScript,例如:根据其他文档的值来更改一个文档中的值。
LotusScript 提供了一些公式没有的功能,例如:操作数据库存取控制列表 (ACL) 的能力。
写script关键是取对象,查看对象的属性,所以你要学会看notes提供的Script帮助。
下面是我收集的一些script例子。
一般是比较技巧的程序。
怎样判断视图中没有文档?set doc = vw.getfirstdocument()if doc is nothing then.....end if如何将查询结果放到一个文件夹里?下面是将搜索结果放到名叫newfolder的文件夹中,并跳转到该文件夹上Sub Click(Source As Button)Dim docs As notesdocumentcollectionDim doc As notesdocument...........q=doc.query(0)Set docs = db.ftsearch(q, 0)Call docs.PutAllInFolder( \"newfolder\" )Call w.OpenDatabase( \"\",\"\",\"newfolder\")End Sub如何删掉数据库中所有私有视图?Dim session As New notessessionDim db As notesdatabaseDim doc As notesdocumentSet db=session.currentdatabaseForall i In db.viewsSet doc=db.getDocumentByUNID(v.universalID)\' 这个地方视图当作文档来处理,以便取到视图的一些属性。
如何在Lotus Script中使用公式

公式语言是可以传值给Lotus Script的,只要合理在Lotus Script中使用公式,可起到事半功成的效果,在Lotus Script中使用公式,用的就是evaluate语句。
Evaluate的格式是:Evaluate("公式")如要取得文档的唯一ID,除可以用doc.universalid得到外,还可以用doc.id=Evaluate("@TEXT(@DocumentUniqueID)")得到一般情况下,用Evaluate对于处理与文本有关的内容有较Lotus Script的相关函数处理有效率。
如:@text@userRoles@replace@replaceshustring@left@right@middle注意:当公式中包含双引号时,可以用单引号代替,也可用花括号代替如:dim tempStr as stringtempStr=Evaluate("@left('name';1)")或:tempStr=Evaluate(@left({name};1)")另外:@DBManager@DBName@DBTittle@DDEExecute@DDElnitiate@DDEpoke@DDETerminate@Command@PostedCommand@DialogBox@PickList@prompt@ViewTitle不适用于evaluate语句Evaluate语句可以使用notes公式进行计算而不必使用复杂的LotusScript语法:variant = notesSession.Evaluate( formula$, doc )计算公式:String. The formula.文档:NotesDocument. The formula context. Cannot be null.返回类型:variant例如:获取当前时间Dim nowtime As Variantnowtime=Evaluate(|@Now|,appdoc)appdoc.check_time=nowtime '2013-01-03 13:10:00公式语言是可以传值给Lotus Script的,只要合理在Lotus Script中使用公式,可起到事半功成的效果,在Lotus Script中使用公式,用的就是evaluate语句。
3.7Lotus Domino LotusScript简介

LotusScript编程简介
LotusScript是一种现代的,面向对象的语言,它的语 法类似Basic。简单易学。 它和Domino的接口是通过预定义的的Domino对象类 (Domino Object Class)实现的。 Domino前端(front-end)对象类能够实现用户界面中 的所有控制,包括数据库、视图、文档和域等。
从UIWorkspace的对象开始获取UIDocument对象,修改其中 的变量,就可以修改文档的内容
通过后端类(back-end clas )操作那些不在用户界面 中的对象。
Байду номын сангаас
从NotesSession类开始,获取NotesDatabase的对象,然后获 取NotesDocument对象来修改文档。
Lotus Domino程序设计
———LotusScript简介
1
Lotus Domino程序设计
1. 2. 3. 4. 5. 6. 7. 8. 9.
编程概述 公式语言 公式在表单、域和操作中的应用 公式在视图中的应用 公式在代理中的应用 公式的其它用途 LotusScript编程简介 Domino对象模型 使用LotusScript访问数据库 、视图和文档
4
3
LotusScript有下面一些优点
1. 2. 3. 4. 5. 6. 7. 8.
Basic的超集。容易学习,可以进行复杂的逻辑控制,具有 现代语言的所有功能。 跨平台性,用LotusScript写的程序,可以运行在所有支持 的平台上。 面向对象,您可以使用LotusSciript操作DOM。也可以自定 义类。 所有的Lotus产品都支持LotusScript。支持OLE/COM。 可以和Domino @function一起工作。 由集成开发环境支持,可以调试。 可以通过LSX进行扩展,可以用C或者C++编写DLL扩展。 可以通过LS:DO连接外部数据库,例如:DB2,SQL Server。
综合使用JavaScript、LotusScript_Agent和Formula的技巧

综合使用JavaScript、LotusScript_Agent和Formula的技巧综合使用JavaScript、LotusScript Agent和Formula的技巧一概述在使用 Designer开发B/S模式的应用时,JavaScript、LotusScript 和Formula是我们主要用到的三种开发语言。
它们在各自的位置都有着很强劲的优势。
1. JavaScript因为只能取得浏览器端的数据,不能访问Notes DOM;所以,主要用在浏览器端的数据验证、信息提示等对当前Brows窗口操作易的用性功能。
2. LotusScript能访问Notes DOM。
在Notes客户端可以取得当前文档的数据,但是,因为其无法直接在浏览器端工作;所以在B/S模式的应用中LotusScript只能在服务器端工作,我们通过编写LotusScript代理来实现其强大的文档处理能力。
3. Formula能访问后台数据,语言简洁,数据处理能力较弱,不能在浏览器端工作。
Formula主要使用在元素的显示控制以及域值的计算公式及简单的数据处理方面。
这三者使用的范围和处理能力各不相同。
在应用中将其三者综合起来使用,会使应用的各方面功能大大增强。
二由JavaScript向代理(LS\FL)通信一般情况下JavaScript向代理的通信,使用url command。
即如下格式:http://Host/Database/AgentName?OpenAgent&参数。
这类操作可以用来解决数据查询、文档删除等任务。
这类操作的特点是可以带参数,但是取不到浏览器端的当前文档,无法对浏览器端的文档进行处理。
那么,为什么要使用JavaScript向代理通信,并让代理取得浏览器端的当前文档呢?先看一个例子:在某申请系统中,用户创建新申请可以这样做:打开新的申请单,填写各项目后,点击操作按钮"提交申请",就完成了操作。
lotusscript 去除字符串中的空格

outputString = RemoveSpaces(inputString)
'输出结果
Print "Original String: " + inputString
Print "String without Spaces: " + outputString
请注意,这种方法会去除字符串中所有的空格。如果你只想去除开头和结尾的空格,可以使用LTrim和RTrim函数:
Function RemoveLeadingAndTrailingSpaces(input As String) As String
'使用LTrim和RTrim函数去除开头和结尾的空格
RemoveLeadingAndTrailingSpaces = LTrim(RTrim(input))
在LotusScript中,要去除字符串中的空格,可以使用Replace函数。以下是一个简单的例子,演示如何去除字符串中的空格:
Sub Initialize
Dim inputString As String
Dim outputString As String
'示Βιβλιοθήκη 字符串含有空格inputString = "This is a sample string with spaces."
End Sub
Function RemoveSpaces(input As String) As String
'使用Replace函数将空格替换为空字符串
RemoveSpaces = Replace(input, " ", "")
Lotus+Script+基本架构

CInt CLng CSng CStr CVar
CInt(Expression) 把參數改成整數(Integer)的資料型態 CLng(Expression) 把參數改成長整數(Long)的資料型態 CSng(Expression) 把參數改成單精準值(Single)的資料型態 CStr(Expression) 把參數改成文字(String)的資料型態 CVar(Expression) 把參數改成 Variant 的資料型態
2.運算式的成員
在 Lotus Script 中的運算式,主要是由運算子來決定所要執行的動作,而運算元就是要處理的資料對 象;當然處理結束,就會產生一個結果。 因此運算式的三個主要成員就是運算元、運算子及運算結果。
(1) 運算元(Operands)
所謂的運算元就是在運算式中所要進行運算的單元,也就是所謂的『資料』;而為了使 Lotus Script 可以明白分辨這些資料運算元,於是我們根據運算元的宣告、特性及其使用方法, 將 Lotus Script 中的運算元分為下列幾類:
1.變數宣告
在 Lotus Script 中一共提供了三種方式來宣告程式中所使用的變數: ◎ 關鍵字宣告型態 ◎ 尾碼宣告型態 ◎ 自動宣告型態
當設計師在 Lotus Script 的程式中,完成變數宣告後,這些變數就已經存在記憶體中,設計師就 可以使用 Lotus Script 的指令或敘述句,把資料指定存入某一個變數的記憶體中,或是提取記憶 體中某一個變數的內容。
◎關鍵字(Keywords)
所謂關鍵字,是 Lotus Script 保留給自己使用的識別字;也是 Lotus Script 已經事先宣告的識別 字,在其程式中可以代表獨特的敘述意義或是某些常數。 例如
学习LotusScript

学习LotusScript学习LotusScriptLotusScript对象与类1.面向对象编程类是以抽象数据类型为基础的对象行为,抽象数据类型定义了以类型为基础执行所有接口为一个类而定义的所有操作称之为方法。
2.对象一般可以从两个方面来理解面向对象编程中的对象:?属性。
?对象。
3.类类是从对象中抽象出来,作为对具有相同特征的一组对象的描述。
类是一种定义,它描述该类中每个对象共有的属性和方法,类不占用计算机内存。
Notes中的类被分为前端类(front-end)和后端类(back-end)两种。
前端类主要对用户当前正在工作的对象、表示Notes客户机用户界面中的对象进行操作。
后端类可以访问和操作任何数据库中的任何文档、视图与文件夹内容、数据库ACL以及外部数据。
7个前端类?NotesUIDatabase :代表Notes工作台上打开的数据库?NotesUIDocument :用于用户访问当前文档?NotesUIView :代表当前的数据库视图?NotesUIWorkspace :帮助用户访问Notes当前的工作台?Button :代表表单或文档上的操作按钮、热点或按钮?Navigator :代表一个导航器上的对象,帮助用户操作浏览器?Field :代表表单中的一个域。
23个后端类?NotesACL :代表数据库中的所有存取控制列表,通过它用户可以访问和使用数据库中的存取控制列表?NotesACLEntry :代表存取控制列表中一个单一的ACL项目,通过它用户可以查询Notes 对象的访问属性?NotesAgent :代表一个代理,通过它用户可以运行一个代理或查询代理的属性?NotesDatabase :代表一个数据库,通过它用户可以获得一个数据库的属性和操作该数据库中的文档、视图、表单等所有与数据库相关的对象?NotesDataRange :代表Notes中的时间和日期,用于Notes中的日历和日程安排?NotesDataTime :用于Notes中的时间和日期格式的转换?NotesDbDirectory :代表Notes服务器和本地机上的所有数据库列表?NotesDocument :代表Notes数据库中的一个文档,通过它可以实现对文档的操作?NotesDocumentCollection :代表Notes中类的集合,通过它用户可以访问所有的文档?NotesEmbeddedObject :代表Notes中的嵌入对象、链接和附件,通过它用户可以操作以上的对象?NotesForm :代表Notes数据库中的一个表单,通过它用户可以访问表单的属性,还可以对表单进行一定的操作?NotesInternational :代表Notes所在操作系统的不同国家、不同的设置?NotesItem :代表文档中的域,通过它用户可以访问域的属性?NotesLog :用于创建Notes日志,记录Notes事件、操作和错误等?NotesName :代表Notes中的用户名、服务器名和访问控制列表中的名字?NotesNewLetter :代表一个概要文档,其中包括与其他文档的链接?NotesRichTextItem :代表RTF域,通过它用户可以访问RTF域?NotesRichTextStyle :用于设置RTF域的属性?NotesSession :代表用户与Notes的对话,是所有类的根类?NotesTimer :通过该类可以设定时间间隔来触发一个事件?NotesView :代表数据库中的一个视图,通过它用户可以获得数据库中所有的视图的属性和访问视图中的文档?NotesViewColumn :代表视图中的一个列,通过它用户可以获得列的属性?NotesRegistration :主要操作Notes用户名和通讯录,通过它用户可以增加用户和服务器、登记新用户、交叉验证等程序书写规则1.注释要添加注释,只要使用单引号“’”作为注释文字的开头。
LotusScript中特殊字符用法及含义

4.作为一个表达式中连接字符串的运算符。
!感叹号
1.当作为变量声明中的标识符或者隐式声明变量的后缀时,所声明的变量的数据类型将为Single。
2.当作为标识符或者即将赋给常量的数值的后缀时,所声明的变量的数据类型将为Signle。
2.当作为标识符或即将赋给常量的数值的后缀时,常量的数据类型被声明为Integer。
3.表示一个编译器指令,比如:%Rem或%If。
&和号
1.当作为变量声明中的标识符或者隐式声明变量的后缀时,所声明的变量的数据类型将为Long。
2.当作为标识符或者即将赋给常量的数值的后缀时,所声明的变量的数据类型将为Long。
# #号
1.当作为变量声明中的标识符或者隐式声明变量的后缀时,所声明的变量的数据类型将为Double。
2.当作为标识符或者即将赋给常量的数值的后缀时,所声明的变量的数据类型将为Double。
3.当作为数值常量或者变量标识符时,指定在特定的文件I/O语句和函数中的文件号。
@ at符号
1.当作为显示声明或隐式声明的变量后缀时,声明此变量的数据类型为货币类型。
2.当作为标识符或要赋给常量的数值的后缀时,声明常量的数据类型为货币类型。
*
1.在固定长度的字符串声明中表示字符串的长度。
星号
2.在表达式中作为乘法运算符。
( )圆括号
1.将表达式分组,控制表达式中元素赋值的顺序。
2.封闭函数或过程调用中的一个传值参数。
3.封闭函数和过程定义中的参数列表、函数和过程的调用参数列表。
_下划线
前面加上至少一个空格或者制表符时,将当前行延续到下一行。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录
概述
1.1 LotusScript介绍 1.2 LotusScript特点 1.3 使用位置与执行时机
数据元素
2.1 数据类型 2.2 常量和变量 2.3 数组
Domino 对象
3.1 Domino 对象介绍 3.2 Domino 对象的属性 3.3 Domino 对象的方法
语法
Domino 对象
3.1 Domino 对象的介绍 3.2 Domino 对象的属性 3.3 Domino 对象的方法
语法
4.1 常用语句 4.2 错误处理语句
数据类型
类型
数值范围
初始值
Integer(整型)
Long(长整型) Single(单精度型) Double(双精度型) Currency(货币型)
4.1 常用语句 4.2 错误处理语句
对象的介绍
Domino 对象 是一组用来表示一个Domino应用程序的class,每一个class 都有其属性和方法 主要分为两类class Back-end:NotesDatabase、NotesDocument等 Front-end:NotesUIWorkSpace、NotesUIView等
对象的介绍
Domino 对象包含模式 Domino对象包含层级是Domino对象类别分享的关系,也就 是有些类别会再包含其他类别。 示例 Domino Server -> Databases -> Notes -> items 所以若要存取Item Value,就要先存取Database与Notes
myName.The third statement display the value of myName.
%EndRem
数组
数 组 说 明
Dim MyDays(7) as String Dim MyDay(1 to 7) as String
声明一个数组一共7个元素,下标为0~6 声明一个数组下标为1~7
对象的属性
对象属性的用法 语法 variable = object.property 解释 variable:数据类型与对象属性的数据类型相同 object:要操作对象的名称 property:要操作对象的属性名称
对象的方法
对象的方法 触发事件后,具体的处理措施 打开数据库 LotusScript是以对象为基础的语言,若要控制一个对象就必须先 取得此对象,才能使用其属性或方法。所以要使用数据库的属性 或方法时,就必须先开启数据库对象。 1、存取当前数据库,使用CurrentDatabase属性 2、存取其他数据库,使用GetDatabase方法
NotesDocument类别的属性 Dim s As New NotesSession Dim db As NotesDatabase Dim v As NotesView Dim doc As NotesDocument Set db = s.CurrentDatabase Set v = s.Getview(“Topics”) Set doc = v.GetDocumentByKey(“Louis”,True) Msgbox doc.IsNewNotes + “ ” + doc.Created
对象的介绍
对象的声明 使用Dim关键字来声明参数变量 示例 Dim db As NotesDatabase Dim view As NotesView Dim doc As NotesDocument
对象的介绍
对象的使用 使用Set关键字来给对象赋值 语法 Set objectRef = classMethod or classproperty 示例 set db = s.CurrentDatabase set db = New NotesDatabase(“Server01”;”names.nsf”)
使用位置与执行时机
使用位置 1、代理 2、表单、视图、事件 使用时机
1、开发中具有复杂控制的条件、分支语句时
2、在不同的类或事件中 3、错误调试
4、使用OLE存取其他应用函数
目录
概述
1.1 LotusScript介绍 1.2 LotusScript特点 1.3 使用位置与执行时机
数据元素
2.1 数据类型 2.2 常量和变量 2.3 数组
对象的方法
打开文档 利用NotesView类别的GetDocumentByKy方法可以指定关键 字并配合视图中的列值来查找视图中的文档。 示例 Dim s As New NotesSession Dim db As NotesDatabase Dim v As NotesView Dim doc As NotesDocument Set db = s.CurrentDatabase Set v = s.Getview(“Topics”) Set doc = v.GetDocumentByKey(“Louis”,True)
2Byte
4Byte 4Byte 8Byte 8String(字符串)
2Byte
Null string(“”)
数据类型
数据类型转换 数据类型转换函数 Asc(String) 说 明
将字符串转化为ANSI字符代码
CBool(expression)
CByte(expression) CCur(expression)
Oct(number)
返回八进制
常量和变量
内置常量 NOTHING NULL PI TRUE/FALSE EMPTY 说 明 〃 为 Object 的默认值 〃 使用 Is 来判断(不可使用“=”) 〃使用 IsNull()来判断(不可使用“=”) 〃 3.1415926… 〃 LotusScript 内部使用-1 代表 TRUE;使用 0 代表 FALSE 〃 任何非 0 数,即为 TRUE 〃 对 String 类型:”” 〃 对数字类型:0 〃 使用 IsEmpty()判断 > 当对 NotesItem 之 Variant 值判断时,IsEmpty(Var(0)) 总返回 True,即使域值为”” > 使用 Var(0) = “” 判断! 〃 该 EMPTY 名称不可用以赋值!
对象的介绍
Domino 对象的层级
对象的介绍
NotesDatabase class 被包含在以下class中 NotesSession NotesDbDirectory NotesUIDatabase 包含在以下class NotesACL NotesDocument NotesView NotesDocumentCollection
语法
4.1 常用语句 4.2 错误处理语句
LotusScript介绍
LotusScript是一种和Basic相兼容的基于对象的Scripting环境,它具有
强大的能够从事基于对象应用软件开发的语言范围,能够提供循环和分 支的能力、数组以及访问Notes对象的能力。
LotusScript特点
•容易学习,可以进行复杂的逻辑控制,具有现代语言的所有功能,比如 :分支,循环,函数等。 •跨平台性,用LotusScript写的程序,可以运行在所有支持的平台上。 •面向对象,您可以使用LotusSciript操作DOM。也可以自定义类。 •所有的Lotus产品都支持LotusScript。 •支持OLE/COM。 •可以和Domino @function一起工作。 •由集成开发环境支持,可以调试。 •可以通过LSX进行扩展,可以用C或者C++编写DLL扩展。 •可以通过LS:DO连接外部数据库,例如:DB2,SQL Server。
将表达式转化为布尔型
将表达式转化为字节型 将表达式转化为货币型
CDate(String)
Chr(Integer) CInt(expression) CLng(expression) CSng(expression) CStr(expression) Hex(number)
将字符串转化为日期型
返回整数AscII码对象的字符 将表达式转化为整型 将表达式转化为长整型 将表达式转化为单精度型 函数 '将表达式转化为字符串 返回十六进制
语法
4.1 常用语句 4.2 错误处理语句
目录
概述
1.1 LotusScript介绍 1.2 LotusScript特点 1.3 使用位置与执行时机
数据元素
2.1 数据类型 2.2 常量和变量 2.3 数组
Domino 对象
3.1 Domino 对象的介绍 3.2 Domino 对象的属性 3.3 Domino 对象的方法
对象的方法
NotesDocument类别的属性 所谓NotesDocument类别属性,就是在帮助文档中所列出的。例如: NotesID Created LastModified Size 还有些没有列出来。例如: IsNewNote IsResponse ParentDocumentUNID
对象的方法
常用语句
1、IF ... End if if balance > 100 then interest = 0.35 else interest = 0 end if
常用语句
2、Select case Select case thisMonth case 1 Response = "January" case 2 to 10 '也可以写成case 10,20,30或case is > 10 response = "Other" case else MessageBox(thisMonth & "is invalid value") end Select
常量和变量
变量
关键字Dim 用来声明变量的关键字 语法 Dim VarName As datatype 示例 Dim PartNumber As Integer