lotus script语言基础
- 格式:doc
- 大小:34.00 KB
- 文档页数:3
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中使用公式,用的就是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语句。
学习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.注释要添加注释,只要使用单引号“’”作为注释文字的开头。
--e--EditBottom将插入点移动到文档或表单的底部。
语法@Command([EditBottom])用法在处于设计模式的表单中,EditBottom 将插入点移动到表单的底部,就象用户使用ctrl+end 一样。
在处于编辑模式的文档中,EditBottom 将插入点移动到文档的最后一个可编辑域中。
在处于阅读模式的文档中,EditBottom 不起作用。
EditButton为选中的按钮显示设计窗格和属性框。
语法@Command([EditButton])用法必须在编辑模式下打开文档,或者必须在设计模式下打开表单必须选中一个按钮。
EditClear执行菜单命令“编辑”“清除”。
语法@Command([EditClear])用法在视图、文件夹或者处于阅读模式的文档中,将当前选定的文档标记为删除。
在处于编辑模式的文档中,删除突出显示的数据(文本、表格、图形、链接、文件附件或对象)。
在处于设计模式的表单、子表单、视图或文件夹中,删除突出显示的数据、域或列。
在工作台上,删除所选的图标(并非从磁盘上永久删除数据库)。
使用便捷图标来调用此命令最为方便。
当您在Web 应用程序中使用本命令时,它将删除当前文档。
仅对Web 中的表单使用本命令,而在视图操作中无效。
EditCopy执行菜单命令“编辑”“拷贝”。
语法@Command([EditCopy])用法在视图或文件夹中,将选定的文档拷贝到剪贴板。
在处于阅读或编辑模式的文档中,将突出显示的数据拷贝到剪贴板。
在处于设计模式的表单、子表单、视图或文件夹中,将突出显示的数据、域或列拷贝到剪贴板。
您可以使用便捷图标以调用该命令。
EditCut执行菜单命令“编辑”“剪切”。
语法@Command([EditCut])用法在视图或文件夹中,删除选定的文档并将它们放在剪贴板上。
在处于编辑模式的文档中,删除突出显示的数据并将它们放在剪贴板上。
在处于阅读模式的文档中,EditCut 无任何效果。
常用lotus script2010-04-10 15:36保存并关闭窗口@Command([FileSave]);@Command([FileCloseWindow])取消保存并关闭窗口REM {Notes only};FIELD SaveOptions := 0;@Command([FileCloseWindow])或 window.close()新建讨论主题viewname := @Subset(@ViewTitle; -1);@SetProfileField("tmpProfile"; "viewtitle"; viewname); @PostedCommand([Compose];"MainTopic")新建主文档的答复REM {notes only};@Command([Compose]; "Response")新建答复viewname := @Subset(@ViewTitle; -1);@SetProfileField("tmpProfile"; "viewtitle"; viewname);@PostedCommand([Compose];"Response")新建答复的答复@PostedCommand([Compose];"ResponseToResponse")父文档预览REM {notes only};@Command([ShowHideParentPreview])搜索REM {Web only};@Command([ViewShowSearchBar])转发@Command([MailForward])作为书签转发@Command([Compose]; @MailDbName; "Bookmark")移至废纸篓@Command([MoveToTrash])清空废纸篓@Command([EmptyTrash])新建文件夹@Command([CreateFolder])或var pathname = (window.location.pathname);window.open(pathname.substring(0,(stIndexOf('.nsf')+5))+'F olderCreate?OpenForm','Folder','scrollbars,screenX=150,screenY=200,wi dth=500,height=280');删除文件夹var pathname = (window.location.pathname);window.open(pathname.substring(0,(stIndexOf('.nsf')+5))+'F olderRemove?OpenForm','Folder','scrollbars,screenX=150,screenY=200,wi dth=500,height=250');移入文件夹@If(!@IsAvailable(form); @Return(@Prompt([Ok]; "警告"; "您必须先选择一个文档。
lotus常用代码1.取得固定计算机的用户名:创建计算文本域,域值@Name([CN];@UserName)2.在Notes中要上传附件,除了用菜单中的曲别针上载外,还可以创建一个按钮,公式为:@Command([EditGotoField];"Upload"); Upload为上载附件的RTF域名@Command([EditInsertFileAttachment])3.列出附件名称并使之在网页下可以下载:创建允许多值的计算文版域,域值公式(一)为:ThisDb :=@ReplaceSubstring(@Subset(@DbName; -1); "\\":" ";"/":"+");res := @Implode("<ahref=\"/" + ThisDb + "/0/" +@Text(@DocumentUniqueID) +"/$file/" + @AttachmentNames + "\">" +"<spanstyle=\"font-family:arial;font-size:8pt;color:blue;text-decoration:underline;\">"+@AttachmentNames +"</span></a>"; "<br>");"[" + res +"]" 此公式可以改变显示的文本属性域值公式(二)为:@If(@Elements(@AttachmentNames) = 0; "";@Implode("<a href=\"" + @Text(@DocumentUniqueID) + "/$file/" +@AttachmentNames + "\" target=\"_blank\">" + @AttachmentNames +"</a>"; @NewLine))域值公式(三)为:"[<ahref=\"/"+@Subset(@DbName;-1)+"/0/"+@Text(@DocumentUniqueID)+"/$File/"+@AttachmentNames+ "?OpenElement"+"\">"+@AttachmentNames+"</a>]"4.求出附件的个数:创建计算数字域,公式为:@If(@Attachments >0; @Attachments; 0)5.列出附件名称及大小:创建计算数字域,公式为:@If(@Attachments>0;@AttachmentNames +":" + @Text(@AttachmentLengths) + @NewLine;0)注意:此公式还需改进,在项与项之间多了一个分号,而分号是多余的改进后为:(一)将原来的域改为计算文本,公式为:@Implode( @AttachmentNames +":"+ @Text(@AttachmentLengths);@NewLine)(二)<table border=1 width=98% align=centercellspacing=0><trbgcolor=#BFBFFF><tdwidth=5%> </td><td width=80% align=centercolspan=4>文件名称</td><tdwidth=15% align=center>文件大小</tr>以下是“计算文本”NotesPath:=@Explode(@Subset(@DbName;-1);"\\");DbAddress:=@Implode(NotesPath;"/");tem:=@Integer(@AttachmentLengths/1024);tmpsize:=@If(@IsError(tem );"0"+"KB";@Text(tem)+" KB");xx0_1:="<tr>";xx1_1:="<td colspan=5 width=85% ><ahref=";xx0:="<tr><td width=5%align=center><input type=checkbox ";xx1:="'><td width=80% colspan=4><ahref=";xx2:="/"+DbAddress+"/0/"+@Text(@DocumentUniqueID)+"/$File/";xx3:="><font color=blue>";xx4:="</font></A></td><tdwidth=15% align=right>";xx5:=" </td></tr>";xx6_1:=xx0_1+"&a mp;nbsp;"+xx1_1+xx2+@AttachmentNames+xx3+@AttachmentNames+xx4+tmpsize+xx5; xx6:=xx0+@AttachmentNames+xx1+xx2+@AttachmentNames+xx3+@AttachmentNames+xx4+tmpsize+xx5;@If(@IsMember("[SysManager]";@UserRoles);@Implode(xx6;"");@Implode(xx6_1;" "))</table>待验证。
JavaScript初级基础教程一:语句、执行顺序、词法结构、标识符、关键字、变量、常量、alert语句和console控制台。
JavaScript执行顺序:step 1. 读入第一个代码块。
step 2. 做语法分析,有错则报语法错误(比如括号不匹配等),并跳转到step5。
step 3. 对var变量和function定义做“预编译处理”(永远不会报错的,因为只解析正确的声明)。
step 4. 执行代码段,有错则报错(比如变量未定义)。
step 5. 如果还有下一个代码段,则读入下一个代码段,重复step2。
step6. 结束。
javascript语法结构:一:字符集1、区分大小写JavaScript是区分大小写的语言所有的标识符(identifier)都必须采取一致的大小写形式但是Html并不区分大小写(尽管Xhtml区分)2、空格、换行符和格式控制符JS会忽略程序中的标识(token)之间的空格。
多数情况下也会忽略换行符除了可以识别普通的空格符(\u0020),JS也可以识别如下这些表示空格的字符*水平制表符(\u0009)*垂直制表符(\u000B)*换页符(\u000C)*不中断空白(\u00A*字节序标记(\ufeff)JS将如下字符识别为行为结束符三:注释//单行/*...*/多行四:直接量直接量(literal):就是程序中直接使用的数据值。
eg:12//数字1.2//小数“hello world” //字符串文本’hi‘ //字符串ture //布尔值false //另一个布尔值/javascript/gi //正则表达式直接量(用做模式匹配)null //空五:标识符和保留字在js中标识符用来对变量和函数进行命名,或者用作Js代码中的某些循环语句中的跳转位置的标记。
JS标识符必须以字母、下划线(_)或美元符($开始)六:类型、值和变量js数据类型分为两类:原始类型(primitive type)和对象类型(object type)。
Linker script是用于描述输出文件内存布局的脚本语言。
它的语法如下:1. 关键字:PHDRS、FILEHDR、AT、FLAGS等都是关键字。
这些关键字用于描述不同的程序头和属性。
2. 标识符:标识符用于引用程序头或其他元素。
每个程序头必须有一个唯一的标识符,并且标识符不会被放到输出文件中。
3. 符号名:符号名用于引用程序中的函数或变量。
它们可以是任意有效的标识符。
4. 属性值:属性值可以是数字、字符串或符号名。
它们用于描述程序头的属性,例如地址、大小等。
5. 语句分隔符:语句之间需要用分号(;)分隔。
6. 注释:注释以“/”开头,以“/”结尾,用于说明代码的含义和作用。
注释不会被编译器执行。
以下是一个简单的Linker script示例:```makefilePHDRS {text : AT (load_address) : TYPE = loadable : FILEHDR (512) : FLAGS (0x0) ;data : AT (load_address + 0x1000) : TYPE = loadable : FILEHDR (512) : FLAGS (0x0) ;bss : AT (load_address + 0x2000) : TYPE = loadable : FILEHDR (512) : FLAGS (0x0) ;}SECTIONS {.text : { *(.text) } : text.data : { *(.data) } : data.bss : { *(.bss) } : bss ;}```这个示例中,定义了三个程序头:text、data和bss。
每个程序头都有一个地址属性,用于指定输出文件中的加载地址。
类型属性指定了每个程序头的类型,loadable表示可加载的类型。
FLAGS属性用于描述程序头的其他属性,例如是否可写或可执行。
在SECTIONS命令中,将代码段(.text)、初始化数据段(.data)和未初始化数据段(.bss)映射到相应的程序头上。
LotusScript语言的基本知识
一、概述
LotusScript是一种和Basic相兼容的面向对象的Scripting环境,它具有强大的能够从事面向对象应用软件开发的语言范围,能够提供循环和分支的能力、数组以及访问Notes对象的能力。
判断Notes中什么时候使用LotusScript或公式语言
1)任何时候当执行该任务的函数或命令存在时,使用公式。
2)对于复杂的程序控制或循环,使用LotusScript。
3)存取或操作储存的文档数据要使用LotusScript,特别对于跨文档、跨数据库的存取。
4)若公式语言不能办到,则使用LotusScript
在Notes应用程序中访问和操作对象需要三步进行:
1.声明对象变量DIM
DIM db As NotesDatabase
2.实例化一个类将其赋值给对象变量
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 Integer
response = 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
数据类型转换
CBool(expression) 函数 '将表达式转化为布尔型
CByte(expression) 函数 '将表达式转化为字节型
CCur(expression) 函数 '将表达式转化为货币型
CDate(Strin*) 函数 '将字符串转化为日期型
CDbl(expression) 函数 '将表达式转化为双精度型
Chr(Integer) 函数 '返回整数AscII码对象的字符,例如65表示A
CInt(expression) 函数 '将表达式转化为整型
CLng(expression) 函数 '将表达式转化为长整型
CSng(expression) 函数 '将表达式转化为单精度型
CStr(expression) 函数 '将表达式转化为字符串
Hex(number) 函数 '返回十六进制
Oct(number) 函数 '返回八进制
三、数组管理
Dim MyDays(7) as String '声明一个数组一共7个元素,下标为0~6
Dim MyDay(1 to 7) as String '声明一个数组下标为1~7
ReDim MyDay(1 to 3) '重新设置数组的边界和维数,这里ReDim用于定义动态数组UBound(MyDay,1) '返回数组的上界,1表示若是多维数组,返回第一维的上界LBound(MyDay) '返回数组的下界
LBound(MyDay,2) '返回数组第2维的下界
MyDay(1) = "Sunday" '给数组元素赋值
四、语句
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
3、Do...loops和while... wend
Do while/until 条件
'语句组
Loop
Do
'语句组
loop while/until 条件
while 条件
'语句组
wend
4、For...Next
For i = 1 to 5
MyDays(i) = InputBox("Enter your work days:")
Next
5、ForAll
ForAll m in db.managers '循环显示数组db.managers中的元素 MessageBox(m)
End ForAll。