LotusScript Class to Access Design Elements

















Formula Or
Script? :
Lotus
Script

Entered
by:
Doug Hancock
Design
Element in Notes:
Other
Date Entered
:
2000-03-28
Title of the
Formula:
LotusScript Class to
Convieniently Access Design Elements
%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_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
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( 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
Set db =
database
cacheDocuments = True
End Sub

Private Function
isAbstractClass As Integer
'this must be overridden and return false
'this
prevents the base class from being instantiated directly
isAbstractClass =
True
End Function

'PUBLIC PROCEDURES

Property Get formDocuments
As Variant
FormDocuments = getDesignDocuments( NOTE_CLASS_FORM, "*[" &
DESIGN_FLAGS_SUBCLASS & "]*", True)
End Property

Property Get
subformDocuments As Variant
subformDocuments = getDesignDocuments(
NOTE_CLASS_FORM, "*[" & DESIGN_FLAG_SUBFORM & "]*", False)
End
Property

Property Get pageDocuments As Variant
pageDocuments =
getDesignDocuments( NOTE_CLASS_FORM, "*[" & DESIGN_FLAG_WEBPAGE & "]*",
False)
End Property

Property Get imageDocuments As
Variant
imageDocuments = getDesignDocuments( NOTE_CLASS_FORM, "*[" &
DESIGN_FLAG_IMAGE_RESOURCE & "]*", False)
End Property

Property
Get javaResourceDocuments As Variant
javaResourceDocuments =
getDesignDocuments( NOTE_CLASS_FORM, "*[" & DESIGN_FLAG_JAVA_RESOURCE
&"]*", False)
End Property

Property Get allDesignDocuments As
Variant
allDesignDocuments = getDesignDocuments( _
NOTE_CLASS_FORM Or
_
NOTE_CLASS_VIEW Or _
NOTE_CLASS_ICON Or _
NOTE_CLASS_HELP Or
_
NOTE_CLASS_FILTER Or _
NOTE_CLASS_FIELD Or _
NOTE_CLASS_REPLFORMULA
Or _
NOTE_CLASS_INFO Or _
NOTE_CLASS_HELP _
,"*[X]*", True )
End
Property

Property Get viewDocuments As Variant
viewDocuments =
getDesignDocuments( NOTE_CLASS_VIEW, "*["&DESIGN_FLAGS_SUBCLASS & "]*",
True )
End Property

Property Get folderDocuments As
Variant
folderDocuments = getDesignDocuments( NOTE_CLASS_VIEW, "*["&
DESIGN_FLAG_FOLDER_VIEW & "]*", False )
End Property

Property Get
navigatorDocuments As Variant
navigatorDocuments = getDesignDocuments(
NOTE_CLASS_VIEW, "*["& DESIGN_FLAG_VIEWMAP & "]*", False )
End
Property

Property Get framesetDocuments As Variant
FramesetDocuments =
getDesignDocuments( NOTE_CLASS_FORM, "*[" & DESIGN_FLAG_FRAMESET & "]*",
False )
End Property

Property Get scriptLibraryDocuments As
Variant
scriptLibraryDocuments = getDesignDocuments( NOTE_CLASS_FILTER, "*["
& DESIGN_FLAG_SCRIPTLIB & "]*", False )
End Property

Property
Get agentDocuments As Variant
agentDocuments = getDesignDocuments(
NOTE_CLASS_FILTER, "*[" & DESIGN_FLAGS_SUBCLASS & "]*", True)
End
Property

Property Get databaseScriptDocuments As
Variant
databaseScriptDocuments = getDesignDocuments( NOTE_CLASS_FILTER, "*["
& DESIGN_FLAG_DATABASESCRIPT & "]*", False)
End
Property

Property Get outlineDocuments As Variant
outlineDocuments =
getDesignDocuments( NOTE_CLASS_FILTER, "*[" & DESIGN_FLAG_SITEMAP &
"]*", False)
End Property

Property Get sharedFieldDocuments As
Variant
sharedFieldDocuments = getDesignDocuments( NOTE_CLASS_FIELD, "*",
False)
End Property

Property Get replicationSettingsDocuments As
Variant
replicationSettingsDocuments =
getDesignDocuments(NOTE_CLASS_REPLFORMULA, "*", False)
End
Property

Property Get sharedActionDocuments As
Variant
sharedActionDocuments = getDesignDocuments(NOTE_CLASS_FORM , "*["
& DESIGN_FLAG_SACTIONS & "]*", False)
End Property

Property
Get iconDocuments As Variant
iconDocuments =
getDesignDocuments(NOTE_CLASS_ICON , "*", False)
End
Property

Property Get helpAboutDocuments As Variant
helpAboutDocuments
= getDesignDocuments(NOTE_CLASS_INFO , "*", False)
End
Property

Property Get helpUsingDocuments As Variant
helpUsingDocuments
= getDesignDocuments(NOTE_CLASS_HELP , "*", False)
End
Property

'PUBLIC METHODS
Public Function getFormByName( formname As
String) As NotesDocument
Set getFormByName = findElementByTitle( formname,
Me.formDocuments)
End Function

Public Function getViewByName( formname
As String) As NotesDocument
Set getViewByName = findElementByTitle( formname,
Me.viewDocuments)
End Function

Public Function getFramesetByName(
formname As String) As NotesDocument
Set getFramesetByName =
findElementByTitle( formname, Me.framesetDocuments)
End
Function

Public Function getFolderByName( formname As String) As
NotesDocument
Set getFolderByName = findElementByTitle( formname,
Me.folderDocuments)
End Function

Public Function
getScriptLibraryByName( formname As String) As NotesDocument
Set
getScriptLibraryByName = findElementByTitle( formname,
Me.scriptLibraryDocuments)
End Function

Public Function
getImageByName( formname As String) As NotesDocument
Set getImageByName =
findElementByTitle( formname, Me.imageDocuments)
End Function

Public
Function getNavigatorByName( formname As String) As NotesDocument
Set
getNavigatorByName = findElementByTitle( formname, Me.navigatorDocuments)
End
Function

Public Function getJavaResourceByName( formname As String) As
NotesDocument
Set getJavaResourceByName = findElementByTitle( formname,
Me.javaResourceDocuments)
End Function

Public Function
getOutlineByName( formname As String) As NotesDocument
Set getOutlineByName =
findElementByTitle( formname, Me.outlineDocuments)
End Function

Public
Function getAgentByName( formname As String) As NotesDocument
Set
getAgentByName = findElementByTitle( formname, Me.agentDocuments)
End
Function

Public Function getPageByName( formname As String) As
NotesDocument
Set getPageByName = findElementByTitle( formname,
Me.pageDocuments)
End Function

Public Function getSubformByName(
formname As String) As NotesDocument
Set getSubformByName =
findElementByTitle( formname, Me.subformDocuments)
End Function

Public
Function getSharedFieldByName( formname As String) As NotesDocument
Set
getSharedFieldByName = findElementByTitle( formname,
Me.sharedFieldDocuments)
End Function











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.
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 Variant
Returns all images as an array of NotesDocuments.
If none could be retrieved, it returns a empty variant. Read
only.

Property javaResourceDocuments as Variant
Returns all Java
resources/applets as an array of NotesDocuments. If none could be retrieved, it
returns a empty variant. Read only.

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

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

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

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

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

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

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

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

---Methods---
Public Function designDocumentAliases( doc As
NotesDocument) As Variant
Will return as string array containing a design
documents title and all its aliases.

Public Function getFormByName(
formName As String) As NotesDocument
If available, it returns the form whose
name or alias matches formName, otherwise it returns Nothing.

Public
Function getViewByName( formName As String) As NotesDocument
If available, it
returns the view whose name or alias matches formName, otherwise it returns
Nothing.

Public Function getFramesetByName( formName As String) As
NotesDocument
If available, it returns the frameset whose name or alias
matches formName, otherwise it returns Nothing.

Public Function
getFolderByName( formName As String) As NotesDocument
If available, it
returns the folder whose name or alias matches formName, otherwise it returns
Nothing.

Public Function getScriptLibraryByName( formName As String) As
NotesDocument
If available, it returns the script library whose name or alias
matches formName, otherwise it returns Nothing.

Public Function
getImageByName( formName As String) As NotesDocument
If available, it returns
the image whose name or alias matches formName, otherwise it returns
Nothing.

Public Function getNavigatorByName( formName As String) As
NotesDocument
If available, it returns the navigator whose name or alias
matches formName, otherwise it returns Nothing.

Public Function
getJavaResourceByName( formName As String) As NotesDocument

If available, it returns the java resource whose
name or alias matches formName, otherwise it returns Nothing.

Public
Function getOutlineByName( formName As String) As NotesDocument
If available,
it returns the outline whose name or alias matches formName, otherwise it
returns Nothing.

Public Function getAgentByName( formName As String) As
NotesDocument
If available, it returns the agent whose name or alias matches
formName, otherwise it returns Nothing.

Public Function getPageByName(
formName As String) As NotesDocument
If available, it returns the page whose
name or alias matches formName, otherwise it returns Nothing.

Public
Function getSubformByName( formName As String) As NotesDocument
If available,
it returns the subform whose name or alias matches formName, otherwise it
returns Nothing.

Public Function getSharedFieldByName( formName As
String) As NotesDocument
If available, it returns the shared field whose name
or alias matches formName, otherwise it returns
Nothing.





steven

posted @ 2012-04-23 22:25  hannover  阅读(1198)  评论(0)    收藏  举报