中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > LOTUS > 开发心得
LotusDomino环境下编写Web浏览器多数据库检索程序
作者:未知 时间:2005-07-22 13:38 出处:Lotus中文技术站 责编:chinaitpower
              摘要:随着计算机技术的日益普及,Internet/Intranet技术得到了更加广泛的应用,在世 界范围的大量Web网点上以及公司内部的Web服务器上,都存放着大量的信息。为使这些信 息得到的合理使用,Web服务器管理员应该为用户提供方便的信息检索方法。作为群件代 表的Lotus Domino 4.5集成了邮件处理、群件应用和Internet出版等功能,是Notes技术向Internet/ Intranet融合开放的里程碑式的产品。在继承以往产品全部优点与功能的
随着计算机技术的日益普及,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按钮,则将列出所有 
符合检索条件的文档。 
关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有