在Domino的数据库中有数据文档和设计文档两种文档。设计文档包括单,视图,代理等,这些组成了
一个数据库设计。标准的Notes类库能够很容易的访问数据文档,但是却没有提供任何方法来访问设计
文档。下面的这个DatabaseDesign类可以让我们使用LotusScript来访问设计文档,返回的是NotesDocument
对象。

要使用这个类,我们把DBDesign这个script库拷贝到数据库中。
下面是这个类的代码:

End Class


创建DatabaseDesign对象的方法

End Function


我们可以通过类中提供的属性和方法来操作数据库中的设计元素,比如:
1.使用createDatabaseDesign方法来获取一个DatabaseDesign对象

操作Domino数据库的设计元素Dim session as New NotesSession
操作Domino数据库的设计元素
Dim db as NotesDatabase
操作Domino数据库的设计元素
Dim dbDesign as DatabaseDesign
操作Domino数据库的设计元素
Set db = session.currentDatabase
操作Domino数据库的设计元素
Set dbDesign = createDatabaseDesign( db)

2.通过formDocuments属性来获取所有表单

操作Domino数据库的设计元素Dim forms as variant
操作Domino数据库的设计元素forms 
= dbDesign.formDocuments
操作Domino数据库的设计元素

3.打印出表单的标题

操作Domino数据库的设计元素If Not IsEmpty( forms) Then
操作Domino数据库的设计元素Forall formdoc 
In forms
操作Domino数据库的设计元素
print formdoc.getItemValue( "$Title")(0
操作Domino数据库的设计元素
end Forall
操作Domino数据库的设计元素

4.通过方法getFormByName获取到指定的表单

操作Domino数据库的设计元素Dim form as NotesDocument
操作Domino数据库的设计元素
set form = dbDesign.getFormByName( "MyForm")
操作Domino数据库的设计元素
If Not form Is Nothing Then
操作Domino数据库的设计元素
'do something with form here
操作Domino数据库的设计元素
End If
操作Domino数据库的设计元素

5.使用 NotesDocument.copyToDatabase 方法可以拷贝设计元素到其他数据库中

操作Domino数据库的设计元素dim otherdb as new NotesDatabase( "server""file.nsf")
操作Domino数据库的设计元素
set form = dbDesign.getFormByName( "FormToCopy")
操作Domino数据库的设计元素
If Not form Is Nothing Then
操作Domino数据库的设计元素
dim formcopy as NotesDocument
操作Domino数据库的设计元素
set formcopy = form.copytodatabase(otherdb)
操作Domino数据库的设计元素
call formcopy.save(truetrue)
操作Domino数据库的设计元素
End If
操作Domino数据库的设计元素

下面一段代码实现使用服务器上指定邮箱模板来更新本地PersonalMailBox的个人邮箱设计:

注意:1.使用这段代码的时候,需要将服务器上的模板的软删除功能关闭(”数据库---属性---高级---允许软删除“前的复选框勾掉),否则
多人同时运行这段代码的时候会出现“Notes error:someone else modified this document at the same time”的错误提示。
2.上面的方法把原来的设计删除了,又拷贝了新的设计,这样设计的文档ID就变了。

相关文章: