LotusScript中数据库文档操作
一、表单
表单事件
QueryOpen
'在表单打开前产生的事件
PostOpen '在文档找开后和用户获得输入焦点前发生
PostRecalc '在当前文档在重新计算之前,在文档上的所有公式执行之后发生
QuerySave '在文档保存之前发生
QueryModeChange '将当前的文档改变模式时发生,如只读模式改成编辑模式
PostModeChange '在当前的文档改变模式之后发生
QueryClose '在数据库关闭之前发生
PostOpen '在文档找开后和用户获得输入焦点前发生
PostRecalc '在当前文档在重新计算之前,在文档上的所有公式执行之后发生
QuerySave '在文档保存之前发生
QueryModeChange '将当前的文档改变模式时发生,如只读模式改成编辑模式
PostModeChange '在当前的文档改变模式之后发生
QueryClose '在数据库关闭之前发生
子程序如下:
Queryopen(Source
As Notesuidocument, Mode
As Integer, Isnewdoc
As Variant, Continue
As Variant)
'代码
End Sub
'代码
End Sub
Source
'是一个正在访问的当前文档的NotesUIDocument对象
Mode 'True表示表单(文档)是在编辑模式下打开
Isnewdoc 'True表示表单是新的
Continue '是否继续,若是QueryOpen则停止表单的打开,若是QuerySave则停止保存操作
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
Set session = new NotesSession
访问数据库,其表达式为:
Dim db
as NotesDatabase
Set db = Session.CurrentDatabase
Set db = Session.CurrentDatabase
2、访问视图
Dim view
as NotesView
Set view = NotesDatabase.getView(viewName)
Set view = NotesDatabase.getView(viewName)
3、在视图中找文档
Set NotesDocument = NotesView.getFirstDocument
Set NotesDocument = NotesView.getNextDocument(NotesDocument)
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
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
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)) '访问数组中的值
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
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