下面给出具体的实现方法:
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 "<Hr>" Print db.title Print "<Hr>" '输出该数据库中满足条件的记录个数: Print "<font size=5><b>There are " & Str$(collection.Count) & " matching documents</b></font><br>"