LotusDomino环境下编写Web浏览器多数据库检索程序.docx
《LotusDomino环境下编写Web浏览器多数据库检索程序.docx》由会员分享,可在线阅读,更多相关《LotusDomino环境下编写Web浏览器多数据库检索程序.docx(11页珍藏版)》请在冰豆网上搜索。
![LotusDomino环境下编写Web浏览器多数据库检索程序.docx](https://file1.bdocx.com/fileroot1/2022-12/29/440a1957-50c4-4400-ab26-44e5f658d7b2/440a1957-50c4-4400-ab26-44e5f658d7b21.gif)
LotusDomino环境下编写Web浏览器多数据库检索程序
首页-->LOTUS文章-->LotusDomino环境下编写Web浏览器多数据库检索程序
随着计算机技术的日益普及,Internet/Intranet技术得到了更加广泛的应用,在世
界范围的大量Web网点上以及公司内部的Web服务器上,都存放着大量的信息。
为使这些信
息得到的合理使用,Web服务器管理员应该为用户提供方便的信息检索方法。
作为群件代
表的LotusDomino
4.5集成了邮件处理、群件应用和Internet出版等功能,是Notes技术向Internet/
Intranet融合开放的里程碑式的产品。
在继承以往产品全部优点与功能的基础上,Domino
将原先的Notes服务器提升为用途更广泛、使用更方便的Internet/Intranet服务器。
在
Domino的帮助下用户能够快速
构建安全可靠的Web网点,开发出管理和控制Internet/Intranet的应用程序,并通过Web
浏览器实现对各类数据和服务器的交互式访问。
Domino还为用户提供了多种检索信息的方
法,而且用户甚至不必编程。
本文所要讨论的是通过简单编程实现在Web浏览器上对任意
多个数据库同时进行检
索的一种方法。
下面给出具体的实现方法:
1、创建数据库SiteSearch.NSF。
2、在数据库SiteSearch.NSF上创建Form名称为SearchForm。
3、在SearchForm上创建Field,内容如下:
(1)DatabaseNames:
类型为关键字,可编辑,允许多值,范围为:
每行输入一个关
键字。
关键字列表框内输入允许搜索的数据库列表。
假设有五个数据库允许用户检索,它们分别是:
讨论板(Discuss.NSF)、规章制度
(Institution.NSF)、技术论文(TechDocuments.NSF)、公司最新动态(
CompanyNews.NSF)、简报及公告(Bulletin.NSF),则在DatabaseNames关键字列表框内
可输入:
讨论板|Discuss.NSF
规章制度|Institution.NSF
技术论文|TechDocuments.NSF
公司最新动态|CompanyNews.NSF
简报及公告|Bulletin.NSF
(2)SearchString:
类型为文本,可编辑。
(3)$$QuerySaveAgent:
类型为文本,显示时计算,数值为textSearchQuerySaveA
gent,隐藏。
(4)SaveOptions:
类型为文本,可编辑,默认值为“0”,隐藏。
4、创建代理TextSearchQuerySaveAgent。
运行代理时间指定为:
从“操作”菜单中
选择执行。
指定代理操作的文档为:
运行一次(可能使用@命令)。
代理程序的内容如下:
SubInitialize
DimArrNsfAsVariant
DimitemAsNotesItem
'获得文档context,因为此代理是一个$$QuerySaveAgent,所以$$QuerySaveAgent
可以访问Context文档上的项目。
DimsessAsNewNotesSession
DimdocAsNotesDocument
Setdoc=sess.DocumentContext
'输出HTML页面的头部和标题:
Print{}
Print{
}
Print{charset=gb2312">}
Print{
}
Print"多数据库搜索"
Print{}
Print{}
'设置HTML页面的背景颜色:
Print{}
'获得欲检索的数据库,存放在数组ArrNsf内:
ArrNsf=doc.DatabaseName
'如果没有输入检索条件,则输出提示信息:
IfTrim(Cstr(doc.Query(0)))=""Then
GotoEmptyQuery
EndIf
DimMatchDocAsNotesDocument
DimdbAsNotesDatabase,
DimcollectionAsNotesDocumentCollection
'下列循环从数组ArrNsf中取得欲检索的数据库进行处理:
FornsfCount=0ToUbound(ArrNsf)
SearchDB=ArrNsf(nsfCount)
Setdb=sess.GetDatabase("",SearchDB)
'出现错误则转向:
OnErrorGotoBadQuery
'获得满足查询条件的记录集:
Setcollection=db.FTSearch(doc.Query(0),0)
OnErrorGoto0
'输出数据库标题:
Print"
"
Printdb.title
Print"
"
'输出该数据库中满足条件的记录个数:
Print"Thereare"&Str$(collection.Count)&"matching
documents
"
'下列循环从满足条件的记录集中读取记录并输出:
Fori%=1Tocollection.Count
SetMatchDoc=collection.GetNthDocument(i%)
Print{
&{?
OpenDocument">}
Print""
'如果文档包含Subject或Title,则输出Subject或Title:
Setitem=MatchDoc.GetFirstItem("Subject")
If(itemIsNothing)Then
Setitem=MatchDoc.GetFirstItem("Title")
EndIf
IfNot(itemIsNothing)Then
Print""&item.Name&":
"&item.Text
EndIf
'如果文档包含Categories,则输出Categories:
Setitem=MatchDoc.GetFirstItem("Categories")
IfNot(itemIsNothing)Then
Printitem.Name&":
"&item.Text
EndIf
'输出文档产生日期和作者:
createDate=MatchDoc.Created
Print"Documentcreatedate:
"&createDate
Print"Authors:
"
ForallaAuthorInMatchDoc.Authors
PrintaAuthor
EndForall
Print"
"
Next
Next
Out:
Print{