Lotusscript Class To Convieniently Access Design Elements

Inside of a Domino Database exists data documents and design documents. The
design documents are the forms, views, agents, etc that make up a databases
design. The standard Notes classes allow easy access to the data documents,
but do not provide any easy methods for accessing the design.

The purpose of the DatabaseDesign class is to allow you easy access to the
design documents in a DominoDatabase in LotusScript. It returns the design
documents, at which point they can be examined, modified, copied to other
databases or deleted. The documents are returned as standard NotesDocument
objects, so once retrieved you can perform any operation on them that is
allowed in a regular NotesDocument.

---How To Use ---
To use the DatabaseDesign class, you must first copy and paste the DBDesign
script library into the database where you wish to use it.

Then in the script which you need to use the library, add this line to the
Options section.

Use "DBDesign"

Then to instantiate a new DatabaseDesign object, call the createDatabaseDesign
function.

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

'To get all the forms in a database, simply get the formDocuments property.

Dim forms as variant
forms = dbDesign.formDocuments

'Check to make sure there are forms before processing
If Not IsEmpty( forms) Then
Forall formdoc In forms
'This prints out all the form names
print formdoc.getItemValue( "$Title")(0)
end Forall
End If

' To get a specific form in a database, pass in the form name to the
getFormByName method.

Dim form as NotesDocument
set form = dbDesign.getFormByName( "MyForm")

If Not form Is Nothing Then
'do something with form here
End If

'To copy a design element to another database, use the
NotesDocument.copyToDatabase method

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(true, true)
End If




---Properties---
Property agentDocuments as Variant
Returns all agents as an array of NotesDocuments. If none could be retrieved,
it returns a empty variant.

Property cacheDocuments as Integer
This is a readable and writable property. When true, it caches the retrieval
of design notes in memory to speed up subsequent retrievals. It is true by
default.

Property databaseScriptDocuments as Variant
Returns all database scripts as an array of NotesDocuments, typically there
will be only one per database. If none could be retrieved, it returns a empty
variant. Read only.

Property folderDocuments as Variant
Returns all folders as an array of NotesDocuments. If none could be retrieved,
it returns a empty variant. Read only.

Property formDocuments as Variant
Returns all forms as an array of NotesDocuments. If none could be retrieved,
it returns a empty variant. Read only.

Property framesetDocuments as Variant
Returns all framesets as an array of NotesDocuments. If none could be
retrieved, it returns a empty variant. Read only.

Property helpAboutDocuments as Variant
Returns all help about documents as an array of NotesDocuments, typically there
will be only one per database.. If none could be retrieved, it returns a empty
variant. Read only.

Property helpUsingDocuments as Variant
Returns all help using documents as an array of NotesDocuments, typically there
will be only one per database.. If none could be retrieved, it returns a empty
variant. Read only.

Property iconDocuments as Variant
Returns all database icons as an array of NotesDocuments, typically there will
be only one per database.. If none could be retrieved, it returns a empty
variant. Read only.

Property imageDocuments as Va
%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 object, do 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_FL
This was first published in November 2000

Dig deeper on Domino Resources - Part 4

0 comments

Oldest 

Forgot Password?

No problem! Submit your e-mail address below. We'll send you an email containing your password.

Your password has been sent to:

SearchWinIT

Search400

  • iSeries tutorials

    Search400.com's tutorials provide in-depth information on the iSeries. Our iSeries tutorials address areas you need to know about...

  • V6R1 upgrade planning checklist

    When upgrading to V6R1, make sure your software will be supported, your programs will function and the correct PTFs have been ...

  • Connecting multiple iSeries systems through DDM

    Working with databases over multiple iSeries systems can be simple when remotely connecting logical partitions with distributed ...

SearchEnterpriseLinux

SearchVirtualDataCentre.co.uk

Close