LotusScript中数据库文档操作


一、表单


表单事件

 
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