LotusScript中数据库文档操作
时间:2010-09-20 来源:pstn2008
一、表单
表单事件
QueryOpen '在表单打开前产生的事件
PostOpen '在文档找开后和用户获得输入焦点前发生
PostRecalc '在当前文档在重新计算之前,在文档上的所有公式执行之后发生
QuerySave '在文档保存之前发生
QueryModeChange '将当前的文档改变模式时发生,如只读模式改成编辑模式
PostModeChange '在当前的文档改变模式之后发生
QueryClose '在数据库关闭之前发生
子程序如下:
Queryopen(Source As Notesuidocument, Mode As Integer, Isnewdoc As Variant, Continue As Variant)
'代码
End Sub
Source '是一个正在访问的当前文档的NotesUIDocument对象
Mode 'True表示表单(文档)是在编辑模式下打开
Isnewdoc 'True表示表单是新的
Continue '是否继续,若是QueryOpen则停止表单的打开,若是QuerySave则停止保存操作
二、对数据库文档操作的基本步骤
1、访问数据库
NotesSession类代表当前script的Notes环境。它提供访问环境变量、地址、当前用户的信息、当前Notes平台和版本号等信息。其表达式为:
Dim Session As New NotesSession
或
Dim session as NotesSession
Set session = new NotesSession
访问数据库,其表达式为:
Dim db as NotesDatabase
Set db = Session.CurrentDatabase
2、访问视图
Dim view as NotesView
Set view = NotesDatabase.getView(viewName)
3、在视图中找文档
Set NotesDocument = NotesView.getFirstDocument
Set NotesDocument = NotesView.getNextDocument(NotesDocument)
4、将文档放进一个文件夹中
NotesDocument.putInFolder(FolderName) '若文件夹不存在,Notes将创建它
三、选择文档
1、访问当前文档方法
Dim session as NotesSession '定义当前工作区
Set session = new NotesSession '创建当前工作区,此两句可以合成一句
Dim doc as NotesDocument '定义当前文档对象
Set doc = session.DocumentContext '创建当前文档对象
If doc.isNewdoc then '若当前文档是新建的,则显示新建
MessageBox("This is a new document")
Else '若当前文档不是新建的,则显示已存在
MessageBox("This is a existing document")
End if
2、NotesUIDocument类的一些重定义光标的方法
gotoTop '定义光标在当前文档第一个可编辑的域
gotoBottom gotoNextField gotoPrevField gotoField("filedname")
3、访问文档中多值域数组操作
1)用UBound(FieldName)函数来测定多值域值的个数
Dim session as New NotesSession '创建当前工作区
Dim mymemo as NotesDocument '定义当前文档
Set mymemo = session.DocumentContext '创建当前文档
Dim MyValue as Variant '创建一个变量为可变型
MyValue = mymemo.getItemValue("Subject") '将当前文档中的Subject域的值赋给变量
If UBound(MyVale) = 0 Then '若Subject域的值只有一个值时则...
...
End If
2)获取域数组中值的方法
Dim subj as Variant '设置一个可变型变量
subj = doc.GetItemValue("Subject") '用GetItemValue获取文档中的域的多值
'上一句也可以改成subj = doc.Subject,效果一样
MessageBox(subj(0)) '访问数组中的值
4、访问数据库中视图文档的例子
Dim session as NtoesSession
Set session = New NotesSession
Dim db as NotesDatabase
Set db = session.CurrentDatabase
Dim view as NotesView
Dim doc as NotesDocument
Set view = db.getView("ByCustomer")
Set doc = view.getFirstDocument
Do while Not(doc Is Nothing)
MsgBox("最后访问是在:" & doc.LastAccessed)
doc.putInFolder("PersonalDoc")
Set doc = view.getNextDocument(doc)
Loop