`

操作Domino数据库的设计元素

阅读更多

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

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

DatabaseDesign类代码
<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->%REM
****************************************************************************************************************
This library was originally created by Damien Katz 
of Iris Associates, Aug. 1999

This library may be freely distributed, modified 
and used only if this header is kept intact, 
unchanged 
and is distributed with the contents of the library.

Please share any fixes 
or enhancements and send them to Damien_katz@iris.com so I can add
it the library.

If you find this library useful, send me a mail message and let me know what you're using it for.

Thanks.

****************************************************************************************************************

NOTE: 
To instantiate a new DatabaseDesign objectdo not attempt to instantiate it directly,
instead 
call the createDatabaseDesign method, it will return a new instantiated object.

%
END REM

'Set this flag to true to always use the platform independent method
Const FLAG_NEVER_USE_NATIVE_API_CALLS =False

Const DESIGN_NOTE_NAME_ITEM = "$TITLE"

Const NOTE_CLASS_DOCUMENT = &H0001        ' document note 
Const NOTE_CLASS_DATA = NOTE_CLASS_DOCUMENT    ' old name for document note 
Const NOTE_CLASS_INFO = &H0002        ' notefile info (help-about) note 
Const NOTE_CLASS_FORM = &H0004        ' form note 
Const NOTE_CLASS_VIEW = &H0008        ' view note 
Const NOTE_CLASS_ICON = &H0010        ' icon note 
Const NOTE_CLASS_DESIGN = &H0020        ' design note collection 
Const NOTE_CLASS_ACL = &H0040        ' acl note 
Const NOTE_CLASS_HELP_INDEX = &H0080        ' Notes product help index note 
Const NOTE_CLASS_HELP = &H0100        ' designer's help note 
Const NOTE_CLASS_FILTER = &H0200        ' filter note 
Const NOTE_CLASS_FIELD = &H0400        ' field note 
Const NOTE_CLASS_REPLFORMULA = &H0800        ' replication formula 
Const NOTE_CLASS_PRIVATE = &H1000        

Const NOTE_CLASS_ALLNONDATA = &H7FFE

Const DESIGN_FLAG_ADD =    "A"
Const DESIGN_FLAG_ANTIFOLDER        =    "a"    '    VIEW: Indicates that a view is an antifolder view 
Const DESIGN_FLAG_BACKGROUND_FILTER = "B"    '    FILTER: Indicates FILTER_TYPE_BACKGROUND is asserted 
Const DESIGN_FLAG_INITBYDESIGNONLY="b"    '    VIEW: Indicates view can be initially built only by designer and above 
Const DESIGN_FLAG_NO_COMPOSE = "C"    '    FORM: Indicates a form that is used only for 
                                            '        query by form (not on compose menu). 
Const DESIGN_FLAG_CALENDAR_VIEW = "c"    '    VIEW: Indicates a form is a calendar style view. 
Const DESIGN_FLAG_NO_QUERY  = "D"    '     FORM: Indicates a form that should not be used in query by form 
Const DESIGN_FLAG_DEFAULT_DESIGN = "d"    '     ALL: Indicates the default design note for it"s class (used for VIEW) 
Const DESIGN_FLAG_MAIL_FILTER = "E"    '    FILTER: Indicates FILTER_TYPE_MAIL is asserted 
Const DESIGN_FLAG_PUBLICANTIFOLDER = "e"    '    VIEW: Indicates that a view is a public antifolder view 
Const DESIGN_FLAG_FOLDER_VIEW = "F"    '    VIEW: This is a V4 folder view. 
Const DESIGN_FLAG_V4AGENT = "f"    '    FILTER: This is a V4 agent 
Const DESIGN_FLAG_VIEWMAP = "G"    '    VIEW: This is ViewMap/GraphicView/Navigator 
Const DESIGN_FLAG_OTHER_DLG = "H"    '    ALL: Indicates a form that is placed in Other dialog 
Const DESIGN_FLAG_V4PASTE_AGENT = "I"    '    FILTER: This is a V4 paste agent 
Const DESIGN_FLAG_IMAGE_RESOURCE = "i"    '    FORM: Note is a shared image resource 
Const DESIGN_FLAG_JAVA_AGENT = "J" '  FILTER: If its Java 
Const DESIGN_FLAG_JAVA_AGENT_WITH_SOURCE = "j" ' FILTER: If it is a java agent with java source code. 
Const DESIGN_FLAG_LOTUSSCRIPT_AGENT = "L" '  FILTER: If its LOTUSSCRIPT 
Const DESIGN_FLAG_DELETED_DOCS = "l" '  VIEW: Indicates that a view is a deleted documents view 
Const DESIGN_FLAG_QUERY_MACRO_FILTER = "M"    '    FILTER: Stored FT query AND macro 
Const DESIGN_FLAG_SITEMAP = "m" '  FILTER: This is a site(m)ap. 
Const DESIGN_FLAG_NEW = "N"    '  FORM: Indicates that a subform is listed when making a new form.
Const DESIGN_FLAG_HIDE_FROM_NOTES = "n" '  ALL: notes stamped with this flag 
                                                    'will be hidden from Notes clients 
                                                    'We need a separate value here 
                                                    'because it Is possible To be
                                                    'hidden from V4 AND to be hidden
                                                    'from Notes, and clearing one 
                                                    'should not clear the other 
Const DESIGN_FLAG_QUERY_V4_OBJECT = "O"    '    FILTER: Indicates V4 search bar query object - used in addition to "Q" 
Const DESIGN_FLAG_PRIVATE_STOREDESK = "o" '  VIEW: If Private_1stUse, store the private view in desktop 
Const DESIGN_FLAG_PRESERVE = "P"    '    ALL: related to data dictionary 
Const DESIGN_FLAG_PRIVATE_1STUSE = "p"    '     VIEW: This is a private copy of a private on first use view. 
Const DESIGN_FLAG_QUERY_FILTER = "Q"    '    FILTER: Indicates full text query ONLY, no filter macro 
Const DESIGN_FLAG_AGENT_SHOWINSEARCH = "q"    '    FILTER: Search part of this agent should be shown in search bar 
Const DESIGN_FLAG_REPLACE_SPECIAL = "R"    '    SPECIAL: this flag is the opposite of DESIGN_FLAG_PRESERVE, used
                                                'only for the "About" and "Using" notes + the icon bitmap in the icon note 
Const DESIGN_FLAG_PROPAGATE_NOCHANGE = "r" '  DESIGN: this flag is used to propagate the prohibition of design change 
Const DESIGN_FLAG_V4BACKGROUND_MACRO = "S"    '    FILTER: This is a V4 background agent 
Const DESIGN_FLAG_SCRIPTLIB = "s"    '    FILTER: A database global script library note 
Const DESIGN_FLAG_VIEW_CATEGORIZED = "T"    '     VIEW: Indicates a view that is categorized on the categories field 
Const DESIGN_FLAG_DATABASESCRIPT = "t"    '    FILTER: A database script note 
Const DESIGN_FLAG_SUBFORM = "U"    '    FORM: Indicates that a form is a subform.
Const DESIGN_FLAG_AGENT_RUNASWEBUSER = "u"    '    FILTER: Indicates agent should run as effective user on web 

Const DESIGN_FLAG_PRIVATE_IN_DB = "V"    '     ALL: This is a private element stored in the database 
Const DESIGN_FLAG_WEBPAGE = "W"    '    FORM: Note is a WEBPAGE    
Const DESIGN_FLAG_HIDE_FROM_WEB = "w" '  ALL: notes stamped with this flag 
                                                    'will be hidden from WEB clients 
'
 WARNING: A formula that build Design Collecion relies on the fact that Agent Data"s
            '$Flags is the only Desing Collection element whose $Flags="X" 
Const DESIGN_FLAG_V4AGENT_DATA = "X" '  FILTER: This is a V4 agent data note 
Const DESIGN_FLAG_SUBFORM_NORENDER = "x"    '    SUBFORM: indicates whether
                                                'we should render a subform in
                                                'the parent form                    
Const DESIGN_FLAG_NO_MENU = "Y"    '    ALL: Indicates that folder/view/etc. should be hidden from menu. 
Const DESIGN_FLAG_SACTIONS = "y"    '    Shared actions note    
Const DESIGN_FLAG_MULTILINGUAL_PRESERVE_HIDDEN = "Z" ' ALL: Used to indicate design element was hidden 
                                            '    before the "Notes Global Designer" modified it. 
                                            '    (used with the "!" flag) 
Const DESIGN_FLAG_FRAMESET = "#"    '    FORM: Indicates that this is a frameset note  
Const DESIGN_FLAG_MULTILINGUAL_ELEMENT = "!"'    ALL: Indicates this design element supports the 
                                            '    "Notes Global Designer" multilingual addin 
Const DESIGN_FLAG_JAVA_RESOURCE = "@"    '    FORM: Note is a shared Java resource 
Const DESIGN_FLAG_HIDE_FROM_V3 = "3"    '    ALL: notes stamped with this flag 
                                            '        will be hidden from V3 client 
Const DESIGN_FLAG_HIDE_FROM_V4 = "4"    '    ALL: notes stamped with this flag 
                                                '    will be hidden from V4 client 
Const DESIGN_FLAG_HIDE_FROM_V5 = "5"    '     FILTER: "Q5"= hide from V4.5 search list 
                                            '    ALL OTHER: notes stamped with this flag 
                                            '        will be hidden from V5 client 
Const DESIGN_FLAG_HIDE_FROM_V6 = "6"    '    ALL: notes stamped with this flag 
                                                    'will be hidden from V6 client 
Const DESIGN_FLAG_HIDE_FROM_V7 = "7"    '    ALL: notes stamped with this flag 
                                                    'will be hidden from V7 client 
Const DESIGN_FLAG_HIDE_FROM_V8 = "8"    '    ALL: notes stamped with this flag 
                                                    'will be hidden from V8 client 
Const DESIGN_FLAG_HIDE_FROM_V9 = "9"    '    ALL: notes stamped with this flag 
                                                    'will be hidden from V9 client 
Const DESIGN_FLAG_MUTILINGUAL_HIDE = "0"    '    ALL: notes stamped with this flag 
                                                    'will be hidden from the client 
                                                    'usage is for different language
                                                    'versions of the design list to be
                                                    'hidden completely                


'    These are the flags that help determine the type of a design element.
'
    These flags are used to sub-class the note classes, and cannot be
'
    changed once they are created (for example, there is no way to change
'
    a form into a subform). 

Const DESIGN_FLAGS_SUBCLASS = "UW#yi@GFXstm"

'    These are the flags that can be used to distinguish between two
'
    design elements that have the same class, subclass (see DESIGN_FLAGS_SUBCLASS),
'
    and name. 

Const DESIGN_FLAGS_DISTINGUISH = "nw3456789"

Const ERR_BASE_CLASS_INSTANTIATED = 10452
Const ERR_BASE_CLASS_INSTANTIATED_MESSAGE = "You cannot instantiate this class directly"

Public Class DatabaseDesignClass DatabaseDesign
    
'PUBLIC MEMBERS
    Public cacheDocuments As Integer
    
    
'PRIVATE MEMBERS    
    Private db As NotesDatabase
    
Private forms As Variant
    
Private views As Variant
    
Private filters As Variant
    
Private fields As Variant
    
    
Sub new()Sub new( database As NotesDatabase)
        
If isAbstractClass Then
            
'this prevents the base class from being instantiated directly
            Error ERR_BASE_CLASS_INSTANTIATED, ERR_BASE_CLASS_INSTANTIATED_MESSAGE
        
End If<span st
分享到:
评论

相关推荐

    lotus domino 数据库隐藏设计明细教程

    在Lotus Domino数据库中,隐藏设计元素是一种管理数据库设计的有效方式,它可以帮助开发人员和管理员保护敏感信息,防止非授权用户修改或查看特定的设计元素。本教程将深入探讨如何实现Lotus Domino数据库的隐藏设计...

    如何使用LotusScript操作Domino设计元素

    总之,通过`LotusScript`的`DatabaseDesign`类,开发者可以更灵活地管理和操作Domino数据库中的设计元素,实现对数据库设计的动态调整和定制,从而提高开发效率和应用程序的灵活性。如果你在使用过程中遇到问题或有...

    domino数据库存取控制列表(acl)

    - **设计者**:专注于数据库设计的修改,包括表单、视图等设计元素,且可通过子选项管理LotusScript或Java代理的创建权限,确保设计层面的安全性。 - **管理者**:享有最高权限,不仅能够全面操作数据库中的所有...

    domino数据库与关系型数据库的数据交互研究.pdf

    1. Domino数据库文件(.NSF):它包含应用程序的数据和设计元素,如表单、域、视图和文件夹等。设计元素定义了应用的基础,而数据文档存储用户提交的信息,类似于在表单中保存的文档。 2. 表单(Form):在NSF...

    Domino基础开发元素学习

    4. **Lotus实例**:在提供的压缩包文件中,"Lotus实例"可能包含了实际操作的示例,帮助学习者更直观地理解和掌握Domino数据库设计的基本元素。这些实例可能包括已设计好的表单、视图和域,以及如何创建和修改它们的...

    Lotus Domino BS开发--熟悉并使用Lotus的各种设计元素--数据库介绍

    本文将深入探讨Lotus Domino数据库的创建、删除、属性设置以及设计元素的使用。 **创建数据库** 在Lotus Domino中,数据库是存储数据和应用逻辑的核心组件。创建数据库主要通过Lotus Domino Designer工具进行。有...

    IBM Lotus Domino设计基础概述

    Lotus Domino的设计基础涵盖了软件的体系结构、开发工具的使用方法,以及在设计Domino数据库时会使用到的各种设计元素。 在Domino Designer中,开发者能够创建和维护各种设计元素,包括页面、表单、视图、大纲、帧...

    Domino数据库存取控制列表(ACL)基本知识

    - 可以修改数据库的设计元素,如表单、视图等。 - 可通过设置进一步赋予创建LotusScript/Java代理等权限。 - 不允许设计者创建LotusScript或Java代理的话,他们将无法修改数据库中的相关脚本或代码。 - **管理者*...

    修复Domino数据库视图索引的两种方法

    以下是两种修复Domino数据库视图索引的方法: ### 第一种方法:使用`load fixup`和`load updall -R` 1. **`load fixup`命令**:此命令用于检查并修复数据库的逻辑一致性。它会扫描数据库的所有部分,包括视图索引...

    恢复Notes数据库隐藏设计

    在IBM Notes(原名Lotus Notes)环境中,数据库设计对于应用程序的功能至关重要。有时,由于各种原因,数据库设计可能会被隐藏或者锁定,导致无法直接访问和修改。在这种情况下,需要采取特定的方法来恢复隐藏的设计...

    Domino Notes流程数据库

    学习Domino Notes流程数据库,不仅可以掌握如何构建和管理高效的工作流程,还可以深入了解其背后的数据库设计理念,包括表单设计、视图组织、规则设置等。这对于想要在企业级协作平台领域提升技能的IT专业人士来说,...

    Lotus Domino BS开发--熟悉并使用Lotus的各种设计元素--表格+图像+数据库资源

    本文将详细探讨表格、图像、数据库资源等核心设计元素,以帮助开发者更好地理解和操作这些元素。 首先,让我们关注表格。在Designer中,创建表格是一个直观的过程,可以通过“创建”菜单的“表格”选项来实现。表格...

    Domino 开发基础知识

    2. ** 数据库设计**:学习如何创建和管理.NSF数据库,包括设计元素如表单、字段、样式表和图标。 3. ** 表单**:表单是数据输入和展示的核心,要了解如何创建交互式表单,设置验证规则,以及使用计算字段和脚本。 ...

    新手经常遇到domino问题的总结

    - **设计元素**:理解和使用代理、表单、视图、样式表等设计元素是开发应用的基础。 5. **Web应用程序开发**: - **XPages**:作为Domino的现代Web开发框架,XPages可能对新手来说较为复杂,需要学习JSF(Java...

    如何对数据库进行签名

    这样做的目的是为了确保数据库中的所有设计元素都能在新的环境中获得相应的权限,尤其是代理程序的执行权限。 #### 四、签名操作步骤详解 以下是详细的数据库签名操作步骤: 1. **打开数据库**:首先,通过...

    domino web开发指南

    在Domino平台上开发,需要了解其特有的设计元素,例如视图、文档、表单、代理等。视图相当于数据库中的索引,帮助用户快速定位数据;文档是存储在数据库中的信息记录,每条记录可以包含不同字段;表单是用户与Domino...

    Domino表单导入导出XML方法

    在Lotus Domino开发中,XML(eXtensible Markup Language)是一种重要的数据交换格式,而DXL(Domino XML)是IBM Lotus Domino特有的XML表示,用于表单、视图、数据库设计等元素的导入和导出。从Domino 6.0开始,...

    lotus domino webservice建立和调用

    3. **发布Web服务**:将生成的WSDL文件和相关的Lotus Domino设计元素(如表单、视图、代理等)部署到Domino服务器上,这样服务就可供外部应用使用了。 接下来,我们要讨论如何调用这些Web服务,这通常涉及到以下两...

    DOMINO面试及答案

    - Domino数据库文件以`.nsf`(Notes Storage Facility)为后缀。 - Domino模板文件以`.ntf`(Notes Template File)为后缀。 6. **验证者标识符文件** - 管理员注册用户时使用的验证文件是`cert.id`。 7. **...

Global site tag (gtag.js) - Google Analytics