[AccessD] Using Lateral Thinking To solve problems - This time it is Form Properties

William Hindman wdhindman at dejpolsystems.com
Thu Feb 26 08:53:48 CST 2009


set dbdao - db ????

William

--------------------------------------------------
From: "jwcolby" <jwcolby at colbyconsulting.com>
Sent: Thursday, February 26, 2009 7:56 AM
To: "Access Developers discussion and problem solving" 
<accessd at databaseadvisors.com>
Subject: Re: [AccessD] Using Lateral Thinking To solve problems - This time 
it	is Form Properties

> All you have to do is ask.
>
> BTW, I discovered that getting a pointer to currentdb is expensive.  If 
> you are going to do a lot of
> dao manipulation of the dao.database object you should get a single 
> pointer and then use that pointer:
>
> function dbDao() as dao.database
> static db as dao.database
> if db is nothing then
> set db = currentdb
> endif
> set dbdao - db
> end function
>
> The difference when repeatedly calling a function that needs the currentdb 
> pointer can be quite
> dramatic.
>
> John W. Colby
> www.ColbyConsulting.com
>
>
> William Hindman wrote:
>> ...we need to get you in RANT mode a lot MORE often ...when you're 
>> through
>> ranting, you make amends with gems like this :)
>>
>> William
>>
>> --------------------------------------------------
>> From: "jwcolby" <jwcolby at colbyconsulting.com>
>> Sent: Thursday, February 26, 2009 1:13 AM
>> To: "Access Developers discussion and problem solving"
>> <accessd at databaseadvisors.com>
>> Subject: Re: [AccessD] Using Lateral Thinking To solve problems - This 
>> time
>> it is Form Properties
>>
>>> Max,
>>>
>>>> Couldn't find any way to manipulate custom properties in Forms.  Do you
>>>> know a way?
>>> Don't say I never did nothing for ya.  Happy lateral thinking.
>>>
>>> There is this thing in Access called the "documents" collection.
>>> Documents are something that the
>>> average joe knows nothing about and so are "well hidden" as I mentioned 
>>> in
>>> my previous email.  I
>>> mean they are right there, anyone can find them, anyone can iterate the
>>> documents collections, the
>>> properties of a document etc but you have to dig down to that level to
>>> actually see what is in the
>>> properties collection.
>>>
>>> currentdb.Containers(strContainer).Documents(strDocName)
>>>
>>> AFAICT .Containers represents the tabs in an A2003 database. 
>>> strContainer
>>> will be the name of some
>>> tab - Forms, Reports, Queries, Tables, etc.  .Documents() contains all 
>>> of
>>> the forms, reports etc.
>>> strDocName would be the name of a specific form, query etc.
>>>
>>> AFAICT documents are probably the textual representation of an object, 
>>> IE
>>> what you would get if you
>>> exported the object to a text file.  As such it doesn't have to be
>>> "opened" in design view to
>>> manipulate, nor "Saved" afterwards.
>>>
>>> I haven't done extensive testing to see how many properties you can
>>> create.  I suspect a BUNCH
>>> however, since these are collections like any other.
>>>
>>> To manipulate it:
>>>
>>> '---------------------------------------------------------------------------------------
>>> ' Procedure : PropertyAdd
>>> ' Author    : jwcolby
>>> ' Date      : 2/26/2009
>>> ' Purpose   :
>>> '
>>> 'String container can be "Forms", "Reports" etc
>>> 'strDocName can be the name of any "document" in that container.
>>> '
>>> '---------------------------------------------------------------------------------------
>>> '
>>> Function PropertyAdd(strContainer As String, strDocName As String, _
>>>                     strPrpName As String, PrpType As DataTypeEnum, 
>>> varVal
>>> As Variant)
>>> Dim db As DAO.Database
>>> Dim prpNew As Property
>>> Dim doc As Document
>>> On Error GoTo Err_PropertyAdd
>>>
>>>     Set db = CurrentDb
>>>     Set doc = db.Containers(strContainer).Documents(strDocName)
>>>     With doc
>>>         Set prpNew = .CreateProperty(strPrpName, PrpType, varVal)
>>>         .Properties.Append prpNew
>>>         .Properties.Refresh
>>>     End With
>>>     Debug.Print
>>> db.Containers(strContainer).Documents(strDocName).Properties(strPrpName)
>>>
>>> Exit_PropertyAdd:
>>>     On Error Resume Next
>>>     Exit Function
>>> Err_PropertyAdd:
>>>     Select Case Err
>>>     Case 0      '.insert Errors you wish to ignore here
>>>         Resume Next
>>>     Case Else   '.All other errors will trap
>>>         Beep
>>>         MsgBox Err.Description
>>>         Resume Exit_PropertyAdd
>>>     End Select
>>>     Resume 0    '.FOR TROUBLESHOOTING
>>> End Function
>>>
>>> '---------------------------------------------------------------------------------------
>>> ' Procedure : PrpGet
>>> ' Author    : jwcolby
>>> ' Date      : 2/26/2009
>>> ' Purpose   :
>>> '---------------------------------------------------------------------------------------
>>> '
>>> Function PrpGet(strContainer As String, strDocName As String, strPrpName
>>> As String) As Variant
>>> On Error GoTo Err_PrpGet
>>>
>>>     PrpGet =
>>> CurrentDb.Containers(strContainer).Documents(strDocName).Properties(strPrpName)
>>>
>>> Exit_PrpGet:
>>>     On Error Resume Next
>>>     Exit Function
>>> Err_PrpGet:
>>>     Select Case Err
>>>     Case 0      '.insert Errors you wish to ignore here
>>>         Resume Next
>>>     Case Else   '.All other errors will trap
>>>         Beep
>>>         MsgBox Err.Description
>>>         Resume Exit_PrpGet
>>>     End Select
>>>     Resume 0    '.FOR TROUBLESHOOTING
>>> End Function
>>>
>>> In the debug window:
>>>
>>>
>>> AddProperty "forms","frmDemoCtls","JWCs test property",dbText,"jwc"
>>>
>>> ?PrpGet("forms","frmDemoCtls","jwcs test property")
>>> jwc
>>>
>>>
>>> Enjoy!
>>>
>>> John W. Colby
>>> www.ColbyConsulting.com
>>>
>>>
>>> Max Wanadoo wrote:
>>>> Ha! John,  Been there. Looked at them yesterday - but I love the fact
>>>> that
>>>> you are now also thinking Laterally!
>>>>
>>>> Couldn't find any way to manipulate custom properties in Forms.  Do you
>>>> know
>>>> a way?
>>>>
>>>> I could only find custom properties on DB, Tables, Indexes, etc but not
>>>> forms.
>>>>
>>>> Max
>>>> Laugh more than cry.  Smile more than frown.  Be generous in  spirit.
>>>> And
>>>> always stand your round in the pub!
>>> -- 
>>> AccessD mailing list
>>> AccessD at databaseadvisors.com
>>> http://databaseadvisors.com/mailman/listinfo/accessd
>>> Website: http://www.databaseadvisors.com
>>>
>>
> -- 
> AccessD mailing list
> AccessD at databaseadvisors.com
> http://databaseadvisors.com/mailman/listinfo/accessd
> Website: http://www.databaseadvisors.com
> 




More information about the AccessD mailing list