开发者社区> zting科技> 正文

操作Domino数据库的设计元素

简介:
+关注继续查看

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

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

ContractedBlock.gifDatabaseDesign类代码


创建DatabaseDesign对象的方法

ContractedBlock.gifcreateDatabaseDesign方法


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

None.gifDim session as New NotesSession
None.gifDim db as NotesDatabase
None.gifDim dbDesign as DatabaseDesign
None.gifSet db = session.currentDatabase
None.gifSet dbDesign = createDatabaseDesign( db)

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

None.gifDim forms as variant
None.gifforms = dbDesign.formDocuments
None.gif

3.打印出表单的标题

None.gifIf Not IsEmpty( forms) Then
None.gifForall formdoc In forms
None.gifprint formdoc.getItemValue( "$Title")(0
None.gifend Forall
None.gif

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

None.gifDim form as NotesDocument
None.gifset form = dbDesign.getFormByName( "MyForm")
None.gifIf Not form Is Nothing Then
None.gif'do something with form here
None.gif
End If
None.gif

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

None.gifdim otherdb as new NotesDatabase( "server""file.nsf")
None.gifset form = dbDesign.getFormByName( "FormToCopy")
None.gifIf Not form Is Nothing Then
None.gifdim formcopy as NotesDocument
None.gifset formcopy = form.copytodatabase(otherdb)
None.gifcall formcopy.save(truetrue)
None.gifEnd If
None.gif

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

ExpandedBlockStart.gifSub Click(Source As Button) 
InBlock.gif Dim ss As New NotesSession,ws As New NotesUIWorkspace 
InBlock.gif Dim db As NotesDatabase,doc As NotesDocument 
InBlock.gif Dim docs As Variant 
InBlock.gif        '得到personalmailbox的路径 
InBlock.gif
 Dim   path   As   String   
InBlock.gif path   =   ss.getenvironmentstring("directory",True)   
InBlock.gif path=path+"\PersonalMailBox\" 
InBlock.gif 
InBlock.gif        '得到当前用户的帐号ID,例如michaelpang 
InBlock.gif
 namev=ss.UserName 
InBlock.gif namev1=Left(namev,Len(namev)-12
InBlock.gif namev2=Right(namev1,Len(namev1)-3
InBlock.gif path=path+namev2+".nsf" 
InBlock.gif Msgbox(path) 
InBlock.gif 
InBlock.gif Set db = ss.CurrentDatabase 
InBlock.gif Set doc = ws.CurrentDocument.Document         
InBlock.gif If (Messagebox ("你确定要执行取代设计元素吗?",36,"请确认" )  <> 6 ) Then 
InBlock.gif  Exit Sub 
InBlock.gif End If 
InBlock.gif 
InBlock.gif 
InBlock.gif        '清空原始系统的设计原色
InBlock.gif
 Dim TargetDB As NotesDatabase,TargetDBObj As DatabaseDesign 
InBlock.gif Set TargetDB = New NotesDatabase(Local,path) 
InBlock.gif 
InBlock.gif        'If Not TargetDB.IsOpen Then Messagebox "本地邮箱不能打开!!":UpdateBookmark = False :Goto TheEnd 
InBlock.gif
 Set TargetDBObj = CreateDatabaseDesign(TargetDB)                 
InBlock.gif docs = TargetDBObj.Alldesigndocuments 
InBlock.gif If Not Isempty( docs)  Then 
InBlock.gif  Print "准备删除原始设计文件,共计 " + Cstr(Ubound(docs)+1" 份文件!!" 
InBlock.gif  Forall x In docs 
InBlock.gif   x.Remove(True
InBlock.gif  End Forall         
InBlock.gif  Print "完成刪除原系统设计文件!!" 
InBlock.gif Else 
InBlock.gif  Print "原系统已无设计文件!!!" 
InBlock.gif End If 
InBlock.gif        '取得新系统设计文件         
InBlock.gif
 Dim SourceDB As NotesDatabase,SourceDBObj As DatabaseDesign 
InBlock.gif Set SourceDB = New NotesDatabase("testmail02/testserver","mail\michaelpang .nsf"
InBlock.gif        'If Not SourceDB.IsOpen Then Print "Source DataBase can't open!!":UpdateBookmark = False :Goto TheEnd 
InBlock.gif
 Set SourceDBObj = CreateDatabaseDesign(SourceDB)         
InBlock.gif docs = SourceDBObj.Alldesigndocuments 
InBlock.gif Print  "准备更新系统设计文件,共技 " + Cstr(Ubound(docs)+1" 份文件!!" 
InBlock.gif        ' 
InBlock.gif
        '复制设计到目的系统 
InBlock.gif
 Forall y In docs 
InBlock.gif  Call y.CopyToDatabase(TargetDB) 
InBlock.gif End Forall 
InBlock.gif Messagebox "完成复制设计文件!!" 
InBlock.gifTheEnd: 
InBlock.gif Exit Sub 
InBlock.gif 
ExpandedBlockEnd.gifEnd Sub
 
None.gif

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



本文转自生鱼片博客园博客,原文链接:http://www.cnblogs.com/carysun/archive/2008/05/27/DominoDesign.html,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
MySql基础-笔记2 -数据库创建、删除、选择等操作
MySql基础-笔记2 -数据库创建、删除、选择等操作
34 0
【鸿蒙】数据库--数据的删除
删除 调用删除接口,通过AbsRdbPredicates指定删除条件。该接口的返回值表示删除的数据行数,可根据此值判断是否删除成功。如果删除失败,则返回0。
29 0
09-新闻发布系统数据库-管理角色数据操作
09-新闻发布系统数据库-管理角色数据操作
113 0
数据库基础(二)----- 约束,数据库的设计、备份和还原
数据库基础(二)----- 约束,数据库的设计、备份和还原​ 约束 ✔  概念: 对表中的数据进行限定,保证数据的正确性、有效性和完整性 ✔  分类:     1. 主键约束:primary key     2. 非空约束:not null     3. 唯一约束:unique     4. 外键约束:foreign key ✔  非空约束:not null,值不能为null      1. 创建表时添加约束 CREATE TABLE stu( id INT, NAME VARCHAR(20) NOT NULL -- name为非空 );      2. 创建表
38 0
本地数据库移到服务器
本地数据库移到服务器
140 0
MySQL基础操作之数据库创建、用户操作
目录 说明 创建数据库 用户操作 版本记录 说明 数据库版本: 8.0.17 操作系统: MacBook Pro 客户端: Navicat 12 1. 创建数据库 1.
1162 0
PostgreSQL 10.1 手册_部分 III. 服务器管理_第 21 章 数据库角色_21.4. 删除角色
21.4. 删除角色 由于角色可以拥有数据库对象并且能持有访问其他对象的特权,删除一个角色 常常并非一次DROP ROLE就能解决。任何被该用户所拥有 的对象必须首先被删除或者转移给其他拥有者,并且任何已被授予给该角色的 权限必须被收回。
1175 0
Confluence 6 数据库整合的方法 1:基本流程
步骤 1:对你的插件进行记录 对你近期在 Confluence 中安装和启用的插件进行记录,这你可以在后期对插件进行重新安装或者调整。
1444 0
+关注
zting科技
文章
问答
视频
文章排行榜
最热
最新
相关电子书
更多
ORACLE 10g 数据库体系结构图
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
相关实验场景
更多