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)\' 这个地方视图当作文档来处理,以便取到视图的一些属性。
综合使用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向代理通信,并让代理取得浏览器端的当前文档呢?先看一个例子:在某申请系统中,用户创建新申请可以这样做:打开新的申请单,填写各项目后,点击操作按钮"提交申请",就完成了操作。
LOTUS学习技巧3
LOTUS学习技巧三1.我如何在页面上建立一个热点,让它打开一个文档?答: 在页面上写一段文字,然后选上这段文字,然后点菜单”创建” –热点--操作热 点 然后选LotusScript ,举个例子,比如打开ID 为NT00000C62的文档:Sub Click(Source As Button)Dim uiworkspace As New notesuiworkspaceDim curdatabase As notesuidatabaseDim database As notesdatabaseDim doc As notesdocumentSet curdatabase = uiworkspace.currentdatabaseSet database = curdatabase.databaseSet doc = database.getdocumentbyid("00000C62")Call uiworkspace.EditDocument(True,doc,False )End Sub2.我如何实现归档,比如我如何把当前视图中所有被选中的文档归入文件夹 fold 中?答: 用Script象如下这样实现:Sub AddDocToFold(fold As String)Dim uiworkspace As New notesuiworkspaceDim uiview As notesuiviewDim doc As NotesDocumentDim docList As StringSet uiview = uiworkspace.currentviewFor j = 1 To uiview.Documents.CountSet doc = uiview.Documents.GetNthDocument(j)Call doc.PutInFolder( fold )NextEnd Sub3.我如何实现把某文件夹视图中的被选择的文档从该文件夹中清除,但却不能删除他们?答: 用Script 实现如下:Sub RemoveDocFromFold( fold As String,all As Integer)'功能:' 把文档从某个文件夹中移走,但并不删除此文档'参数:' fold: 文件夹' all : 0表示仅移走当前选择的文档,1表示移走该文件夹中所有文档Dim uiworkspace As New notesuiworkspaceDim uiview As notesuiviewDim doc As NotesDocumentDim view As notesviewSet uiview = uiworkspace.currentviewSet view = uiview.viewIf all = 0 Then '移去所选文档For j = 1 To uiview.Documents.CountSet doc = uiview.Documents.GetNthDocument(j)Call doc.RemoveFromFolder( fold )NextElseIf all=1 Then '移去全部文档Set doc = view.GetFirstDocument'遍列该视图的所有文档,获取所有满足条件的纪录数While Not(doc Is Nothing)Call doc.RemoveFromFolder( fold )Set doc = view.GetNextDocument(doc)WendEnd IfEnd If'Evaluate("@Command([ViewRefreshFields])")End Sub4.我如何把当前视图中的所有的被选择的文档的某个域的值替换掉?答: 用Script 实现如下:Sub SelectedDocFieldReplace( Field As String,repval As String) '功能:' 把所选文档中的每个 Field 域的值 改为 repval'参数:' Field 要更改的域的名称' repval 修改后的域值Dim uiworkspace As New notesuiworkspaceDim uiview As notesuiviewDim doc As NotesDocumentDim order_num As String'order_num = Inputbox$("请输入批次")Set uiview = uiworkspace.currentviewFor j = 1 To uiview.Documents.CountSet doc = uiview.Documents.GetNthDocument(j)On Error Goto lable1Call doc.replaceitemvalue(Field,repval)Call doc.save(True,False)NextExit Sublable1:Msgbox("错误!,所选文档没有指定的域,这个错误发生在没有给selectedDocFieldReplace() 函数传递正确的参数")Exit SubEnd Sub5.我如何创建某个程序运行结果的日志文档?6.答: 首先新建一个日志文档的表单,并把该表单设置成数据库的默认表单,然后 就用Script 创建文档,并填写该文档中某些域的值,最后存盘,例子程序片段如下:'写传真日志Dim faxerdoc as notesdocument‘faxerr_receiver,faxerr_docnum,faxerr_content是表单form_faxerr的三个域名‘Set faxerrdoc = New NotesDocument( db )faxerrdoc.Form = "form_faxerr"Call faxerrdoc.replaceitemvalue("faxerr_receiver",Cstr(peoplecount) )Call faxerrdoc.replaceitemvalue("faxerr_docnum",strsucssnding )Call faxerrdoc.replaceitemvalue("faxerr_content",faxerrmsg )success = puteWithForm( False, False )If success ThenCall faxerrdoc.Save( True, False )ElseMsgbox("无法写入传真日志....")End If'Msgbox(faxerrmsg)Exit Sub7.我要从当前视图中选择一批文档,并让程序从这些文档中提取信息,在嵌入在表单中的OLE对象 Word文档中建立一张表,要求是选择了几篇文档就在这张表中画几行,这张表的每个列的信息都中文档中的域中提取,换句话说,就是要把被选文档以Word文档表格的形式表示出来,能否给我一个这方面的例子程序?8.答: 可以,下面就是这样的一个例子:Sub inputgroupplan(source As notesuidocument,doccollection Asnotesdocumentcollection)'功能: 自动生成出团计划表。
学习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语言知识
目录
概述
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
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.封闭函数和过程定义中的参数列表、函数和过程的调用参数列表。
_下划线
前面加上至少一个空格或者制表符时,将当前行延续到下一行。
LotusScrip及公式的学习
LotusScript 及公式的学习1.LotusScript及公式是Lotus Notes提供的一个完整的编程接口,是一种与BASIC兼容的程序设计语言。
可以根据需要在NOTES的任意对象中附加LotusScript语句和公式。
LotusScript是一个完全面向对象的程序设计语言,具有丰富的类,方法和属性,包含有集成的对象浏览器和程序开发环境。
NOTES公式语言包含一整套的语法规则,提供丰富的命令和函数,可以对常量和变量进行计算,进行简单的逻辑控制。
2.公式基础:(1)输入公式的方式(两种)公式窗口设计窗口(2)公式语言的语法结构词法元素:公式有一个或多个语句构成,一个语句可以有变量,常量,运算符,函数,关键字等构成如:CTX:=@CreatedCTX是变量,:=是运算符,@Created是一个无参数的函数语句含义:把文档的创建时间赋给变量CTX如:@Trim(name)@Trim是函数,参数name是一个域名语句含义:把name值的多余空格去掉如:@Promp([OK];"问候!";"您好! ")@Promp是一个带三个参数的函数,参数[OK]是一个关键字,后面两个是文本常量语句含义:显示一个对话框如:LastName+", "+FirstNameLastName, FirstName是一个变量,+是一个运算符,", "是一个常量语句含义:将LastName,一个逗号和空格号, FirstName合并在一起通用语法规则(必须遵循)语句分隔符:使用分号分隔多哥语句如:FIELD txtmap:=txtmc;FIELD txtmc:=@DeleteField空格:在运算符,标点和值之间可以有任意多个空格,也可以没有,必须有一个来区分关键字,文本常量中的空格也很重要。
大小写:除了在文本常量中之外,其他都没分别运算符和值:两个值之间至少有一个运算符间隔。
lotus script 操纵word文档
Office 文档集数据库是以嵌入对象的方法嵌入word文档的,该文档在body域中,发送传真时,页眉、页脚发不出来,其他格式能正常发出来.而且可以做到不发传真封面,另外,这种方式也可以避免附件方式那样发出来还会出现一个附件图标,故现在的任务是如何往该文档中写内容了。
往该文档中写内容,有两种方式:一种是用VB写一个DLL,有关word文档的操作,包括插入一个表格、插入一个字符串、插页眉等等。
这些函数都放在Dll中,然后被lotus script调用。
另一种方式是用lotusscript 直接操纵该嵌入文档,但操纵嵌入文档的lotusscript语法与VB语法差异很大。
所能获得的例子代码和帮助都是VB语法,只能从lotusscript提取的ole对象库中去察看个函数的语法,至于个函数中的参数的意义只能从msdn中获得,而msdn中对参数的讲解也不是很详细,所有VB常量在lotusscript中没有定义,只能半猜半试的直接使用数值。
下面的例子是lotus script 操纵word文档:'获取嵌入文档的句丙Set thisdoc = source.getobject("oleobject"'设置该文档的页面设置的左边距为20个单位(象素)With thisdoc.pagesetup.leftmargin = 20End With'插入页眉(由于真正的页眉在传真时无法显示,这里的页眉是模拟的)'插入一幅图Set thispicture = thisdoc.shapes.Addpicture("d:\学习\cassiatb.jpg"'设置文字的插入点thisrangeSet thisrange = thisdoc.range(1,1)pageheadstring = "CAISSA Touristic GmbH" & Chr(10) & "HAMBURG·BEIJING·SHANGHAI·BARCELONA" & Chr(10) &Chr(10) & Chr(10)'插入一段文字:pageheadstringthisrange.insertbefore (pageheadstring)'获取一段文字:从字符1到24Set thisrange = thisdoc.range(1,24)'设置该段文字的属性:With thisrange.bold = True '加粗.ParagraphFormat.Alignment = 1'wdAlignParagraphCenter 行居中.font.size = 20 '字体大小为20End WithSet thisrange = thisdoc.range(25,59)With thisrange.bold = True.ParagraphFormat.Alignment = 1'wdAlignParagraphCenter.font.size = 16End With'thispicture.wrapformat.side = wdwrapright'设置图像属性With thispicture.wrapformat '环绕方式.type = wdwrappicture '类型为picture.side = wdwrapright '文字右环绕End With。
Lotus script的一些常用方法
LotusScript 是完全面向对象的编程语言。
它通过预定义的类与 Domino 接口。
Domino 监控用户代码的编译和加载,并且自动包含 Domino 的类定义。
访问现有的对象最好使用 LotusScript,例如:根据其他文档的值来更改一个文档中的值。
LotusScript 提供了一些公式没有的功能,例如:操作数据库存取控制列表 (ACL) 的能力。
写script关键是取对象,查看对象的属性,所以你要学会看notes提供的Script帮助。
下面是我收集的一些script例子。
一般是比较技巧的程序,要学习一般script编写,请下载lotusScript学习库!LotusScript 是完全面向对象的编程语言。
它通过预定义的类与 Domino 接口。
Domino 监控用户代码的编译和加载,并且自动包含 Domino 的类定义。
访问现有的对象最好使用 LotusScript,例如:根据其他文档的值来更改一个文档中的值。
LotusScript 提供了一些公式没有的功能,例如:操作数据库存取控制列表 (ACL) 的能力。
写script关键是取对象,查看对象的属性,所以你要学会看notes提供的Script帮助。
下面是我收集的一些script例子。
一般是比较技巧的程序,要学习一般script编写,请下载lotusScript学习库!怎样判断视图中没有文档?set doc = vw.getfirstdocument()if doc is nothing thenend 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的一些常用方法(2)
怎样用lotusScript启动附件首先使用EmbeddedObjects类将附件拆离到一个临时文件夹里,然后用shell命令语句运行它怎样在lotusScript中创建一个姓名域、读者域、作者域创建一个"specialType"姓名域Dim variableName As New NotesItem( notesDocument, name$, value [,specialType%]) 创建一个"Author"作者域Dim TAuthor As New NotesItem(doc, "Author", Auths, AUTHORS)TAuthor.IsSummary = True修改了主文档后,怎样自动修改答复文档Sub QuerySave(Source As Notesuidocument, Continue As Variant)Dim Collection As NotesDocumentCollectionDim Doc As NotesDocumentDim Form, ParentStatus, Status As StringSet Doc = Source.DocumentSet Collection = Doc.ResponsesSet Doc = Collection.GetFirstDocumentParentStatus = Source.FieldGetText("STATUS")While Not ( Doc Is Nothing )Form = Doc.GetItemValue("Form")(0)Status = Doc.GetItemValue("Status")(0)If (Form = "TASK")And (Status <> ParentStatus) ThenCall Doc.ReplaceItemValue( "STATUS", ParentStatus )Call Doc.Save (True, False)End IfSet Doc = Collection.GetNextDocument(Doc)WendEndSub怎样及时取到服务器的时间dim doc as notesdocumentset doc = Serverdb.CreatedocumentcreateDate = doc.Created............最后不要让该文档存盘lotusScripts中怎样在字符串里加回车?"aaa"+chr(10)+"bbb"怎样屏蔽用户用Delete键删除文件在数据库Script中的Querydocumentdelete中使用下列语句。
lotusscript notesrichtextitem 文本 换行
lotusscript notesrichtextitem 文本换行LotusScript NotesRichTextItem 是IBM Lotus Notes 中的一种数据类型,用于存储和处理富文本数据。
文本换行是在文本中插入换行符来实现多行显示的技术。
在本文中,我将一步一步回答关于LotusScript NotesRichTextItem 文本换行的问题。
第一步:什么是LotusScript NotesRichTextItem ?LotusScript 是一种由IBM 开发的脚本语言,它主要用于创建和管理Lotus Notes 和Domino 应用程序。
NotesRichTextItem 是Lotus Notes 中的一种数据类型,用于存储和处理富文本数据,如格式化文本、图像、超链接等。
第二步:为什么需要文本换行?文本换行是为了在文本中插入换行符,使得文本在显示时可以自动换行到下一行。
这在处理较长的文本、段落或邮件正文时非常有用,以避免文本溢出屏幕边界。
第三步:如何在LotusScript 中处理文本换行?在LotusScript 中,您可以使用NotesRichTextItem 对象来创建和处理富文本数据。
要处理文本换行,您可以通过以下步骤实现:1. 获取NotesDocument 对象,该对象包含NotesRichTextItem 数据。
2. 使用GetFirstItem 方法获取NotesRichTextItem 对象。
3. 使用AddNewLine 方法插入换行符。
4. 使用AppendText 方法添加文本内容。
5. 使用GetFormattedText 方法获取格式化的文本内容,包括文本换行。
6. 使用NotesRichTextNavigator 对象遍历和处理富文本数据。
下面是一个示例代码,演示如何在LotusScript 中处理文本换行:lotusscriptDim session As New NotesSessionDim db As NotesDatabaseDim doc As NotesDocumentDim rtitem As NotesRichTextItemSet db = session.CurrentDatabaseSet doc = db.CreateDocumentSet rtitem = New NotesRichTextItem(doc, "Body")Call rtitem.AppendText("这是一段较长的文本内容。
Lotusscript的一些常用方法
LotusS cript是完全面向对象的编程语言。
它通过预定义的类与 Domino接口。
Domino监控用户代码的编译和加载,并且自动包含 Domino的类定义。
访问现有的对象最好使用 LotusS cript,例如:根据其他文档的值来更改一个文档中的值。
LotusS cript提供了一些公式没有的功能,例如:操作数据库存取控制列表 (ACL) 的能力。
写script关键是取对象,查看对象的属性,所以你要学会看note s提供的S cript帮助。
下面是我收集的一些sc ript例子。
一般是比较技巧的程序,要学习一般s cript编写,请下载lot usScr ipt学习库!LotusS cript是完全面向对象的编程语言。
它通过预定义的类与 Domino接口。
Domino监控用户代码的编译和加载,并且自动包含 Domino的类定义。
访问现有的对象最好使用 LotusS cript,例如:根据其他文档的值来更改一个文档中的值。
LotusS cript提供了一些公式没有的功能,例如:操作数据库存取控制列表 (ACL) 的能力。
写script关键是取对象,查看对象的属性,所以你要学会看note s提供的S cript帮助。
下面是我收集的一些sc ript例子。
一般是比较技巧的程序,要学习一般s cript编写,请下载lot usScr ipt学习库!怎样判断视图中没有文档?set doc = vw.getfir stdoc ument()if doc is nothin g thenend if如何将查询结果放到一个文件夹里?下面是将搜索结果放到名叫newfolder的文件夹中,并跳转到该文件夹上Sub Click(Source As Button)Dim docs As notesd ocume ntcol lecti onDim doc As notesd ocume nt...........q=doc.query(0)Set docs = db.ftsear ch(q, 0)Call docs.PutAll InFol der( "newfol der" )Call w.OpenDa tabas e( "","","newfol der")End Sub如何删掉数据库中所有私有视图Dim sessio n As New notess essio nDim db As notesd ataba seDim doc As notesd ocume ntSet db=sessio n.curren tdata baseForall i In db.viewsSet doc=db.getDoc ument ByUNI D(v.univer salID)' 这个地方视图当作文档来处理,以便取到视图的一些属性。
lotusscript中一些对多值文本域的操作总结
lotusscript中一些对多值文本域的操作总结多值文本域在编程时还是挺常用的,它在LS中属于Variant一类,是一个Variant列表。
偶谨总结一下多值文本域的常用操作,会的一笑置之便了,没遇到过的希望能有所帮助。
[1] 查询一个字符串"teststring"是否在多值文本域"MultiText"中。
dim item as NotesItemset item = doc.GetFirstItem("MultiText")if item.Contains("teststring") thenmessagebox("ok")end if[2] 向多值文本域追加一个字符串。
dim item as NotesItemset item = doc.GetFirstItem("MultiText")call item.AppendT oTextList("teststring")[3] 删除多值文本域中的一个字符串。
doc.MultiText = FullTrim((ArrayReplace(doc.MultiText, "teststring", ""))[4] 替换多值文本域中的一个字符串。
doc.MultiText = ArrayReplace(doc.MultiText, "teststring", "replacedstring")[5] 追加一个多值文本域到另外一个多值文本域上。
doc.MultiText = ArrayAppend(doc.MultiText, doc.MultiTextAppend)[6] 确定一个字符串在多值文本域中的位置。
p = ArrayGetIndex(doc.MultiT ext, "teststring")[7] 提出多值文本域中第2个元素。
LotusScript数组列表操作函数
4
LotusScript version of @LeftBack
Function StringLeftBack (text As String, searchTerm As String, caseSensitive As Integer) As String '** Example: StringLeftBack("", ".", True) would '** return "www.lotus" '** If the searchTerm isn't found, nothing is returned Dim pos As Integer '** If there is no searchTerm, just exit If (searchTerm = "") Then StringLeftBack = text Exit Function End If '** try to find the searchTerm, using the custom '** InstrLast function pos = InstrLast(1, text, searchTerm, caseSensitive) If (pos > 0) Then StringLeftBack = Left$(text, pos - 1) Else StringLeftBack = "" End If End Function
lotusscpt字符串操作实例lotusscript实例repefunctionstringtolistthistextstringdelimlistseparatingspecifieddelimiter
Domino中使用LotusScript代理获取多值域的值
使用LotusScript获取多值域的值原理:文档中的域值是数组形式的。
多值域的值类似于一行多列的数组,下标从0开始。
假定域名为Employee,类型为多值文本域,文档中此域的值为:james,robin,alfred。
计划使用LS的得到返回值为:jamesrobinalfred。
方法1、直接获取strEmployee = doc.Employee(0) +doc.Employee(1) +doc.Employee(2)方法2、使用Evaluate声明Dim strEmployee AsVariantConst NotesMacro$ = "@Implode(Employee)"strEmployee = Evaluate(NotesMacro$,doc)MsgBoxCStr(strEmployee(0))方法3、使用GetItemValue方法Dim tname AsVarianttname = backdoc.GetItemValue("TComm3Name")MsgBox tnameForAll o In tnameMsgBoxCStr(o)EndForAll方法4、转化为数组处理Dim i,j AsIntegeri = 0arrEmployee = doc.GetItemValue("Employee ")For j=LBound(arrEmployee) ToUBound(arrEmployee)MsgBoxCStr(arrEmployee(i))i=i+1Next------------------例子--------------Dim WebStartDb As NotesDatabase '系统启动数据库Dim LinkDoc As NotesDocument '系统启动库中的链结文档Set WebStartDb=s.Getdatabase("", "weboa\woastart.nsf")Set LinkDoc = WebStartDb.GetDocumentByUNID(backdoc.DocID(0)) '根据链结文档ID从系统启动库中取链结文档IfNot LinkDoc IsNothingThenDim arrEmployee AsVariantDim strTComm3Name AsStringDim z,j AsIntegerz = 0strTComm3Name=""arrEmployee = backdoc.GetItemValue("TComm3Name")For j=LBound(arrEmployee) ToUBound(arrEmployee)'MsgBox "111:" & CStr(arrEmployee(z))strTComm3Name= strTComm3Name + CStr(arrEmployee(z))+";"z=z+1Next'MsgBox "strTComm3Name:" & strTComm3NameEndIfLinkDoc.IsTCommm=strTComm3NameCall LinkDoc.Save(True,True)。
lotusscript基本语法
LotusScript基本语法LotusScript语言的基本知识一、概述LotusScript是一种和Basic相兼容的面向对象的Scripting环境,它具有强大的能够从事面向对象应用软件开发的语言范围,能够提供循环和分支的能力、数组以及访问Notes对象的能力。
判断Notes中什么时候使用LotusScript或公式语言1)任何时候当执行该任务的函数或命令存在时,使用公式。
2)对于复杂的程序控制或循环,使用LotusScript。
3)存取或操作储存的文档数据要使用LotusScript,特别对于跨文档、跨数据库的存取。
4)若公式语言不能办到,则使用LotusScript在Notes应用程序中访问和操作对象需要三步进行:1.声明对象变量DIMDIM db As NotesDatabase2.实例化一个类将其赋值给对象变量SET db = New NotesDatabase("Domestic","Sales.nsf")3.使用这个对象的方法或属性db.created '用来展现创建数据库时的日期和时间二、NotesScript中的数据元素NotesScript中的常量Null '特殊值,代表数据遗失或空Empty '相当于"",也就是空串Nothing '涉及变量的初始值,表示对象变量没有内容PI '圆周率True/False '分别为数值1和0数据类型Integer(整型) Long(长整型) Single(单精度型) Double(双精度型) Currency(货币型) String(字符串)运算符+ - * / < > <> = Not And OR &常量和变量Dim address As String '定义变量address = "100 Main Street " '变量赋值Const address = "100 Main Street" '创建字符常量address通信输入和输出Dim response as Integerresponse = Inputbox("Do you want to continue") '弹出输入框输入Messagebox(response) '弹出输出窗口输出数据注释1.单行注释:用Rem或'号2.多行注释:用%Rem和%EndRem%Rem '多行注释实例The first statement in this Script declares a variable myName.The second assign the value "Robert" to myName.The third statement display the value of myName.%EndRem数据类型转换Asc(String) 函数 '将字符串转化为ANSI字符代码CBool(expression) 函数 '将表达式转化为布尔型CByte(expression) 函数 '将表达式转化为字节型CCur(expression) 函数 '将表达式转化为货币型CDate(Strin*) 函数 '将字符串转化为日期型**bl(expression) 函数 '将表达式转化为双精度型Chr(Integer) 函数 '返回整数AscII码对象的字符,例如65表示ACInt(expression) 函数 '将表达式转化为整型CLng(expression) 函数 '将表达式转化为长整型CSng(expression) 函数 '将表达式转化为单精度型CStr(expression) 函数 '将表达式转化为字符串Hex(number) 函数 '返回十六进制Oct(number) 函数 '返回八进制三、数组管理Dim MyDays(7) as String '声明一个数组一共7个元素,下标为0~6Dim MyDay(1 to 7) as String '声明一个数组下标为1~7ReDim MyDay(1 to 3) '重新设置数组的边界和维数,这里ReDim用于定义动态数组UBound(MyDay,1) '返回数组的上界,1表示若是多维数组,返回第一维的上界LBound(MyDay) '返回数组的下界LBound(MyDay,2) '返回数组第2维的下界MyDay(1) = "Sunday" '给数组元素赋值四、语句1、IF ... End ifif balance > 100 theninterest = 0.35elseinterest = 0end if2、Select caseSelect case thisMonthcase 1Response = "January"case 2 to 10 '也可以写成case 10,20,30或case is > 10 response = "Other"case elseMessageBox(thisMonth & "is invalid value")end Select3、Do...loops和while... wendDo while/until 条件'语句组loopDo'语句组loop while/until 条件while 条件'语句组wend4、For...NextFor i = 1 to 5MyDays(i) = InputBox("Enter your work days:")Next i5、ForAllForAll m in db.managers '循环显示数组db.managers中的元素MessageBox(m)End ForAll1.声明变量Dim Variablename as typedim是dimension的缩写,为变量的值在内存中创建一个空间。
lotusscript语法
G1-5
° 如:挑出 1 ̄100 之间包含 3,但不包含 2 的数字
− For x = 1 To 100
If CStr(x) Like "[!2]3" Then Print x
Next x
− 'Results: 13 33 43 53 63 73 83 93
√ Object • Is:判断 Object 是否相同 • IsA:判断 Object 的继承及派生关系
√ 完整声明: • 如:Dim tmp_strName As String, tmp_strTitle As String
√ 隐含声明: • 如:Dim tmp_strName¥, tmp_strTitle¥ • 如:在未声明时使用:myString¥ = “String Value”
√ 定长字符串声明: • 如:Dim tmp_strName As String * 10
° 强制符号:&
> 如:7, %77, &777 • 浮点数:
> Single(4-Byte)
° 强制符号:!
> Double(8-Byte)
° 强制符号:#
> 如:7.7, !70.7, #70.7E+02 √ Currency:(8-Byte)
• 强制符号:@ √ String:(2-Byte)
共9页
第6页
LotusScript 语言介绍
• Next [countVar] √ ForAll 语句:
• ForAll refVar In container statements End ForAll
√ While 语句: • While condition statements Wend
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, " ", "")
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
° 如:”100” + “200” ‘Result: “100200”
> &(强制连接)
° 如:100 + “200” ‘Result: 300
° 如:100 & “200”
• 匹配检验:
‘Result: “100200”
> Like
° 语法:
− stringExpr Like patternString
√ Do While 语句 • 永远循环: > Do statements Loop • 先检查条件,再循环: > Do While condition Statements Loop > Do Until condition Statements Loop • 先循环,再查条件 > Do Statements Loop While condition > Do Statements Loop 5
° 如:挑出 1 ̄100 之间包含 3,但不包含 2 的数字
− For x = 1 To 100
If CStr(x) Like "[!2]3" Then Print x
Next x
− 'Results: 13 33 43 53 63 73 83 93
√ Object • Is:判断 Object 是否相同 • IsA:判断 Object 的继承及派生关系
− Cdat(), DateNumber(), DateValue() − Date(), Now(), Today() − Year(), Month(), Day(), Houer(), Minute(), Second(), Weekday()
> 代表 Object 类型 > NULL、NOTHING 或 Empty 值 • 在同其它数据类型交换数据时,使用数组下标 > 如:tmp_strName = tmp_varFieldVal(n) • 判断 Variant 是否为空值 > 不可使用 IsNull(), IsEmpty()方法,当 Variant 下标超出时,运行报错! > 使用:Ubound(), Lbound()及 IsArray()方法判断 1.1.4 基本数据类型的转换 √ CBool, CByte, CCur, CDat, CDbl, CInt, CLng, CSng, CStr, Cvar √ String <-> Variant √ Implode(), Join(), Split() 1.1.5 常用数据类型的判断函数 √ IsNull(), IsEmpty, IsNumber(), IsNumberic(), IsObject(), IsUnKown(), IsDate() 1.1.6 变量的声明:
° 强制符号:&
> 如:7, %77, &777 • 浮点数:
> Single(4-Byte)
° 强制符号:!
> Double(8-Byte)
° 强制符号:#
> 如:7.7, !70.7, #70.7E+02 √ Currency:(8-Byte)
• 强制符号:@ √ String:(2-Byte)
1.1.8 运算符号
1.1.9 判断符号
第3页
G1-1
共9页
LotusScript 语言介绍
1.1.10 数位操作符号:
G1-2
1.1.11 逻辑连接符号:
G1-3
共9页
G1-4
第4页
LotusScript 语言介绍
1.1.12 特殊符号的运用:
√ 字符串:
• 连接符: > +
共9页
第6页
LotusScript 语言介绍
• Next [countVar] √ ForAll 语句:
• ForAll refVar In container statements End ForAll
√ While 语句: • While condition statements Wend
• 强制符号:¥ • 使用符号:
> “” > {} > || √ Boolean:(2-Byte) √ Variant: • 可以表示的数据类型: > 可以代表以上任何基本数据类型 > 可以代表以上任何基本数据类型的 Array > 可以代表 Date/Time 类型
° LotusScript 没有专用的 Date/Time 类型的声明及赋值 ° 可以使用以下函数生成 Date/Time 类型
° 如:B10010100, %B10010100
> 8 进制:O
° 如:O711423, &O711423
> 16 进制:H
° 如:H459f, &H459f
• 整数: > Integer(2-Byte)
第1页
共9页
LotusScript 语言介绍
° 强制符号:%
> Long(4-Byte)
第2课 LotusScript 类的继承关系
第7页
共9页
LotusScript 语言介绍
2.1 LotusScript 之 Notes 数据对象的派生关系
G2-1
2.1.2 常用的 LotusScript 对象继承关系:
第5页
共9页
LotusScript 语言介绍
> Exit Function > End Return Value > End Function √ Sub:(无返回值) • 定义语法: > [Public | Private] [Static] Sub subName [(parameters)] • 子程序返回: > Exit Sub > End > End Sub √ 调用语法: • Call Sub/Function_Name() • tmp_RetVal = Sub/Function_Name() 1.1.14 程序流程控制: √ If 语句: • If condition Then statements E l s e I f condition T h e n statements ... Else statements End If √ Select 语句: • Select Case selectExpr C a s e conditionList statements C a s e conditionList statements ... Case Else statements End Select √ Goto 语句 • GoTo label • On expression GoTo label1, [ , label2 ]... > 当 expression 为 1 时,执行 label1 > 当 expression 为 2 时,执行 label2 • GoSub label • On expression GoSub label1, [ , label2 ]... 1.1.15 循环语句 √ For 语句: • For countVar = first To last [Step increment] statements
LotusScript 语言介绍
第1课 LotusScript 语法
1.1 LotusScript 的语法: 1.1.1 语法概要: √ 语句行结束为行结束,无须特殊符号 √ 一条语句占有多行时,使用“ _”作为行结束 √ 同一行录入多条语句时,使用“:”分隔语句 √ 语法类似 VB,大小写不敏感 √ 注释: • 单行:’ • 多行:%Rem … %End Rem √ 基本变量类型赋值:“=” √ 对象赋值:“Set ObjectName = ” 1.1.2 内置常量: √ NOTHING: • 为 Object 的默认值 • 使用 Is 来判断(不可使用“=”) √ NULL • 使用 IsNull()来判断(不可使用“=”) √ PI • 3.1415926… √ TRUE/FALSE • LotusScript 内部使用-1 代表 TRUE;使用 0 代表 FALSE • 任何非 0 数,即为 TRUE √ EMPTY • 对 String 类型:”” • 对数字类型:0 • 使用 IsEmpty()判断(参见 Notes Help) > 当对 NotesItem 之 Variant 值判断时,IsEmpty(Var(0))总返回 True,即使域 值为”” > 使用 Var(0) = “”判断! • 该 EMPTY 名称不可用以赋值! 1.1.3 基本变量类型 √ 数字: • 非十进制数 > Byte(1-Byte) > 2 进制:B
1.1.7 数组的声明 √ 语法: • {Dim|Public| Private}varName1[Length_X, Length_Y] [As dataType] • 定长数组:Dim tmp_strArray(Length) As String • 变长数组:Dim tmp_strArray() As String • 重定义数组长度:ReDim tmp_strArray(Length) > 在动态数组,未通过 ReDim 声明前,无法使用之! > Variant 类型的变量本身,就可以是变长数组,且可以直接将列表值赋于之, 而使用 √ List 类型 • List 为 1 维的数组
√ 完整声明: • 如:Dim tmp_strName As String, tmp_strTitle As String
√ 隐含声明: • 如:Dim tmp_strName¥, tmp_strTitle¥ • 如:在未声明时使用:myString¥ = “String Value”
√ 定长字符串声明: • 如:Dim tmp_strName As String * 10