下载

1下载券

加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 第3章Lotus Domino 6.5 程序设计

第3章Lotus Domino 6.5 程序设计.doc

第3章Lotus Domino 6.5 程序设计

zhengguangchuan
2013-11-26 0人阅读 举报 0 0 暂无简介

简介:本文档为《第3章Lotus Domino 6.5 程序设计doc》,可适用于IT/计算机领域

LotusDomino程序设计编程概述编程语言Domino可编程对象公式语言简介使用语法规则使用运算符使用function公式语句的计算顺序其它规则公式在表单、域和操作中的应用公式在域中的应用公式在操作中的应用公式在表单中的应用公式在视图中的应用视图选择条件视图的列视图操作公式在代理中的应用公式的其他用途通过公式访问用户环境访问当前数据库和视图通过公式访问当前文档访问当前数据库之外的数据LotusScript编程简介Domino对象模型前端用户接口类后端类对象层次结构事件类型和顺序使用LotusScript编程的提示和建议使用LotusScript访问数据库使用LotusScript访问视图和文件夹使用LotusScript访问文档LotusScript在代理中的应用编程概述编程语言公式、LotusScript、Java和JavaScript代码为Domino设计者提供了完整的编程界面。可以根据需要将代码附加到多个对象。例如:如果在表单中创建一个计算域则可附加公式来计算此域的值。也可向域的onFocus事件附加JavaScript代码此代码将在用户将焦点放置在域上的任何时候执行。还可以决定创建一个公式代理、LotusScript代理或Java代理来自动定期更新数据库中的所有文档。Domino为支持COM和OLE的开发环境提供编程界面。Domino还提供了一个用于Java应用程序和小程序的编程界面。Java应用程序和小程序可以通过访问已安装的Domino软件在本地操作也可以通过使用CORBA与IIOP协议连接到一个Domino服务器进行远程操作。在何处使用script和公式在编写代码之前要确保简单操作不能执行此任务。可使用不需要编程的表单或视图中的简单操作来设计一些对象。在编程界面中进行选择时请考虑以下准则:·公式是具有类似编程语言特征的表达式。例如:可将值赋予变量并且使用限制的控制逻辑。公式语言通过调用functions(函数)和commands(命令)与DominoDesigner接口。·通常情况下对用户当前正在处理的对象最好使用使用公式编程例如:返回域的缺省值或确定视图的选择条件。此外公式在某些场合提供更好的性能并且对简单应用程序来说比较方便。·JavaScript是跨平台、面向对象的描述性语言。通过从Objects附签中选择JSHeader可在编程窗格中编写Headerscript并且在Script区键入script。Script也可被附加到诸如onClick的特定事件上或者被附加到诸如按钮的对象上。不能在代理中编写JavaScript。Domino监控用户script的编译和加载。但是不将JavaScript存储在已编译的表单中。JavaScript最好用于Web应用程序或者单个应用程序被同时用于Notes和Web环境时。·LotusScript是完全面向对象的编程语言。它通过预定义的类与Domino接口。Domino监控用户代码的编译和加载并且自动包含Domino的类定义。LotusScript最好用于编程逻辑比较复杂的地方。LotusScript擅长访问存储的数据库数据(后端)。LotusScript提供了一些公式没有的功能例如:操作数据库存取控制列表(ACL)的能力。LotusScript的UI(前端)能力受到限制。·Java是一种完全面向对象的编程语言它与Domino的接口是通过预定义的类实现的。在代理方面它可与LotusScript相比但是它不能附加到DominoUI中的事件中。Domino监控用户的代理代码的编译和载入代码可以自己写也可以引入。Java可以用在代理、Java应用程序和小程序中可以在Domino以外编写和编译并且可以通过类接口访问Domino。Domino可编程对象下表概括了Domino中的可编程对象。它指定了对象的范围以及对象是否支持简单操作、公式、LotusScript、Java或JavaScript。图表Domino可编程对象范围Domino对象支持工作台便捷图标*公式数据库复制公式公式代理公式简单操作LotusScriptJava事件LotusScript公式导航器设计热点LotusScript公式简单操作视图或文件夹设计表单公式公式选择公式公式简单操作列公式操作公式简单操作域公式简单操作LotusScriptJavaScript隐藏操作公式公式事件公式LotusScript表单设计窗口标题公式公式区段标题公式公式文本区段存取公式公式插入子表单公式公式隐藏段落公式公式操作公式简单操作LotusScriptJavaScript隐藏操作公式公式事件公式LotusScriptJavaScript热点(按钮或操作)公式简单操作LotusScriptJavaScript热点(链接或公式弹出)公式表单中的布局区域设计热点(操作)公式简单操作LotusScriptJavaScript表单中的域设计缺省值公式公式输入转换公式公式输入校验公式公式计算域的值公式公式关键字域公式公式事件LotusScriptJavaScript文档(编辑模式)RTF文本域区段标题公式公式文本隐藏段落公式公式热点(按钮或操作)公式简单操作LotusScriptJavaScript热点(链接或弹出公式)公式下面对主要的几个编程对象作一个介绍。.代理代理是可通过许多机制触发的用户过程。代理运行在:·用户的工作站。如代理的触发器是:“手动”或“当文档已被粘贴时执行”。·包含此代理的服务器或工作站。如代理的触发器是:“在新邮件到达之前”、“新邮件到达后”、“创建或修改文档后执行”或“按时执行”。可以用公式语言、LotusScript和Java来编写代理也可以使用Domino提供的代理。因此在编写代理之前请查看一下Domino提供的代理是否可以做此工作。基于公式的代理可巡回地在数据库文档上运行。可以通过代理接口应用搜索条件来指定哪些文档将被处理。公式中的SELECT语句更好地限制了搜索。如果公式中没有包含一个SELECT语句则DominoDesigner添加一个SELECTAll语句(SELECTAll语句除外)。SELECT语句必须是公式中的第一个有效语句。LotusScript和Java代理只能运行一次。可以通过语言结构提供搜索标准和巡回方式通过代理接口应用的搜索标准只能通过NotesDatabase(LotusScript)中的UnprocessedDocuments或AgentContext(Java)中的getUnprocessedDocuments实现。下面是代理示例:以下公式根据“TotalSales”域的值为选定的文档的“Category”域写入值。如果语句中不包含“SELECTAll”语句则SELECT语句必须出现在公式中的应用语句之前。SELECTTotalSales>=FIELDCategory:="AboveQuota"图表创建代理图表使用操作公式调用代理.操作操作是与视图或表单相关联的定制处理过程。当打开视图或打开使用该表单创建的文档时操作将显示在“操作”菜单命令中或者出现在操作条的按钮中供用户使用一般在表单或者视图的上方。可以使用“公式条件为真时隐藏操作”公式有条件地限制在菜单中或操作条中操作使用。操作在用户的工作站上运行。如果在浏览器中使用操作运行在服务器上。如:做一个保存文档的操作:command(filesave)图表保存操作图表操作分别在Notes和浏览器中的显示.热点在表单设计、导航器设计、布局区域设计和RTF文本域中可以创建热点。热点在选中时激活它可能是以下几种类型:·链接热点跳转到其他对象。由设计者提供链接。·弹出式文本显示文本。设计者提供文本。·按钮执行某一操作。设计者提供简单操作、公式、LotusScript或JavaScript代码。·弹出式公式基于公式的结果显示弹出式文本。由设计者提供公式。·操作热点执行某一操作。由设计者提供简单操作、公式、LotusScript或JavaScript代码。除了按钮显示为按钮操作热点显示为高亮文本外按钮和操作热点是相同的。在Notes中使用程序热点运行在用户的工作站上。在Web中根据热点类型运行在浏览器或者服务器上。图表在页面中使用热点.表单公式表单公式确定在不同的条件下使用哪个表单填写和显示文档。表单公式是可选的。DominoDesigner按以下优先次序选择表单:)存储在文档中的表单。)表单公式中指定的表单。)文档创建时使用的表单。)数据库的缺省表单。表单公式必须返回表单名。要输入表单公式:)在Designer中打开视图。)单击“对象”附签中的“表单公式”对象。)在Script区域输入公式。表单公式将重设使用公式或LotusScript创建文档的视图操作调用的表单。图表视图的表单公式例如:一个视图具有如下表单公式:If(IsResponseDoc"Response""MainTopic")此表单公式指出视图中的文档如果是答复文档则使用“答复”表单显示否则将使用MainTopic表单显示。然而如果用户试图使用其它表单(如“PhoneNumber”)构造一个新文档(从Notes菜单中选择“创建”“PhoneNumber”)则用户将看到MainTopic表单而不是PhoneNumber表单。使用公式或LotusScript构造新文档的视图操作的结果也一样。要避免出现此问题请在表单公式中添加下面的内容。If(IsNewDocReturn(Form)"").选择公式选择公式选择显示在视图中的文档。选择公式必须以SELECT语句结束。如果公式中的最后一个语句是逻辑表达式Domino添加关键字SELECT来将它转换成SELECT语句。图表视图的选择公式.列公式列公式用来确定在视图的列中显示的内容。列公式必须返回一个文本字符串。RTF文本域不能用在列公式中图表视图的列公式.窗口标题公式窗口标题公式针对那些使用该表单创建的文档生成显示在标题条中的文字。此公式必须返回一个数字或文本值或者是一个单独的允许类型的域。RTF文本域不能用在窗口标题公式中。图表窗口标题公式.隐藏段落公式如果相关公式值为真则表单中的段落、域等将被隐藏(不显示出来)。图表段落隐藏公式.事件关联在某个对象上有一定的触发条件。图表表单事件代码.域设计公式作为域设计过程的一部分可以编写下列公式:·缺省值公式域的初始值。·输入转换公式·输入校验公式·计算域的值公式·关键字域的公式图表域的事件图表域的选型公式公式语言简介公式语言提供了语法和function可以对常量和变量进行赋值计算并执行简单的逻辑运算。变量可以是Notes文档中的域或是只用于即时公式的临时变量(也叫做临时域)。R增加了循环语句。forwhiledowhile。使用语法规则公式由一个或多个语句构成每个语句都由以下成分构成:·变量·常量·运算符·Function·关键字一个值可以是变量、常量、函数的结果或者是由上述任意元素与运算符组合而成的表达式的结果。.域变量变量有两种类型域和临时变量。公式可以访问正在处理的文档中的域。每个域的名称和类型都在数据库设计中指定。数据类型数据类型必须符合正在执行的操作或函数的要求。例如:如果TotalValue是一个数字域则不能用Prompt直接显示它因为Prompt要求一个文本参数。必须首先用Text来转换该参数:Prompt(OK"ValueofMyNumber"Text(TotalValue))列表列表是包含多值的域。某些函数和运算符就是专门用来处理列表的。例如:如果Locations是一个允许多值的域则下面的公式将返回列表中值的数目:Elements(Locations)域值域值是公式启动时在文档中指定的。如果没有存取控制的限制公式可以对域值进行修改。必须使用FIELD关键字来修改域否则变量将被当作临时变量处理。FIELD关键字还可以用来在当前文档中创建新域。下面的公式将在文本域Subject中写入域值:FIELDSubject:="NoSubject"空域空域等价于文本常量""(空双引号)。下例将检测当前文档中名为Subject的域。如果Subject的值为空将被重置为“NoSubject”否则域值将保持不变。FIELDSubject:=If(Subject="""NoSubject"Subject)因为""是一个文本常量所以要避免在非文本域中使用它。具体地说可编辑的非文本域应该使用缺省公式以保证该域包含正确类型的域值。删除域使用DeleteField从文档中删除域。FIELDBodyText:=DeleteField.临时变量临时变量只存在于公式中。其作用范围就是所在公式除了公式中赋予的属性之外不再具有其他属性。创建临时变量的语法是:variableName:=value变量取等号右边值的类型。该值可以是域的任何类型或布尔型。布尔型数据类型由特定的函数返回其值该值或为“真”(计算文本值为)或为“假”(计算文本值为)。如果变量之前没有关键字FIELD则在等号左边使用变量名将得到一个临时变量。temp:=username常量文本常量是包含在引号中的字符其中也包括空格、数字和特殊字符。要包含连续多个字符例如空格可以使用Repeat。反斜杠()在文本常量中作为转义字符使用。要在文本常量中嵌入引号须在每个嵌入的引号前加上一个反斜杠。要在文本常量中嵌入反斜杠则必须键入两个反斜杠。公式是:"Type"Yes"or"No""结果是:Type"Yes"or"No"数字常量由数字和特殊字符构成中间不加空格遵守以下规则:·整数由字符组成的不加空格的正整数。·小数点小数点可以放在数字字符的前面、后面或中间。·正负号数字的第一个字符可以是正号或负号。·科学记数数字带后缀E正号(缺省)或负号再加一个整数。E.时间日期常量时间日期常量由时间和(或)日期构成放在方括号中。格式如下·小时制时间格式为hh:mm:ss后面跟着字符AM或PM小时的范围是到秒的部分是可选的缺省为。·小时制时间格式为hh:mm:ss小时的范围是到秒的部分是可选的缺省为。·日期日期的格式为mmddyy。其中年份是可选的缺省情况下为当年年份。使用yy来指定二十世纪(yy大于或等于)或者二十一世纪(yy小于)中的一个年份使用yyyy指定任意一个年份。日期格式的有效性取决于用户在操作系统控制面板选择的日期分隔符Windows、UNIX和Macintosh的缺省分隔符是斜杠()。OS缺省分隔符是连字符()。·时间和日期时间和日期的格式为timedate或datetime。如果时间日期值相减所得的整数结果表示两者之间秒的差值。图表日期时间格式时间日期格式常量小时制结果小时制:::AM小时制:PM::PM小时制:::PM日期日期时间日期:PM::PM时间日期:PM::PM差值:PM:.通用语法规则·语句分隔符使用分号分隔多条语句。FIELDRegionalManager:=AreaManagerFIELDAreaManager:=DeleteField·空格在运算符、标点和值之间可以放置任意多个空格(也可以没有)。然而描述关键字至少需要一个空格而且文本常量之间的空格也是很重要的。例如:下面的语句是等价的。LastName","FirstNameLastName","FirstName在下面的语句中关键字SELECT后面至少要有一个空格。SELECTAll·大小写除了在文本常量中其他地方并不区分大小写。按约定关键字(例如FIELD)要大写function和command名(例如ProperCase)可以大小写混合使用。键入时可以不遵照本约定Domino会在保存公式时按照约定转换大小写。使用运算符运算符用来赋值、修改值还可以将现有的值合并到新值。.赋值运算符赋值运算符(:=)将等号右边的值赋给左边的变量右边值的类型即为变量类型。本样例把数字值赋给临时变量n。n:=.列表运算符列表运算符(:)将值并置在一个列表中。这些值必须具有相同的类型。以下是一个具有三个成员的文本列表。"London":"NewYork":"Tokyo"列表并置具有最高优先级所以列表元素中的表达式必须用括号表示:::::():=:::.单目运算符单目运算符(和)指出数字值的符号。一个无符号的数字值是正数。下列数值是相等的:().算术运算符算术运算符(*)通过加、减、乘、除四种运算将两个数值合二为一。下面运算的结果都是:*.文本运算符文本并置运算符()将两个文本值合并。下面的操作结果是变量CompanyName的值的后面加上一个逗号、一个空格和“Inc”。CompanyName",Inc".比较运算符比较运算符(=、<>、!=、><、<、>、<=和>=)用来比较相同类型的数值并产生一个逻辑结果(“真”或“假”)。下面的运算结果的逻辑值都是“真”:"London"="Lon""don""London"!="Tokyo">.逻辑运算符逻辑运算符(!、、和|)计算逻辑值。下面所有操作的结果值都是“真”。==.列表操作列表操作有以下两种类型:·并列运算符:并列运算符对两个列表进行并列运算。列表的第一个元素对应于列表的第一个元素列表的第二个元素对应于列表的第二个元素依此类推。如果一个列表的元素数量少于另一个则短一些的列表的最后一个元素将重复若干次以匹配长的列表。如果列表包含A:B:C而列表包含:则列表将作为::参加运算。对于并列的比较运算只要对应的列表元素中有一个匹配的情况即返回真值或。·交叉运算符:交叉运算符对两个列表进行排列组合。计算结果列表的每一个元素对应于每一种排列组合的情况按以下顺序出现:列表的第一个元素与列表的每一个元素匹配运算列表的元素同列表的每一个元素匹配运算如此下去直到列表的最后一个元素与列表的每一个元素运算完毕。如果在一个列表和一个非列表值之间进行运算非列表值和列表中的每一个元素进行匹配计算。图表公式运算符并列运算符交叉运算符含义***乘法*除法*加法*减法>*>大于<*<小于>=*>=大于或等于<=*<=小于或等于=*=等于!=*!=不等于运算符语句结果连接并列"A":"B":"C""":"":"""A":"B":"C""":"""A":"B":"C""""A":"B":"C""A":"B":"C""A":"B":C"连接交叉"A":"B":"C"*"":"":"""A":"B":"C"*"":"""A":"A":"A":"B":"B":"B":"C":"C":"C""A":"A":"B":"B":"C":"C"9.操作的计算顺序括号:可以使用括号对计算顺序进行明确强制首先计算括号中的操作。例如:()*()=优先级:括号外的操作从优先级开始按优先级的顺序进行。例如:乘法运算比减法运算的优先级高因此首先计算*:每个运算符的优先级请参考DesignerHelpnsf。*=从左到右:相同优先级的操作按照从左到右的顺序计算。例如:*=使用function函数执行一个特定的运算并返回一个值。函数通常的格式为:functionname(argumentargumentargumentn)函数由函数名后面紧随参数(如果有的话)构成函数名的第一个字符总是。使用分号分隔各个参数。Middle(Company)没有参数的function省略括号。如:Created将关键字参数放在方括号中。Abstract、Command、PostedCommand、DocMark、GetPortsList、PickList、MailSend、Name和Prompt使用关键字参数。Prompt(OK"Response"Y)Name(CNAUTHOR)Command(FileSave)函数计算出一个返回值并用该值替换自身。使用函数时必须满足正确的数据类型。例如:Power可以计算数字域的值:Power(Exp)Command函数Command和PostedCommand函数执行一个Notes命令。Command或PostedCommand的第一个参数是指定Notes命令的关键字参数。根据不同的Notes命令可能还需要其他参数。Command和PostedCommand的区别在于计算顺序不同。由于这些函数数量众多地位特殊因此构成了一个独立的分类称作command。每个命令均以Command或PostedCommand的第一个参数命名该参数是关键字参数。多数command均模拟菜单命令。例如:Command(AddDatabase"Legal":"Trademrknsf")Command(AdminRegisterUser)PostedCommand(DesignForms)PostedCommand(EditDown"")由于command会产生附加效果并且涉及计算顺序因此必须小心使用。command可以在便捷图标、按钮、热点和操作的公式中使用也可以在运行于当前文档上的代理公式中使用。要了解更多限制条件请参阅对command的单独描述。把NoExternalApps的环境变量设为将使所有包含command函数的公式无效。但用户不会得到错误信息只是公式不再执行。公式语句的计算顺序Notes按从上到下、从左到右的顺序计算公式完成一个语句之后再进行下一个但PostedCommand和少数Command函数必须在其他所有函数执行完毕后才能按顺序执行。除了command以外公式语言都是对后端Notes对象进行操作。例如:在公式中命名的域指的就是存储器中的该域要用FIELD关键字来修改保存的域。Command在用户界面中运行在此所做的改动只有在保存文档时才能在后端反映出来。不能同时通过后端和用户界面访问同一个文档并取得正确的值。command的计算PostedCommand函数在公式中其他所有function执行完毕后才能执行。如果编写以下公式:PostedCommand(CommandNameArgument)If(ConditionTrueStatementFalseStatement)FIELDX:="Text"则第一条语句最后执行。Command函数除了一些例外情况之外一般是按语句出现的顺序执行。这些例外的情况象PostedCommand一样在公式的最后执行包括:FileCloseWindow、FileDatabaseDelete、FileExit、NavigateNext、NavigateNextMain、NavigateNextSelected、NavigateNextUnread、NavigatePrev、NavigatePrevMain、NavigatePrevSelected、NavigatePrevUnread、NavigateToBackLink、ToolsRunBackgroundMacro、ToolsRunMacro、ViewChange、ViewSwitchForm。If函数If根据逻辑值为“真”或“假”执行此语句或其他语句:If(LogicalValueTrueStatementFalseStatement)Do函数Do按顺序执行一系列语句可以作为执行路径用在If函数中:If(LogicalValueDo(TrueStatementTrueStatement)FalseStatement)任何出现在Do函数中的Command函数将在其他所有函数之后执行不论这些函数是否在Do函数中。Return函数Return终止公式的执行:If(LogicalValueReturn("")"")其它规则.使用关键字图表公式中的关键字关键字语法描述DEFAULTfieldName:=value将一个值与域关联。如果域在正被处理的文档中已经存在则其当前值被使用。如果域不存在则当作域已经存在来处理该文档并且使用DEFAULT值。ENVIRONMENTvariable:=textValue指定一个值为环境变量环境变量放置在用户的NOTESINI文件中(Windows、OS、UNIX)或NotesPreferences文件中(Macintosh)。FIELDfieldName:=value将一个值指定给当前文档中的一个域。如果域不存在则创建该域如果已经存在替换它的内容。REM"remarks"REM{remarks}在公式中加入注释而不影响它的功能。SELECTlogicalValue指定当前文档在视图选项、复制和代理公式中是否有效。.在公式中指定表单和视图的名称在公式中指定表单和视图的名称时:·不要包含名称中的快速键字符即下划线(如果有的话)。公式语言把下划线作为下划线文字处理。·要包括级联字符(即反斜杠)但注意需要转义字符因此要输入两个反斜杠。以下公式示范了如何输入视图名“MarketingProcedures”:Command(ViewChange"MarketingProcedures").调试公式公式语言不提供正规的调试机制。可以使用Prompt设置断点并检查变量。以下的样例使用Prompt设置一个断点然后检查一个变量。在确定正确的代码以后删除调试语句。Prompt(OK"Checkpoint""AbouttocalculateLastName")LastName:=RightBack(Left(UserName"")"")Prompt(OK"ValueofLastName"LastName)prompt函数显示一个对话框并根据用户的操作返回一个文本值。Prompt用来给用户提示信息并根据用户的输入确定以后的操作过程。详细请参考DesignerR帮助文件。当我们使用prompt时会显示一个对话框需要用户响应会中断程序的执行。DominoR提供了一个新的函数StatusBar()。可以把信息打印到状态栏上无需用户响应不会中断程序执行。公式在表单、域和操作中的应用本书不是公式的使用手册不对公式作太详细的说明主要讲解在开发实例中的应用。本节以前面提到的“IBM全球认证管理系统”为例所名公式的使用。公式在域中的应用公式在域中的应用主要体现在个方面:·域的缺省值公式·输入转换公式·输入校验公式·域的隐藏公式以“StudentInfo”表单为例有一个“是否缓考”域StuDelay是单选按钮类型有两个值“是”和“否”。我们希望在新建考生信息时能有一个初始值“否”。那么这个有就不会在用户疏忽的情况下出现空值。图表域的缺省值公式当用户输入“姓名”(StuName)的时候不小心在首尾输入了空格那么就需要把这些多余的空格去掉可以使用输入转换公式。图表域的输入转换公式函数trim()就是去掉字符串首尾的空格。详细请参考Designer帮助文件。当用户输入电子邮件(StuEmail)的时候需要有“”符号可以通过输入校验公式检查输入的合法性。图表域输入校验公式注:if()函数相当于其它程序语言中的if语句有奇数个参数做多可有个参数。根据条件判断选择执行不同的语句。Contains(stringsubstring)判断subString是否包含在string中。thisvalue返回当前语的值。success返回(真)判断输入的值是否满足检查条件。failure(string)返回给出的消息当用于输入校验公式时如果输入的值不符合校验标准Failure将显示给出的消息。终止保存操作。公式if(contains(ThisValue"")successFailure("请输入正确的邮件地址!"))检查当前域的值是否包含“”,如果不包含提示错误信息。我们用“StudentInfo”表单创建一个文档并保存得下面结果。图表校验公式的使用域“备注”(StuRemark)是管理员用的对一般用户隐藏可以使用隐藏公式。图表域的隐藏公式当当前用户不具备“admin”角色时隐藏域。注:角色“admin”是在数据库的存取控制列表中有管理员设置的。UserRoles返回当前用户具备的角色使一个文本列表。IsNotMember(textValuetextListValue)判断一段文本(或文本列表)是否不包含在另一个文本列表中。该函数区分大小写。如果textValue没有包含在textListValue中则返回(True)。公式在操作中的应用前面我们用“StudentInfo”表单创建的文档都是通过工具栏上的快捷图标保存的。现在我们为该表单创建一个保存操作。)打开表单“StudentInfo”,选择菜单如下图。图表创建操作2)显示属性对话框按下图填写3)在编程窗口中写上公式)在Web中预览如下图有时文档打开后进入的是阅读模式如果想修改数据必须进入编辑模式需要创建一个操作切换文档的模式。接下来我们创建一个“编辑”操作。在Web中预览如下:命令“EditDocument”就可以在两种模式之间切换文档。我们只需要在阅读模式下看到该操作编辑模式下隐藏可以使用操作的隐藏条件。我们在创建一个操作可以关闭文档打开视图这里我们是把视图嵌入在另外的表单里所以这里看到的是打开表单的操作。预览如下图图表操作在Web中的应用公式在表单中的应用为了防止同一用户多次创建重复的文档那么我在保存文档的时候进行检查判断是否已经存在相同姓名或者学号的文档。由于我们是在Web中使用程序所以在表单的WebQuerySave事件中执行一个公式这个公式调用一个代理对文档进行检查。如果在Notes中使用请把公式写作QuerySave事件中。命令“ToolsRunMacro”专门用来执行代理尤其在Web中。需要传递一个代理的名字作为参数。公式在视图中的应用代理在视图中的应用主要体现在下面几个方面:·视图操作·视图选择条件·视图的列视图选择条件我们创建一个视图“StudentListForWeb”在Web中显示文档。这个视图要显示所有的“考生信息”文档需要一个选择条件。所有用表单“StudentInfo”创建的文档都显示在视图里。视图选择公式如下图表视图选择条件记住必须有一个Select语句。这里用比较运算符“=”把所有的用表单“StudentInfo”创建的文档都选择在视图里。这种简单的条件判断可以用“简单搜索”来实现。视图的列按照第章讲的知识我们可以为视图创建我们需要的列然后指定列的值。对于表单“StudentInfo”我们是把“年级”和班分成了两个域在视图里需要把它们合并的一列莱显示如下图:图表视图列公式有的列只有具备特定的条件才可以查看可以通过公式设置列的隐藏条件。视图中的第列只用具备“[admin]”角色的用户才能看到设置隐藏条件如下:视图操作)打开视图选择菜单)显示属性对话框输入数据如下:)为操作写入代码)预览公式在代理中的应用代理一般有可以使用公式LotusScriptJava比较简单的代理用公式具有复杂逻辑的用LotusScript和Java。前面“StudentInfo”表单有一个“作者”域和“读者”域。分别限制对文档的修改和读取。在设计初期他们的值除了包含“[admin]”角色外不清楚是否包含其它值。随着设计的深入需要修改这两个域的值。可以编写代理统一修改所有文档的值。(注:代理的运行需要一定的安全权限。))在设计窗格选择“共享代码”“代理”)在工作窗格单击“新建代理”)显示代理属性对话框输入如下:图表代理属性要注意的是:如果要创建所有的人都可以使用的代理请选择“共享”要确定代理的触发条件和目标。这个代理在Notes中使用选择的触发条件是“操作菜单选择”或者是“从代理列表中选择”。)在编程窗格中写入下面的公式图表公式在代理中的应用注:第一行通过Select语句确定代理执行的目标。Field关键字表示向域赋值这里有两个域:stuAuthors和stuReaders。都是文本列表包含三个值:当前服务器的名称、角色“admin”和文档表示的考生。servername返回服务器的名称name(actionname)用来对层次名进行操作。可以将规范格式的名称进行缩写将缩写名称扩展为规范格式在名称中找到某个部分掉转各部分的顺序以便用层次名对视图进行分类。“stu”stuno”studentscqu”用当前文档的学号形成了一个缩写的层次名用name函数转换成规范名称。公式的其他用途通过公式访问用户环境用户环境是包含数据库的服务器或工作站数据库内容:复制公式、由新邮件到达时或定时触发的代理、选择公式或列公式的用户环境是服务器。否则用户环境是用户运行公式的Notes工作站。用户名可以是专有名称也可以是非专有名称专有名称可以是规范或缩写的使用Name可更改用户名的格式。以下函数返回或处理用户环境的信息。图表访问用户环境的公式函数描述UserName返回用户名或服务器名。Name(keyname)更改用户名的格式。关键字包含CN以从一个专有名字中解析出公共名Abbreviate缩写规范格式的专有名字Canonicalize与上述作用相反ToKeyword将名字各部分按相反顺序排序用反斜杠分开(用于分类视图)。UserRoles对于服务器上的数据库返回当前用户的角色列表。MailDbName返回用户邮件数据库的服务器名和路径名。该function计算出一个包含两元素的列表。OptimizeMailAddress(address)从地址中删除无用的网络域。Platform返回用户当前运行的平台:Macintosh、NetWare、OSV、OSV、UNIX、Windows或Windows。Version返回正在运行的Notes版本(字符串)。Password(string)对字符串加密。加密后别人无法从中得到最初的字符串。访问当前数据库和视图可以直接访问正在运行公式的数据库(便捷图标除外因为它没有数据库环境)。也可以在视图环境中直接访问正在运行公式的视图。同样在文档环境中可直接访问打开文档的视图。下表列出返回数据库和视图属性的函数。图表访问数据库和视图的公式函数描述DbManager返回当前对数据库有“管理者”权限的用户、群组和服务器。返回一个列表。DbName返回当前Notes服务器和数据库的名称。返回二个元素的列表。ViewTitle返回当前视图的标题。这些函数仅工作于窗口标题和列公式中有一些会被限制。返回值都是一个字符串。函数描述Responses返回当前视图中当前文档的答复文档的编号(只限于窗口标题公式)。DocLevel返回在当前视图中当前文档的级别。DocSiblings返回与当前文档同级的文档编号(包含当前文档)。DocNumber返回当前视图中的当前文档或分类的编号。DocNumber(sep)同上只是用sep而不是句点来分隔编号。DocNumber("")同上只是仅返回编号的最右边部分。DocParentNumber返回当前视图中当前文档或分类的父文档或父分类的编号。DocParentNumber(sep)同上只是用sep而不是句点分隔编号。DocParentNumber("")同上只是仅返回编号的最右部分。DocDescendants返回后续文档的编号。包含当前文档的子文档子文档的子文档。DocDescendants(def)同上只是返回def。在def中使用以表示编号。DocDescendants(zerodef)同上只是如果没有后续文档的话则返回zero。DocDescendants(one,zerodef)同上如果只有一个后续文档的话则返回one。DocChildren返回当前文档的直接子文档的编号。DocChildren(def)同上仅返回def。在def中使用以表示编号。DocChildren(zerodef)同上只是如果没有后续文档的话则返回zero。DocChildren(one,zerodef)同上如果只有一个后续文档的话则返回one。IsCategory如果当前行的当前域右边任何域是一个分类则返回一个星号。IsCategory(True)同上只是返回Frue代替星号。IsCategory(TrueFalse)IsExpandable如果当前行是可展开的则返回一个加号。IsExpandable(True)同上只是返回True代替加号。IsExpandable(TrueFalse)同上但是如果当前行是不可展开的则返回False。通过公式访问当前文档对于表单操作、按钮、热点和域公式当前文档指被打开的文档。对于视图操作当前文档指突出显示的文档(而不是选中的文档)。对于代理当前文档指根据代理构造器选择以及SELECT关键字标准激活的文档。如果希望读取当前文档中某个域的内容请命名该域。不区分大小写但命名要准确。·如果希望编写当前文档中的域必须使用FIELD关键字或者SetField函数。不能简单的命名该域。·关键字FIELD用于赋值语句并有以下格式。如果忽略FIELD关键字则指定变量被认为是临时变量。FIELDfieldname:=expression·SetField写入域它与使用关键字FIELD的赋值语句效果相同。SetField可以嵌套到另一个语句(在R中Field关键字也可以嵌套)域名被表达成一个文本值所以它可以是一个括号中的准确名字。有一个限制是SetField只工作于已存在的域中如果文档中不存在您想写入的域则可使用FIELD赋值语句在公式开头“声明”它。SetField有以下格式。·SetField(fieldexpressionnameexpression)·DEFAULT关键字为不在文档中的域提供了一个值。如果该域存在于文档中就使用它自身的值。否则就用DEFAULT值。DEFAULTfieldname:=expression·MailSend函数邮寄文档。不带参数的MailSend函数邮寄当前文档它必须包含一个域名为“SendTo”的域该域包含收件人的名称。带有参数的MailSend构造文档并按指定参数邮寄。MailSendMailSend(toccbccsubjectbodyfieldsflags)·DeleteField函数删除域。在FIELD赋值语句中指定它作为表达式。FIELDfieldname:=DeleteField·DocMark(NoUpdate)函数防止写入公式对文档所作的更改被保存。被公式处理后的文档与以前的文档是一样的。该function只影响代理。访问当前数据库之外的数据以下函数从指定的数据库中取得数值。但不能用这些函数设置数值。·DbLookup在指定数据库的指定视图中的第一个排序列中查找指定的值。对于每个匹配搜索值的文档DbLookup返回文档或视图中的列的指定域中的值。·DbColumn返回指定数据库的指定视图中的指定列中的全部值。前三个参数对于两个函数是相同的:·NOTES:NOCACHE指定的操作是在Notes数据库上并且未使用缓存。因为NOTES是缺省的所以您可以为第一个列表元素指定空串""。如果数据是稳定的或者您访问过数据库许多次了则可以指定第二个列表元素为空串""并不使用缓存。可以为所有参数使用一个空串""表示打开一个Notes数据库而且没有缓存。·server:database指

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/41

第3章Lotus Domino 6.5 程序设计

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利