Lotus Notes程序设计随笔(精典).doc_第1页
Lotus Notes程序设计随笔(精典).doc_第2页
Lotus Notes程序设计随笔(精典).doc_第3页
Lotus Notes程序设计随笔(精典).doc_第4页
Lotus Notes程序设计随笔(精典).doc_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Lotus Notes程序设计随笔(一) 作者 建壹 Louis Lee(小哥) 一、前言 许多初学Lotus Notes(Lotus Notes以下简称Notes)的朋友常常会因为Notes学习范围太广、教育训课程太贵、中文资太少等等因素,而知该从何开始入门学习。过因为这些因素而放弃的话,其实是非常之可惜的,毕竟Notes的功能及其整合性在群组软件域中,仍然是先其它群组软件的佼佼者。 Louis为让许多初学Notes的朋友可以快速上手,所以决定着手撰写此系的文章,希望以最浅显懂的白话文为初学者建Notes程序设计最基本的观(但会会中断敢保证 :p)。过既然是随笔,所以一些顺序的编排就会那么的有系统。另外,在章文中虽然偶尔会提到一些技术观,但并属于高深的技术文件,纯粹只是观养成的文章。您想进一步了解文中提及的观时,Louis强建议直接考Notes程序设计明资库。当然,本系文章中有讹误还请各位前辈高手多多指教。 二、Notes学习方向 Notes的学习方向主要分为程序设计与系统管部份,一般通称为Notes AD(Application Development)与SA(System Administration),而这也是IBM官方的法。过,有时候AD也有人称为AP,而SA则常会与IT界常用的系统分析(System Analysis)搞混,所以在与其它朋友交时可千万要鸡同鸭讲。 但是Notes AD还是SA的知,这者并无明确界线,而且者其实是相辅相成的。以ACL的设定讲,就无法明确归纳至AD或SA任一范畴,因为管是在开发应用程序(应用程序以下简称AP)或是管Domino系统,ACL的设定都是必须的常。另外,在开发Web AP时,为让浏览器使用者可以正常浏览存取Web AP的内容与资,也须要先在服务器上做一些设定,而这也是开发人员所须要解的。 所以就Louis个人的观点而言,千万要将自己的角色局限在程序设计师或系统管员而排斥学习任何一方面的知。因为如此只会让您在执一些任务时捉襟肘罢。接下就让我们进入的正题吧! 三、Notes资库的分与基础结构 在学习Notes AP开发的第一步骤,就是要先对Notes资库有所了解,如此才会因为观足或是错误而导致在开发过程中产生阻碍。所以Louis先整一些观让您稍微了解: Top(一)Notes资库的分 以目前市场上的资库产品而言,就资型态、功能性或配置方式分成好几,如最常听到的就是关式资库(Relational Database),通常简称为RDBMS或是RDB,而最具代表性的就是Oracle、DB2、Informix、SQL等等,过这是要付授权费,如果是免费的,目前最红的该属MySQL(Notes都可以跟这些资库整合喔)。 就资型态而言,Notes属于文件式资库而非关式资库。很多初学Notes的朋友对文件式资库这名词通常会很疑惑,一是因为网上很难找到相关信息,二是对Notes还是很了解。过在之后的内容中Louis会续明文件的观。 就资库的配置方式而言,Notes则被归在分布式资库,为么呢?因为Notes 的资库可以藉由抄写机制,将各资库抄本分置到各服务器与客户端中。分布式资库的在网上有很多资,有兴趣的话可以到各大搜寻引擎网站找找。 (二)Notes资库的结构 每一个Notes资库在windows OS下是以档案格式存在的,其扩展名通常是NSF,也就是Notes Storage Facility的简写,翻译成中文就是Notes储存设备。至于扩展名NTF也是Notes范本资库,全名是Notes Template Facility,是用产生一般资库的范本。也就是,您可以用模板资库新建一个资库,而此资库中的设计是与模板资库的设计一模一样的。 按照官方的法,每个Notes资库是由四个基本组件所组成: 1.ACL: 就是Access Control List,一般翻译成存取控制清单,或是权限控制清单,顾名思义就是让资库管员可以指定使用者对该资库执何种动作。 2.设计组件: 是指套表、视界、外框、图文框、航员等等组件,而这些是Notes资库最最基础的组件,也是用让资库可以与使用者互动的基本组件,没有这些组件,资库即无法运作。 3.所谓辑: 是指程序设计师在资库中所撰写的程序语言,Lotus Script、公式、代程序是。主要是要运算处资库中的资,或者达成某些自动化的作业。 4.资: 是指储存在文件中的文字、字、日期时间、附加档案等等信息。 四、资的安全控管 要简单描述Domino对资的安全控管,基本上由外而内可以分成几关:服务器资库文件隐藏公式。 以服务器这一关,是在服务器文件中控管的,如允许或允许哪些使用者存取此服务器、允许或允许哪些使用者可以在服务器上建或删除资库等等。 是使用者被赋予存取服务器的权限,就会进入到资库安全控管这关,而这关的安全控管就是由资库ACL决定的。 再是文件的安全性控管,这是经由套表属性之安全卷标下的选项,以及者与作者位处的。 最后就是隐藏公式,其实,隐藏公式根本就算是安全性控管的方法,这只能是开发技巧。因为即使透过隐藏公式把套表中的特定位隐藏起,使用者仍然可以透过文件属性方块看到各位中的资。 Top五、ACL 既然我们在前面多次谈到ACL,稍微跟他交个朋友好像过去,所以在这儿就为大伙儿引荐他吧,呵呵。在ACL中主要有几种组件设定:使用者型、权限型、执动作。 设定使用者型是为避免ID被误用。举,通常服务器在资库ACL中都是管员权限,假设服务器ID被有心人士盗用,可能就会造成极大的破坏。所以为防范有心人士进这种破坏动,就必须在ACL中正确设定为服务器型,如此该人士即使拿到服务器ID也没办法使用Notes client对资库执任何活动。因为,服务器是人,所以会使用Notes client(过在系统管中,Louis强建议把服务器当作是人,这样有助于管概的建)。但相对的,如果未设定适当的型,也会导致某些动作无法执。 再是权限型,依权限低高依序有七层没有权限、储存者、者、作者、编辑者、设计师、管员。【没有权限】当然就能对资库执任何动作,因为进去的权都没有。Louis常戏称【储存者】为工生权限,储存者仅能输入资到资库中,输入完毕后,就无法再看到这些资。感觉就像找一位工生key in大资到资库中,但又想让工生记起这些资或是看到其它资。 先假设文件或套表中没有者位,当使用者被赋予【者】权限时,使用者就只能阅文件,而能编辑文件,当然可能建文件(可执动作之建文件选项被强制disable)。过,一但文件中有者位,使用者的名称未在者位的名称清单之中,则即使有再高的ACL权限还是无法阅该文件。 至于【作者】权限就必须跟【作者】位配合使用才具效用,当使用者被赋予【作者】权限,但作者位中的使用者名称却是别位使用者时,这时即使该份文件是目前使用者所建,但因为其名称未于作者位中,所以无法编辑该文件,仅能阅而已。顺带一提,如果使用者被赋予【编辑者】(含)以上权限,但文件中的作者位中并没有这位使用者名称,使用者还是可以编辑文件,因为【作者】权限必须跟【作者】位配合使用才具效用,也就是【编辑者】(含)以上权限受作者位的约束。 至于【设计师】权限就是多使用Domino Designer开发AP的权限。而管员则是多修改ACL的权限。 兹概整下表以供考: 管者 设计者 编辑者 作者 者 储存者 没有权 ACL设定 V 建修改设计组件 V V 编辑所有文件 V V V 编辑自已文件 V V V V 增加新文件 V V V V V 读取所有文件 V V V V V 在资库建时,会在ACL的使用者清单中看到-Default-这笔项目。-Default-的作用是,当使用者在ACL中找到适用于自己的权限时,就套用-Default-的权限。也就是,凡名称未明在ACL中或未包含在ACL的群组中,就套用-Default-的权限。在开发AP时无特殊需求,-Default-通常都设定为编辑者。 您还会看到LocalDomainServers群组与OtherDomainServers群组。顾名思义,只要是与目前资库的所在服务器位在同一Domino网域的服务器都会自动包含在LocalDomainServers群组中,除非您去names.nsf中改此群组文件,那又另当别Orz。所以此群组预设权限是管员,主要是为让相同网域内的服务器可以进抄写作业。至于OtherDomainServers群组就是跟LocalDomainServers相反,因为此群组的成员均为同网域外的Domino服务器,而且预设是无权限。有些集团企业因为有一个以上的Domino网域,所以可能会用此群组达到某些跨网域存取的需求。过,在达成此需求时,请先手动把那些位于同网域的服务器名称加到names.nsf中的OtherDomainServers群组文件喔。 最后要谈到Anonymous这个特殊项目,这是要手动新增给Web AP使用的。也就是当未透过Web ID & Password登入的使用者,均会被视为名者并套用Anonymous项目的权限。Web AP未设定此项目时,当您使用浏览器开启资库时,系统就会给您一个警告,要求您到ACL中新增此一项目喔。请特别注意,在开发Web AP时无特殊需求,请将此项目设为无权限,否则您资库中的资可能就会在网上趴趴造。 Lotus Notes程序设计随笔(二) 作者 建壹 Louis Lee(小哥) 距上一篇随笔又过10天,时间过的可真是飞快,所以赶紧再写这一篇,可能就真的又要中断,呵呵。 七、Notes应用系统 在进入开发组件的正题之前,我们先聊聊么是Notes应用系统。通常Notes应用系统也称为Notes应用程序、Notes AP等等。尽管这些名词都同,但其实都是指使用Domino Designer这个设计接口所开发出的系统,像是请假系统、加班申报系统、请采购系统、文具申购系统、ISO文件管系统,甚至是ECN系统、NBR系统等等都属之。我想稍微出这些系统名称,应该就可以稍微明了Notes是只能用当作电子邮件系统吧。 一般初学者在还没开始真正了解Notes应用系统时,通常会认为一个资库就是一支Notes应用系统。其实尽然如此,绝大部分的Notes应用系统都是由一个以上的资库所组成。 举好,就Louis的经验,建议刚导入Notes而且要开始开发系统时,第一优先开发的应该是人员组织资库,这个资库主要在储存企业人员组织信息,像是部门文件与人员文件。为么要先开发建置这资库呢?因为使用者在许多系统的窗体中,都有申请人的姓名、部门、工号等等基本信息位,而这些位值强建议要让使用者输入,而是由程序去人员组织资库中自动搜寻并带出的(通常是用UserName取得的Notes名称当作关键值)。所以,拿请假系统好,既然请假系统会跨资库到人员组织资库取值,这就算是由个资库组成一个请假系统。 当然,上述的子是比较小型的子,要又大型又比较有名的子就属Lotus Workflow,因为其每一支系统都至少要有三个资库所组成应用程序资库、人员组织资库、过程定义资库、设计储存资库(选择性)。 所以总结,一支Notes应用系统可以由一个或一个以上的Notes资库所组成。 注:您对人员组织资库没有么观的话,可以考DominoClub网站的SnowMan专中的简员工资库。虽然SnowMan兄谦虚的那是简员工资库,过其实该有的基本组件都已经有,可是麻雀虽小五脏俱全。各位只要依据各公司自己的需求再添加位就可以很完整。网址如下: http:/www.domino.idv.tw/bbs/bbs2002.B?OpenDocument八、位Item与Field应该会有朋友觉得奇怪,为何Louis是先介绍文件或是套表,反而是先介绍位呢?其实我在下笔时也有考虑过这问题,之后一方面认为如果先讲文件与套表,可能要花比较多的时间与篇幅写;另一方面觉得位是最基础的观,而且在明位观时也会稍微补充套表与文件的观,所以决定先明位。 Item与Field的中文翻译通常是位,所以常被搞混,但者其实是完全同的。严格,Item是要透过文件属性方块才可以看到的后端位;Field则是在套表上才能看到的前端位。以下是针对者的特性期之间的关性加以明: Top(一)ItemNotes资在储存上最基本的容器就是item。它可以储存文字、字、日期时间、附加档案等等资。也由于是储存容器,所以要在文件储存后才会产生,文件还没储存是会有Item存在的,您可以试着开启一份新文件,然后打开文件属性方块看看就知道。所以简而言之,文件其实就是由item所组成的。Item本身也有其属性,如储存在item中的资长、资型等等。而这些也可以从文件属性方块看到。 (二)Field至于Field,简单,在新文件上是要让使用者输入资;而在已存在的文件上,则是用显示及编辑已储存于Item中的资,所以称之为前端位,也就是Field是用与使用者互动的一个设计组件。既然是与使用者互动的设计组件,那就一定有某些方法可以达成此目的,就是透过field的程序,像是默认值公式、转译公式、验证公式、个事件可以让程序设计师撰写程序以达到上述的互动目的。 (三)Item与Field的结 既然item是后端位,field是前端位,那就一定有方法将者结起。举,在一般况下,在套表上有一个名为X1的field,当文件储存时,在此位中的值就会储存到名为X1的item中。再假设一种况,假设套表上有一个名为X1的field,在文件中另有一个名为Y1的item,要将Y1的值显示在X1 field的话,只要在X1 field的默认值公式或是计算公式填入Y1这个item名称即可。 (四)LotusScript的Item与Field因为这种前后端结构的观,所以在LotusScript中的NotesDocument别下提供几个方法操作处item,像是GetFirstItem、GetItemValue等等。如果程序设计师想要进一步处item,则可以使用NotesItem的别。这后端的别与方法通常是用处item中的值。 至于操作处Field的相关方法则被放在NotesUIDocument前端别中,像是FieldGetText、FieldSetText等等。这前端的别与方法通常是用与使用者达到互动。 九、套表 就官方的定义而言,套表是用显示动态信息的。既然是显示动态信息,就表示其中的信息是要让使用者可以看的到,深入一点,就是让使用者可以透过套表跟资库中的资作互动。所以套表在Notes中真的占有很重要的地位,而且应用层面甚广,如,单纯显示文件中的信息、让使用者输入资以建文件、编辑文件中的资以新信息、在套表事件或是其它组件加入程序以运算处文件中的资等等。在ND6中则可以直接查询RDB中的资。ND7开始可以和DB2资库做资交。 但是,回到原点,没有任何其它设计组件存在的空套表是没有实质意义的。所以当套表中存在field、按钮、动作按钮、小节、焦点信息、有程序的事件等等设计组件,才能发挥出套表的功效。相对于文件是许多item的容器,套表则是许多设计组件的容器。如在Web上可以在套表中嵌入视界美化视界在Web上的呈现。再回到套表最主要的功能建与编辑文件。就建新文件而言,当使用者在各field中输入值并储存以后就会产生一份文件,而field中的值则会储存到该文件中的各item中。另一方面,当使用者用套表开启已经存在的文件时,套表的field通常就是用显示或编辑item的值。Top十、文件其实在上述中差多已经把位、套表、文件的关系解释的差多。所以在这儿我们就只稍做补充。由于Item无法自存在,而是必须存在于文件中,所以换言之,Notes文件可以是包含一个以上Item的集合,这可是一个抽象的观。其实有些人会认为视界有显示出或是套表可以打开的才算是文件,但其实然,因为文件也有可能是隐藏在资库中而显示的。这就是常有人会看到工作区的资库显示有未阅文件,但又在视界中找到的原因。另外,也有些人会认为文件跟套表是一体的,事实上也然,套表与文件是分开的,就如同先前曾经提到,套表是为让使用者可以新增、编辑、显示文件的。但也有外,如果在套表属性中有勾选文件与套表一起储存的属性时,文件与套表就会储存在一起,但通常建议如此做。因为把套表中的所有设计组件与文件合并储存在一起,就会让文件的体积变大,进而占用硬盘空间。就像是本只有55公斤的Louis穿上几件衣服后,可能就增加到57公斤。另外,在Notes中还有一种特殊文件,就是设计文件,也就是开发者开发出的设计组件,像是套表、视界等等,也是以文件型态存在的,这些文件统称为Design Notes,过当然也可以称为Design Document。在Domino Designer的设计组件清单中,使用鼠右键单击任一组件,都可以看到该设计组件的文件属性。顺带一提,在早期Notes文件并称为Document,而是称为note,所以才有Lotus Notes这名字出现。但是把话回,因为Notes文件的资并无法像关式资库可以用key值把各资做互相关,所以产生一些资处上的。过这问题通常还是可以经由技术上解决的。而且也因为如此,Notes才能成为各种关式资库的整合接口,是吗 _Lotus Notes程序设计随笔(三) 作者 建壹 Louis Lee(小哥) 真糟糕,好像每一篇完成的时间是越越长,这次跟上次差一个月又十天。过是Louis太,最近的确有很多事情必须先处。请多多 Orz 十一、自我提升 当我写下这个标题时感觉有点心虚,因为好像在灌水,呵呵。过相信接下Louis所的,绝对是让各位初学者非常受用的。 一般刚开始开发Notes AP时,相信大部分使用者提出的需求都是主管去谈的,而您绝对是伤透脑筋在想功能写程序的那个人。虽然这是很一般的程序,但对于您的未其实得是好处。虽然可以写出一支使用者满意的AP绝对是一件很起的事,但是当您完成这支AP以后除学到很多程序技巧与成就感以外,您还获得么?这是非常值得思考的一件事。 Notes的精髓在于签核程的开发,而签核程的精髓则是各产业的Domain Know How,也就是各产业的专业知。所以当您接下主管交付的需求后,并非一味的埋头苦思程序该怎写、功能该怎开发,重要的是去了解此系统的真正目的是么、程为么要这么跑、使用者在签核底下的作业是么。所以您应该再找机会去跟提出需求的使用者了解他们的作业程序,进而从他们的脑袋学习他们域的专业知。 其实,我常常在跟使用者谈需求的时候,即使懂也装懂,很有貌的请使用者重头讲一次,反正被骂笨也无所谓,因为目的已经达到,大晚上抱着枕头哭一下就好,隔天又是好汉一条,哈哈。 当您在各产业待过以后,这些知就会逐月逐积成为您的宝藏。而这些宝藏将会在以后成为您闯荡江湖的宝刀。因为往后当您在与使用者谈需求时,由于您的宝藏取之绝用之尽,频频点头称是的将再是您而会是使用者。 我相信应该很少朋友希望自己永远靠写程序维生,尤其到一定纪以后,写程序反而是一种负担。所以接下赖以维生的将会是您的Domain Know How,帮您赚钱的绝对是您的脑袋与口才,而是写程序的技术。这时应该要很高兴您是修计算机的信息人员,而是写Notes的人员。所以,趁现在赶快积您未的财富吧!加油! 加油! Go! Go! Go! 嗯.还没结尾.请继续阅.感恩Orz 十二、视界 在随笔(二)中,Louis跟各位讨到文件与套表的关系,所以接下,我们就谈谈视界吧。 视界这个设计组件,很多人都会把它拿跟RDB(关式资库)的table作比较。其实是有那么点像,所以在ND7才会改出SQL Query视界这玩意儿。过,撇开视界与table的比较,视界的主要功能是为有系统的整资库中的一大堆文件,将这些文件中的关键信息分门别的显示出,好让使用者可以快速找到他们所需要的信息。所以您要视界是由一大堆文件所组成也为过。但因为是给使用者使用的,所以在设计一个视界的时候,最好可以先与使用者讨清楚,否则被要求重排视界的可能性非常的大。 过,从设计面看,视界应该是由直所组成,毕竟没有直的视界是没有任何用处的。在前面,我曾经把显示这个字特别标出的原因是,直除可以直接显示文件的位值以外,您也可以透过直公式处多个位值后再将其显示出。也就是,处过后的直值并非储存在文件中,而仅供显示。优点在于,您用在文件中放一大堆计算位储存一些只为显示用的值。但缺点是,直中有太多的计算公式,则视界的负担就会加重,因为它必须要计算每份文件的位值。当文件很多时,其负担是可想而知的。 我想大部份的初学朋友都知道视界选择这玩意儿吧,这玩意儿讲明白一点就是透过您指定的条件筛选要显示在此视界的文件。最严谨的条件当属【select all】,因为它会将资库中所有的文件通通显示在此视界中。最常看到的条件应该是【select form=”套表名”】,视界会根据您所指定的套表名搜寻并显示使用此套表建的文件。当然您也可以搭配多的条件设定进一步筛选文件,像是某个位等于、大于,或小于某个值。 有人可能会发现在视界选择下面有个套表公式,Louis曾经遇到一位我觉得还错的程序设计师,但他却从没用过套表公式。这真的是很重要的功能,但我要在此卖个关子,之后会搭配其它功能明。 另外,如果您已经熟悉公式与Lotus Script的话,相信您一定常用到DBLookup、DBColumn、GetDocumentByKey、GetEntryByKey等等搜寻函式与方法。使用这程序的第一要件当然就是要把视界中的第一直设定为排序。过,Louis要讲的重点是这个,我要讲的是忘记要讲啥果然纪到就是会这样.贴上文件,而是帮助数据夹筛选出符合条件的文件再显示出来。所以来源视界与数据库中的文件是不会增加的。资夹有一个很好用的功能排序。当您使用GetAllDocumentsByKey从视界取得某些文件时(NotesDocumentCollection),这些文件并会按照原视界的排序一份份排好,所以如果当您的需求是要依照某种顺序处这些文件的话,您可以先建一个资夹,并将此资夹的排序设定成您想要的,再用PutAllInFolder方法把文件通通显示到里面进去,这样您的文件就会照顺序排。过请记得,处完请务必记得再使用RemoveAllFromFolder把那些文件从资夹删除。否则这资料夹中的文件会一直增加,这样就会造成之后所处理的文件不是当次放进去的文件,而是累积已久杂七杂八的文件。 Lotus Notes程序设计随笔(四) 作者 建壹 Louis Lee(小哥) 惨了,这篇居然拖了两个月,该糟该糟。看来这篇的内容不精采一点不行。路哥为了对大家表现出最大的诚意,所以在本篇最后放上本人的照片一张,顺便征婚好了。哇哈哈哈开玩笑的啦,虽然很想赶快找到对象,不过还是不习惯把照片丢上网络抛头露脸。”本篇精采之处在于,路哥这次会谈到Lotus Script的超基础观念,看完保证有醍醐灌顶的感觉喔嘿嘿。十四、随处可得的文件这一篇是要响应某位匿名朋友的问题何谓前端文件、后端文件、屏幕上看到的文件、内存中的文件、数据库中的文件?其实在前面几篇中,已经有谈到文件的观念,不过没有以这几个项目来做区分说明就是了,所以这部份我们就当作再次温习文件的观念吧!再者,路哥认为这问题以一位初学朋友而言问得实在是很不错。而这问题我相信也是众多初学者的问题!1.后端文件后端文件的产生基本上可以分成两种透过套表产生与透过程序产生。前者当然是由使用者开启套表,并在相关字段输入数据后储存产生的。后者则是透过Lotus Script或Java产生的,例如Set doc = New NotesDocument(NotesDatabase)Call doc.Save(True, True)。您看看,这两者都有储存的程序喔,如果没有储存的程序,文件就不会在数据库中产生。当文件进入到数据库中时,我们就可以称它们为后端文件了。而在Lotus Script中是以NotesDocument类别来实现的。所以,只要是已经经过储存的文件,我们就可以统称为数据库中的文件。2.前端文件至于前端文件就很简单了,不管是新文件或是原本就已存在于数据库中的文件,只要是透过套表呈现到屏幕上的就都叫做前端文件。所以其实屏幕上看到的文件就等于前端文件,其主要的作用在与使用者达到互动。在Lotus Script中则是以NotesUIDocument类别来实现的。3.后端文件与前端文件的关系同一份文件会不会同时拥有前端文件跟后端文件呢?答案是不一定。在前面的随笔中有提过,利用套表开启一份新文件时(也就是前端文件),打开文件属性方块后是看不到什么较实际的信息的,因为还没经过储存程序,也就是说未储存的新文件就只有前端文件。但用套表开启一份已存在于数据库中的文件时,在屏幕上看到的就是前端文件,您在上面修修改改尚未储存的数据均可视为前端文件的部分。但此时开启文件属性方块,您可以看到此文件的相关属性与各字段数据,这部份则是属于已储存之后端文件的部份。若您在此时按下储存,前端文件的数据就会更新到后端文件中了。这就是前端文件与后端文件并存状况。至于在Lotus Script中怎么透过前端文件来取得后端文件呢?只要使用NotesUIDocument.Document即可,因为NotesUIDocument代表目前开启的前端文件,而Document则是指目前文件的后端文件。4.内存中的文件这部份麻,我想就跟Lotus Script或Java程序设计有关了,我尽量解释您就尽量看看,能吸收多少算多少。在Lotus Script中有NotesDocument与NotesDocumentsCollection的物件。当您使用GetDocumentByKey方法取得NotesDocument对象,或是使用GetAllDocumentsByKey取得NotesDocumentsCollection的对象时,被取得之文件对象所包含的所有数据都会被储存在内存中,等待您进一步的处理。在前面路哥也提到过,若文件中有很多数据,则太多的文件就会造成内存的负担,所以,如果您只是很单纯的处理少数资料,就请尽量使用NotesViewEntry或NotesViewEntries,因为内存只会储存文件在此视界的直栏数据,而不会储存文件的所有数据。5.结论文件是很抽象的观念,我稍微将它具体化一下,但并非一模一样。数据库就类似公文柜,视界就有点像是公文夹,文件类似现实生活中的公文。如果没有公文夹视界来将文件分门别类的保存起来,数据库就会像是一个摆放了一大堆杂乱无章文件的公文柜。我建议您可以再回到前面几篇温习一下,相信会有不同的感觉的。十五、选择开启文件的套表回到咱们的进度上吧,在本篇随笔中,这一节算是唯一在进度上的一节。路哥好像没有谈到有进度吧,因为进度在路哥的脑袋瓜子里,呵呵。相信各位在看过前三篇随笔后,对文件跟套表的关系应该有一定程度的了解,所以接下来要为各位介绍的是,当您开启一份文件时Notes是如何决定要用哪一张套表来显示文件。不懂路哥在说什么吗?没关系,我就再稍微解释一下,Notes文件并非只能使用当初建立此文件的套表来开启,也就是说一份文件可以使用不同的套表来开启,而产生的结果就是在前端呈现的文件之排版与数据会不同。例如,有A与B两张套表,A套表有两个字段AAA、BBB;B套表只有BBB字段。另外在数据库中有一份文件储存了AAA字段值111与BBB字段值222。这时使用A套表开启甲文件时,您会看到屏幕上显示111与222两个字段值。接下来再用B套表开启甲文件,此时您就只会看到222而已。也就是说同一份文件会因为套表上的排版与字段不同而有不同的显示。用最最最简单的实际例子来说明好了,假设路哥有两条牛仔裤,A牛仔裤的左边裤管剪了一个洞,而B牛仔裤则是在右边裤管剪了一个洞,当路哥穿A牛仔裤时就会露出左膝盖,穿B牛仔裤时则是露出右膝盖。即使你们会因为我穿不同的牛仔裤而看到不同的膝盖,但其实路哥本身还是有两个膝盖,并不会因为穿哪件牛仔裤而真的少了哪个膝盖。不过路妈要是看到我穿这种牛仔裤,一定又会念说,你是没钱可以买裤子喔! 好回到正题,Notes是如何决定要用哪张套表来开启文件的。采用顺序为,套表与文件合并储存视界的套表公式 Form字段值数据库的预设套表。说明如下:1.套表与文件合并储存:这在随笔2中的第3页的倒数第三段有解说过,请自行回头参考。2.视界的套表公式:这个就要特别解释了,因为曾经有两位从软件公司出身的朋友同时问过我一个问题就是,如何在视界中依不同的条件来选择不同套表开启文件。其实满惊讶的,因为我觉得这是非常基础的功能,而且是必须知道的。所以在此特别说明,答案是视界的套表公式,在哪儿呢?就在写视界选择公式下面的那个套表公式。简单来说,您可以写一行程序,假设A字段值=1时就用A套表开启,否则就用B套表开启。所以当A字段值有所变动时就会使用不同的套表来开启文件。个人觉得这功能虽然很少用,但是,却是很好用的功能。3.Form字段值:在Notes中有个保留字段叫做Form,而此字段值就是在储存用来开启文件之套表的名称,所以强烈建议使用Lotus Script建立新文件时都要指定此字段值(语法:doc.Form=”套表名称”)。4.数据库的预设套表:在套表的设计属性的基础卷标下有一个预设的数据库套表选项,若勾选此选项后,前面所说的条件若都不成立时,就会采用勾选此选项的套表来开启文件。我想应该会有朋友问说,那要是有两张套表都有勾怎办?那您就勾勾看吧,呵呵。一个数据库只能存在一张预设套表,所以后勾的赢,也就是说若A套表勾了以后,B套表又勾,那系统就会自动取消A套表的该选项。好,讲到这边整理一下,当您开启一份文件时,Notes会先参照文件当初储存时的那张套表是否有勾选套表与文件合并储存属性,若有则采用该套表开启。若没有就会参照视界的套表公式,所以若您有写套表公式时就会依照该公式的条件来开启文件。若没有写套表公式,那就会参照文件中的Form字段值,若文件中此字段值有指定套表名称,就会使用该套表来开启。若没有则会参照最后的防线数据库的预设套表。若数据库中没有预设套表呢?如果路哥没有记错,系统好像会出现找不到套表之类的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论