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

William Hindman wdhindman at dejpolsystems.com
Thu Feb 26 00:48:13 CST 2009


...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
> 




More information about the AccessD mailing list