操作Domino数据库的设计元素

简介:

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

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

DatabaseDesign类代码


创建DatabaseDesign对象的方法

createDatabaseDesign方法


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

Dim session  as  New NotesSession
Dim db  as NotesDatabase
Dim dbDesign  as DatabaseDesign
Set db = session.currentDatabase
Set dbDesign = createDatabaseDesign( db)

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

Dim forms  as variant
forms = dbDesign.formDocuments

3.打印出表单的标题

If  Not IsEmpty( forms)  Then
Forall formdoc  In forms
print formdoc.getItemValue(  " $Title ")( 0
end Forall

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

Dim form  as NotesDocument
set form = dbDesign.getFormByName(  " MyForm ")
If  Not form  Is  Nothing  Then
' do something with form here
End  If

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

dim otherdb  as  new NotesDatabase(  " server "" file.nsf ")
set form = dbDesign.getFormByName(  " FormToCopy ")
If  Not form  Is  Nothing  Then
dim formcopy  as NotesDocument
set formcopy = form.copytodatabase(otherdb)
call formcopy.save( truetrue)
End  If

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

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

注意: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,如需转载请自行联系原作者

目录
相关文章
|
XML Java 数据库连接
【MyBatis】MyBatis操作数据库(一)
【MyBatis】MyBatis操作数据库(一)
140 1
|
Oracle 关系型数据库 Java
实时计算 Flink版操作报错合集之cdc postgres数据库,当表行记录修改后报错,该如何修改
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
SQL 监控 关系型数据库
实时计算 Flink版操作报错合集之在设置监控PostgreSQL数据库时,将wal_level设置为logical,出现一些表更新和删除操作报错,怎么办
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
关系型数据库 Java 数据库
实时计算 Flink版操作报错合集之flinksql采PG数据库时报错,该如何解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
关系型数据库 MySQL 数据库
实时计算 Flink版操作报错合集之在处理PostgreSQL数据库遇到报错。该如何解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
消息中间件 关系型数据库 数据库
实时计算 Flink版操作报错合集之在使用RDS数据库作为源端,遇到只能同步21个任务,是什么导致的
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
SQL 数据库 Python
Django框架数据库ORM查询操作(6)
【7月更文挑战第6天】```markdown Django ORM常用数据库操作:1) 查询所有数据2) 根据ID查询 3) 精确查询 4) 分页排序
222 1
|
Java Devops API
阿里云云效操作报错合集之云效页面提示数据库保存不进去,该怎么办
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
分布式计算 大数据 数据处理
MaxCompute操作报错合集之odps数据库T1有几百行的数据,为什么出来只有5行的数据
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
107 2
|
存储 监控 安全
安全规范问题之跟数据库交互涉及的敏感数据操作需要有哪些措施
安全规范问题之跟数据库交互涉及的敏感数据操作需要有哪些措施

热门文章

最新文章