LotusDomino环境下编写Web浏览器多数据库检索程序

随着计算机技术的日益普及,Internet/Intranet技术得到了更加广泛的应用,在世
界范围的大量Web网点上以及公司内部的Web服务器上,都存放着大量的信息。为使这些信
息得到的合理使用,Web服务器管理员应该为用户提供方便的信息检索方法。作为群件代
表的Lotus Domino
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。运行代理时间指定为:从“操作”菜单中
选择执行。指定代理操作的文档为:运行一次(可能使用@命令)。

  代理程序的内容如下:

  Sub Initialize

   Dim ArrNsf As Variant

   Dim item As NotesItem

   '获得文档 context,因为此代理是一个$$QuerySaveAgent,所以$$QuerySaveAgent
可以访问 Context文档上的项目。

   Dim sess As New NotesSession

   Dim doc As NotesDocument

   Set doc = sess.DocumentContext

   '输出HTML页面的头部和标题:

   Print {<html>}

   Print { <head>}

   Print {<meta http-equiv="Content-Type" content="text/html;
charset=gb2312">}

   Print {<title>}

   Print "多数据库搜索"

   Print {</title>}

   Print {</head>}

   '设置HTML页面的背景颜色:

   Print {<body text="000000" bgcolor="f7f7f7">}

   '获得欲检索的数据库,存放在数组ArrNsf内:

   ArrNsf= doc.DatabaseName

   '如果没有输入检索条件,则输出提示信息:

   If Trim(Cstr(doc.Query(0)))="" Then

   Goto EmptyQuery

   End If

   Dim MatchDoc As NotesDocument

   Dim db As NotesDatabase,

   Dim collection As NotesDocumentCollection

   '下列循环从数组ArrNsf中取得欲检索的数据库进行处理:

   For nsfCount=0 To Ubound( ArrNsf )

   SearchDB=ArrNsf(nsfCount)

   Set db = sess.GetDatabase("",SearchDB)

   '出现错误则转向:

   On Error Goto BadQuery

   '获得满足查询条件的记录集:

   Set collection = db.FTSearch(doc.Query(0),0)

   On Error Goto 0

   '输出数据库标题:

   Print "<Hr>"

   Print db.title

   Print "<Hr>"

   '输出该数据库中满足条件的记录个数:

   Print "<font size=5><b>There are " & Str$(collection.Count) & " matching
documents</b></font><br>"

   '下列循环从满足条件的记录集中读取记录并输出:

   For i% = 1 To collection.Count

   Set MatchDoc = collection.GetNthDocument(i%)

   Print {<br><a href="/} &SearchDB &{/AllDocument/} & MatchDoc.UniversalID
&{?OpenDocument">}

   Print "<b>"

   '如果文档包含Subject或Title,则输出Subject或Title:

   Set item =MatchDoc.GetFirstItem( "Subject" )

   If ( item Is Nothing ) Then

   Set item = MatchDoc.GetFirstItem( "Title" )

   End If

   If Not (item Is Nothing) Then

   Print "   <b>" & item.Name & "</b>: " & item.Text

   End If

   '如果文档包含Categories,则输出Categories:

   Set item = MatchDoc.GetFirstItem( "Categories" )

   If Not (item Is Nothing) Then

   Print item.Name & "</b>: " & item.Text

   End If

   '输出文档产生日期和作者:

   createDate = MatchDoc.Created

   Print "Document create date:" &createDate

   Print " Authors: "

   Forall aAuthor In MatchDoc.Authors

   Print aAuthor

   End Forall

   Print "</a><br>"

   Next

   Next

  Out:

   Print {</body></html>}

   Exit Sub

  EmptyQuery:

   Print {<b>Search query can not be empty </b>}

   Resume Out

  BadQuery:

   Print {<b>Query is not understandable: </b>"} & doc.Query(0) & {"}

   Resume Out

  End Sub

  在本例中使用的FTSearch搜索查询内容是一个符合 Notes 全文检索规则的字符串,
搜索内容可以是一个字词或多个字词。搜索内容可以包括 ? 和 * 通配符,并且可以由
! (not)、& (and)、|(or)
操作符混合。所检索的数据库可以有全文索引,也可以没有全文索引。如果没有全文索引
,则搜索速度会慢一些。运行本程序时,应先从浏览器中输入URL: http://homeURL/Site
Search.NSF/SearchForm?OpenForm,然后选择欲检索的数据库并输入检索条件,单击
Submit按钮,则将列出所有
符合检索条件的文档。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值