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

随着计算机技术的日益普及,Internet/Intranet技术得到了更加广泛的应用,在世界范围的大量Web网点上以及公司内部的Web服务器上,都存放着大量的信息。为使这些信息得到的合理使用,Web服务器管理员应该为用户提供方便的信息检索方法。作为群件代表的Lotus Domino集成了邮件处理、群件应用和Internet出版等功能,是Notes技术向Internet/ntranet融合开放的里程碑式的产品。在继承以往产品全部优点与功能的基础上,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 :类型为文本,显示时计算,数值为textSearchQuerySaveAgent,隐藏。

(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 " " Print db.title Print " " ' 输出该数据库中满足条件的记录个数: Print " 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 = " http://www.chinaitpower.com/} &SearchDB &{/AllDocument/} & MatchDoc.UniversalID " & { ? OpenDocument " >} Print " " ' 如果文档包含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 " " & item.Name & " : " & item.Text End If ' 如果文档包含Categories,则输出Categories: Set item = MatchDoc.GetFirstItem( " Categories " ) If Not (item Is Nothing) Then Print item.Name & " : " & item.Text End If ' 输出文档产生日期和作者: createDate = MatchDoc.Created Print " Document create date: " & createDate Print " Authors: " Forall aAuthor In MatchDoc.Authors Print aAuthor End Forall Print "
" 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/SiteSearch.NSF/SearchForm?OpenForm,然后选择欲检索的数据库并输入检索条件,单击Submit按钮,则将列出所有符合检索条件的文档。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24998103/viewspace-695413/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/24998103/viewspace-695413/

译者序 前言 第1章 Domino Web开发综述 1 1.1 为什么使用Domino 1 1.2 Domino是怎样运行的 1 1.2.1 Domino与传统数据库的区别 1 1.2.2 DominoWeb 2 1.3 开发部件 2 1.4 其他工具 3 1.5 简单的Domino Web软件例子 10 参考信息 14 本章小结 14 第2章 使用表单 16 2.1 关于表单 16 2.2 在表单中使用公式 17 2.2.1 数组和多值域 18 2.2.2 公式的类型 18 2.2.3 例子:一个组合框域 20 2.2.4 例子:$$Return域的公式 22 2.3 在表单中使用Web元素 22 2.3.1 嵌入Web元素 22 2.3.2 创建特殊用途的模板表单 22 2.3.3 例子:在$$View Template Default 表单中嵌入导航器 23 2.3.4 例子:动态嵌入式导航器 24 2.4 在表单和表单对象中使用HTML属性 25 2.4.1 标记的例子 26 2.4.2 例子:RTF文本域的属性 27 2.4.3 例子:cookie 27 2.5 使用表单操作按钮 28 2.6 使用热点 30 2.7 在表单内使用HTML 31 2.7.1 例子:单个类视图 31 2.7.2 例子:显示附属图形文件 36 2.7.3 例子:把文本域显示为文本区域 39 2.8 在表单中使用CGI变量 40 2.9 表单和搜索 42 2.9.1 定制视图搜索表单 43 2.9.2 例子:定制搜索界面 44 2.9.3 定制Site Search表单 47 2.9.4 定制Search Results表单 47 2.9.5 例子:对搜索结果表单的定制 48 2.10 定制表单提交按钮 49 2.11 使用隐藏域 49 2.12 把RTF文本显示为一个小应用程序 50 参考信息 51 本章小结 51 第3章 使用视图进行工作 54 3.1 关于视图 54 3.2 视图和Web 55 3.3 使用选择公式 56 3.4 使用视图列公式 57 3.5 使用表单公式 57 3.6 使用视图图标 58 3.7 创建视图操作按钮 59 3.8 使用单个类视图 60 3.9 在视图中使用HTML通用文本 62 3.9.1 改变行的格式 63 3.9.2 在视图中显示Java小应用程序和图像 63 3.9.3 HTML通用文本 64 3.9.4 改变视图连接的动作 66 3.9.5 控制视图连接的另外一种方式 68 3.9.6 例子:在视图中使用java Script 68 3.10 在表单中使用视图 70 3.10.1 在表单中嵌入视图 70 3.10.2 创建视图模板 70 3.10.3 例子:使用表单在视图中添加 功能 71 3.10.4 例子:使用视图在表单中添加 功能 73 3.10.5 例子:创建多个类的视图 76 3.11 在小应用程序表单中显示一个视图 79 参考信息 80 本章小结 80 第4章 使用帧结构、大纲和其他设计 元素 82 4.1 简介 82 4.2 在帧结构中设计 82 4.2.1 帧的不利之处 83 4.2.2 使用帧结构集设计元素 84 4.2.3 使用<FRAMESET>标签 88 4.3 使用大纲 94 4.3.1 同时使用帧和大纲 95 4.3.2 显示大纲小程序 97 4.4 使用其他的设计元素 97 参考信息 101 本章小结 101 第5章 编写JavaScript 103 5.1 简介 103 5.2 开始编写JavaScript 104 5.3 把JavaScript添加到Domino的表单中 106 5.4 验证域:Expense Report表单 107 5.5 计算域的值:Expense Report表单(续) 109 5.6 显示域相关的帮助 110 5.7 控制帧的使用 112 5.8 填充动态列表框 114 5.9 例子:动态下载图像 117 5.10 例子:在一个滚动按钮中预先下载 图片 119 5.11 例子:显示对话框 121 5.11.1 Order Form表单 123 5.11.2 Select Pa
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值