|
沙发
楼主 |
发表于 2006-3-22 14:08:47
|
只看该作者
re:LOTUS学习技巧 二1、lot...
LOTUS学习技巧 二<br>
<br>
1、lotus notes 5.0 数据库应用程序开发的合理顺序是怎样的?<br>
答:开发 lotus notes 5.0 数据库应用程序的合理顺序是:<br>
一、首先做好各个共享域、共享操作。<br>
二、首先开发所有表单<br>
三、其次开发所有视图<br>
四、再次开发大纲<br>
五、然后开发页面<br>
六、然后开发框架集<br>
<br>
2、如何在IE中显示视图的操作按纽?<br>
答:要在IE中显示视图的操作按纽要做到三点:<br>
一、操作必须有内容,即不能为空操作。<br>
二、操作的公式必须正确,如果是错误的也显示不出来。<br>
三、在视图的高级属性中必须起用小程序。<br>
<br>
3、怎样在notes 或 IE 中显示时使用框架集?<br>
答:要使用框架集则要做到三点:<br>
一、首先创建框架集。<br>
二、然后指定框架集中个框架的内容(内容可以是视图、大纲、或表单),并指定目标帧。<br>
三、在数据库的高级属性中指定在浏览此数据库时使用框架集,并指定框架集的名字。<br>
<br>
4、何时做大纲比较合理?<br>
答:由于大纲是组织视图的,所以如果在作好大纲后并指定了各视图,以后你又修改了视图的名字,则大纲不能提取到所要求的某个视图,则大纲便会连所有其他内容也不显示,正常情况下,在页中嵌入一个已经存在的大纲时,会看到大纲的内容,如果大纲有错误(比如,所要求的视图名不存在了)则不会看到大纲的全部内容。所以如果你在作好大纲后有修改了视图名字,则建议把大纲删除掉,重新建立一个同名大纲。<br>
<br>
5、为什么 有时 视图中的某些列在设置了分类属性后仍然象没有分类似的?但这些列在IE中显示分类却是正常的?<br>
答:你的列属性设置是正常的,只是notes的设计刷新功能不健全,也就是你怎么刷新都不会把一些无用的信息去掉,这种情况下应该从新启动notes,如果还不行就要从新启动服务器,这样就肯定可以了。这种问题在notes的其他设计中也会遇到的。<br>
<br>
6、如何在IE和Notes中都显示数据库的帧结构集?<br>
答:这需要设置数据库的启动属性,在notes启动时设置为帧结构集,在IE中启动时也设置为帧结构集。<br>
<br>
7、如何在IE中实现文档保存后返回视图?<br>
答:要在IE中实现文档保存后返回视图需要作到两点:<br>
一、在表单的“保存”操作中实现公式: @If(@Command([FileSave]);@Command([FileCloseWindow]);@Return("")<br>
二、在表单中增加一个隐藏的保留域:$$return,其属性设置为计算文本。其值用公式实现为"[/" + @Subset(@DbName;-1)+"/"+"v_make_nowdept"+"?OpenView]" 其中v_make_nowdept是个某个视图名。这样就能返回视图v_make_nowdept了。当然可以用@subset(@ViewTitle;-1)来取得打开某个文档时视图名字。但是当我们这样做时发现:在视图的“创建”操作进入表单时@ViewTitle的值却总是不能返回,这个问题还有待于进一步解决。<br>
8、我使用了帧结构集,并且是双帧结构,左边是大纲,右边是视图,但我在点左边的大纲项时,右边相应的大纲项没有刷新,并且在IE中的创建内容在notes中不能完全显示出来,在notes中创建的内容也不能完全在IE中显示出来,这是为什么?<br>
答:你肯定在大纲的属性中设置了“使用java小程序”的选项,当使用“使用java小程序”选项时可以使大纲在IE中显示出和notes中一样的效果。而使用“使用HTML ”选项时,Domino将忽略大纲的“展开”图表,和大纲的背景而仅显示大纲的文本,但使用“使用java小程序”时,Domino在右边视图的刷新和“与notes保持同步”方面都不能正确处理,从而出现上述错误。所以建议目前使用大纲时其属性还是设置为“使用HTML "为好。<br>
9、我怎样使得每次双击某个文挡时都让文挡在右面帧中显示?<br>
答:你应该在表单的属性中设置启动时在指定的帧中显示。<br>
10、我怎样在阅读文档时隐藏表单的“保存”“发布”操作?<br>
答:你应该在表单操作的安全属性页中设置当公式为真时隐藏操作,其公式一般为:!@IsDocBeingEdited|status="1"<br>
11、我怎样在按某个视图打开文档后,用户按“返回”操作能返回相应的视图?<br>
答:当你从某个视图打开文档后,相应的视图的名字就保存在公式@viewtitle中,所以返回相应的使徒只需要让“返回”按纽“运行相应的打开视图的公式如:@Command([OpenView];@If(@ViewTitle="";"v_make_nowdept";@Subset(@ViewTitle;-1)))其中v_make_nowdept是某个视图的名字,你需要把他改成你的某个视图名字。<br>
按理说IE和notes都支持公式,但实际上上述公式在IE中使用时没有问题,但在notes中使用时,有时会不能正确返回。<br>
如果用javascript则只要简单的一句 history.back()即可实现返回,但javascript不被notes支持。即只能在IE中用。<br>
如果使用公式 if(@Command([FileSave]);@Command([FileCloseWindow]);@Return("")<br>
则可以在notes中正确实现返回,但这个公式在IE中有时不能正确返回,综上所述,要既能在IE中实现准确返回和在notes中实现准确返回则必须创建两个“返回”操作其中一个使用javascript,并在notes中隐藏。一个使用公式,并在IE中隐藏。<br>
12、为什么我每次修改表单时,表格的相对位置都要从新调?<br>
答:这是因为表格设置为自动后,系统在你每次修改表单是从新给出表格的大小,所以需要每修改一次表单都要从新调一下表格的相对位置。<br>
13、我不想在IE中显示视图的名称,我该怎么办?<br>
答:你在建立视图时,要同时赋予该视图名称和别名,在所有工作作好以后,你如果不想在IE中显示该名称,则你应该用空格来取代原来视图的名称,Domino回自动寻找别名来匹配的。如果你不去掉名称的话,在IE中浏览时Domino会自动把名称显示在视图的上方的。<br>
14、我如何控制设计元素在IE中显示时,附加一些其他风格?<br>
答:如果Domino允许该种元素在IE中浏览时附加其他风格,则在设计时在该种元素的属性里面会给你一个HTML属性页,你可以在该属性页里面添加其他HTML属性。<br>
15、为什么我一点击某一大纲项,我的大纲就全没有了,取而代之的是一些没有层次的视图名称?<br>
答:这种情况肯定是你的大纲所在帧的目标帧没有设置,你应该把他设置为你想要连接的那个帧,比如:一般情况下右边的 content 帧。<br>
16、为什么我的RTF域在IE中浏览时看不到其中的内容?<br>
答:有可能你把这个域放在表格中了吧!,如果放在表格中在IE中浏览时是看不到其中的内容的解决办法是把它放在表格外边即可。也有可能你在该RTF域中设置了“使用java applet "的属性,但没有设置HTML属性,因为默认的HTML属性是RTF域的长、宽都为0,这样在浏览时是看不到的,所以你应该把它的HTML属性设置一下,比如:"HEIGHT=\"120\" WIDTH=\"600\""。<br>
17、我怎样设计表单来跟踪文档的作者?<br>
答:你可以在表单上加一个隐藏的共享域,其名字可以为 from 运行公式为:@If(@IsNewDoc ; @UserName; From),这样这个域就记录了这片文档的作者了。<br>
18、我怎样设计表单来跟踪文档是否已经发布?<br>
答:你可以在表单上加一个隐藏的域,其名字可以为 status 类型为单选按纽,初试值设置为”0“。在你的表单的发布操作中加上一句 status="1"即可来表示此文挡已经发布。<br>
19、我怎样控制文挡的操作权限?<br>
答:对已经存在的文挡来说,权限分为编辑和阅读两种,你可以给表单增加一个”修改“操作用以修改文档,(其运行公式为: @Command([EditDocument]))并设置该操作的隐藏属性为当公式为真时隐藏,这样你就可以设置当文档已经发布、目前的用户不是本文档的作者、用户不具备发布角色等任何一个条件满足时隐藏该操作,从而实现对文档修改权限的控制。典型的公式如:@IsDocBeingEdited|!@IsMember("[发布公告]";@UserRoles)|status="1"|from!=@UserName<br>
20、我如何在IE里面实现notes中的 对话框列表?(即可以添加新的项目的列表框)<br>
答:在notes中这种列表框是系统自身就有的,实现起来比较容易,但这个功能不被IE所支持,要在IE中实现该功能只能是采用另一种方式来仿效这种效果。在IE中实现时,首先要把对话框列表的属性设置为不可添加新内容。(否则在IE中不能显示为列表框,而是编辑框),其次再增加一个文本编辑域。这个域用来输入新的项目,那么怎么才能让新的项目加入到列表框中去呢?这里用到一个小技巧,这个技巧首先被NOtes开发人员所使用:列表框中的项目要动态的从一个视图中提取它的一个已经分类的列,这个列实际上就是你的新输入项目所间接存取的域。<br>
具体操作方法是:<br>
一、对应于要在IE中实现的某个对话框列表域name,你再建一个对话框列表域web_name,但要把它的属性设置为不可添加新内容。<br>
二、再建一个文本编辑域web_new_name。在name的属性设置中你要设置为“为选项使用公式”并把公式写为:@If(!@IsNewDoc & @IsDocBeingLoaded;@Unavailable;@DbColumn("":"nocache"; ""; "视图名字";1))<br>
三、在name的 input translation事件中 输入公式 @If(@ClientType = "Notes";@Trim(name); if(@Trim(web_new_name)="";@Trim(Web_name);@Trim(web_new_name)))<br>
四、在web_name的属性设置中你要设置为“为选项使用公式”并把公式写为@DbColumn("":"nocache"; ""; "v_bulletin_classsel";1)<br>
五、在notes中隐藏web_name和web_new_name域。<br>
21.在NOTES中建多数据库索引的方法<br>
---- 学习NOTES的过程中,有些人在多库索引功能的实现上往往要花些工夫,两个人都<br>
参照书中的提示做了同样的工作,但一个可以做成功,而另一个却怎么也实现不了,谁<br>
也说不清楚。笔者经过自己实验,发现有些资料上写的步骤不够清晰和全面,故而往往<br>
在此出问题。总结了以下几步供大家参考。<br>
<br>
---- 1. 对要搜索的多个目的数据库<br>
---- a. 允许跨数据库索引。这一步可以在“文件/工具/服务器管理”中选择“数据库<br>
工具”执行,也可以通过选择数据库属性中“包含在多个数据库索引中”实现。<br>
---- b. 对每一目的数据库建立全文索引。<br>
<br>
---- 2. 在服务器(或工作站)上利用SRCHSITE.NTF模板数据库创建一全局搜索数据<br>
库。<br>
<br>
---- 3. 确认当前用户在该全局搜索数据库的存取控制列表中具有"searchsiteadmin"<br>
的角色。<br>
<br>
---- 4. 在全局搜索数据库配置搜索范围。选择菜单上“创建/搜索范围配置”项即<br>
可。需要注意的是,如果要指定某几个数据库做为搜索的范围,必须对一个数据库建一<br>
个文档。<br>
<br>
---- 5. 对该全局搜索数据库建立全文索引。注意这一步应在搜索范围配置完成后进<br>
行。<br>
<br>
---- 6. 在服务器控制台键入<br>
<br>
---- LOAD UPDALL 该全局搜索数据库名<br>
<br>
---- 更新全局搜索数据库。<br>
<br>
---- 7.建立个人搜索并进行查询。<br>
<br>
---- 如果你参照上述步骤及顺序进行操作,你也可以顺利地实现多数据库索引。<br>
<br>
22.在NOTES中利用表单实现对视图的分页打印<br>
摘 要 本文讨论了将视图内容用表单以表格形式输出的方法并给出具体实例,为在<br>
NOTES中实现分页打印提供了切实有效的办法。<br>
<br>
关键词 视图,表单<br>
<br>
随着计算机应用的不断深入和普及,利用网络进行数据交换,开发计算机文档管理系统<br>
是目前计算机应用行业所面临的一项重要课题。1989年莲花发展公司发布的群件产品-<br>
-LOTUS NOTES,由于它结合了企业级电子邮件、分布式文档数据库与快速应用开发等<br>
到三位一体的强大技术、完全集成了INTERNET技术,提供给用户完整的,以网络为中心<br>
的应用技术平台,是目前最优秀的用于管理非结构化信息的工具,被广泛应用于开发办<br>
公自动化系统。<br>
<br>
视图是NOTES数据库中的文档以表格形式给出的目录清单。每个视图以不同的方式选<br>
择、排序或组织文档的清单,它是我们对文档处理的必然途径,是NOTES一个基本的组<br>
成要素。虽然NOTES本身能够对视图进行打印,但我们在实际工作中仍感到这种打印还<br>
远远不能满足用户多方面的需求;如不能以表格方式输出,不能分页打印,不方便用户<br>
操作等等... 为此笔者尝试用表单来模拟实现对视图的打印。<br>
<br>
下面给出在NOTES中实现的具体操作方法:<br>
<br>
创建数据库:通过创建一个空白数据库来实践来例。<br>
在NOTES工作台中,依次选择“文件”→“数据库”→“新建”;<br>
选择本地服务器;<br>
键入“PAGEPRINT”作为标题;<br>
选择“空白”作为模板;(若要看服务器上的模板,可以选择“模板服务器”并从列表<br>
中选择一个服务器。);<br>
不选择“继承未来的设计变化”选项;<br>
单击“确定”完成新数据库的建立。<br>
制作表单:表单是数据库的核心,提供了数据输入和输出的“框架”。域、操作、静态<br>
文本和区段等是表单的基本构成要素。在本例中,表单的作用主要有三个:一是用于将<br>
视图以表格形式输出的“打印表单”;一个是用于构造视图的“基本表单”;通过对这<br>
两个表单的设计来实现分页打印;另一个是用来保存一些中间过渡数据。<br>
①打开“PAGEPRINT”数据库,单击菜单“创建”→“设计”→“表单”进入表单设计<br>
区域后即可对表单进行设计了;下面分步介绍:<br>
<br>
*“打印表单”(名为:qqqq)的设计:<br>
<br>
域:a1、a2、a3、a4、a5(存放作者)<br>
<br>
a1_1、a1_3、a1_5、a1_7、a1_9、a1_11(书名) page、total (分别存放分页数和总<br>
页数)<br>
<br>
<br>
<br>
操作:<br>
<br>
第一页<br>
script(click)<br>
Sub Click(Source As Button)<br>
Dim workspace As New notesuiworkspace<br>
Dim uidoc As notesuidocument<br>
Set uidoc=workspace.currentdocument<br>
Dim session As New notessession<br>
Dim db As notesdatabase<br>
Dim doc As notesdocument<br>
Dim view As notesview<br>
Dim collection As notesdocumentcollection<br>
Dim r As Integer<br>
Dim i As Integer<br>
Dim char As Variant<br>
Set db=session.currentdatabase<br>
Set view=db.getview("图书基本情况表"<br>
Set doc=view.getfirstdocument ‘从第一个文档开始<br>
<br>
r=0<br>
i=1<br>
Do Until doc Is Nothing<br>
r=r+1 ‘计算文挡总数<br>
Set doc=view.getnextdocument(doc)<br>
Loop<br>
Set doc=view.getfirstdocument<br>
<br>
If ( r>;5) Then ‘超过一页<br>
<br>
char=doc.getitemvalue("name"<br>
<br>
Call uidoc.FieldSetText( "a1",Cstr(char(0)))<br>
<br>
char=doc.getitemvalue("book"<br>
<br>
Call uidoc.FieldSetText( "a1_1",Cstr(char(0)))<br>
<br>
Set doc=view.getnextdocument(doc)<br>
<br>
char=doc.getitemvalue("name"<br>
<br>
Call uidoc.FieldSetText( "a2",Cstr(char(0)))<br>
<br>
char=doc.getitemvalue("book"<br>
<br>
Call uidoc.FieldSetText( "a1_3",Cstr(char(0)))<br>
<br>
Set doc=view.getnextdocument(doc)<br>
<br>
char=doc.getitemvalue("name"<br>
<br>
Call uidoc.FieldSetText( "a3",Cstr(char(0)))<br>
<br>
char=doc.getitemvalue("book"<br>
<br>
Call uidoc.FieldSetText( "a1_5",Cstr(char(0)))<br>
<br>
Set doc=view.getnextdocument(doc)<br>
<br>
char=doc.getitemvalue("name"<br>
<br>
Call uidoc.FieldSetText( "a4",Cstr(char(0)))<br>
<br>
char=doc.getitemvalue("book")<br>
<br>
Call uidoc.FieldSetText( "a1_7",Cstr(char(0)))<br>
<br>
Set doc=view.getnextdocument(doc)<br>
<br>
char=doc.getitemvalue("name")<br>
<br>
Call uidoc.FieldSetText( "a5",Cstr(char(0)))<br>
<br>
char=doc.getitemvalue("book")<br>
<br>
Call uidoc.FieldSetText( "a1_9",Cstr(char(0)))<br>
<br>
Set doc=view.getnextdocument(doc)<br>
<br>
char=doc.getitemvalue("name")<br>
<br>
Call uidoc.FieldSetText( "a6",Cstr(char(0)))<br>
<br>
char=doc.getitemvalue("book")<br>
<br>
Call uidoc.FieldSetText( "a1_11",Cstr(char(0)))<br>
<br>
Call uidoc.fieldsettext("total",Cstr((r-1)\6+1))<br>
<br>
Else<br>
<br>
Set doc=view.getnthdocument(i)<br>
<br>
char=doc.getitemvalue("name")<br>
<br>
Call uidoc.FieldSetText( "a1",Cstr(char(0)))<br>
<br>
char=doc.getitemvalue("book")<br>
<br>
Call uidoc.FieldSetText( "a1_1",Cstr(char(0)))<br>
<br>
i=i+1<br>
<br>
If (i<r+1) Then<br>
<br>
Set doc=view.getnthdocument(i)<br>
<br>
char=doc.getitemvalue("name")<br>
<br>
Call uidoc.FieldSetText( "a2",Cstr(char(0)))<br>
<br>
char=doc.getitemvalue("book")<br>
<br>
Call uidoc.FieldSetText( "a1_3",Cstr(char(0)))<br>
<br>
i=i+1<br>
<br>
End If<br>
<br>
If (i<r+1) Then<br>
<br>
Set doc=view.getnthdocument(i)<br>
<br>
char=doc.getitemvalue("name")<br>
<br>
Call uidoc.FieldSetText( "a3",Cstr(char(0)))<br>
<br>
char=doc.getitemvalue("book")<br>
<br>
Call uidoc.FieldSetText( "a1_5",Cstr(char(0)))<br>
<br>
i=i+1<br>
<br>
End If<br>
<br>
If (i<r+1) Then<br>
<br>
Set doc=view.getnextdocument(doc)<br>
<br>
char=doc.getitemvalue("name")<br>
<br>
Call uidoc.FieldSetText( "a4",Cstr(char(0)))<br>
<br>
char=doc.getitemvalue("book")<br>
<br>
Call uidoc.FieldSetText( "a1_7",Cstr(char(0)))<br>
<br>
i=i+1<br>
<br>
End If<br>
<br>
If (i<r+1) Then<br>
<br>
Set doc=view.getnextdocument(doc)<br>
<br>
char=doc.getitemvalue("name")<br>
<br>
Call uidoc.FieldSetText( "a5",Cstr(char(0)))<br>
<br>
char=doc.getitemvalue("book")<br>
<br>
Call uidoc.FieldSetText( "a1_9",Cstr(char(0)))<br>
<br>
i=i+1<br>
<br>
End If<br>
<br>
If (i<r+1) Then<br>
<br>
Set doc=view.getnextdocument(doc)<br>
<br>
char=doc.getitemvalue("name")<br>
<br>
Call uidoc.FieldSetText( "a6",Cstr(char(0)))<br>
<br>
char=doc.getitemvalue("book")<br>
<br>
Call uidoc.FieldSetText( "a1_11",Cstr(char(0)))<br>
<br>
End If<br>
<br>
Call uidoc.fieldsettext("total",Cstr(1)) ‘显示总页数<br>
<br>
End If<br>
<br>
Call uidoc.fieldsettext("page",Cstr(1)) ‘显示分页数<br>
<br>
uidoc.refresh<br>
<br>
Dim db3 As NotesDatabase<br>
<br>
Set db3 = session.CurrentDatabase<br>
<br>
Dim view3 As notesview<br>
<br>
Dim doc3 As notesdocument<br>
<br>
Dim item As notesitem<br>
<br>
Set view3=db3.GetView("ymst")<br>
<br>
Set doc3=view3.getlastdocument<br>
<br>
‘以下保存页码信息<br>
<br>
Set item=doc3.replaceitemvalue("zys",Cstr((r-1)\6+1))<br>
<br>
Set item=doc3.replaceitemvalue("fys",Cstr(1))<br>
<br>
Set item=doc3.replaceitemvalue("number",Cstr(r))<br>
<br>
Call doc3.save(False,True)<br>
<br>
End Sub<br>
<br>
上一页<br>
<br>
|
|