jwcolby
jwcolby at colbyconsulting.com
Thu Feb 26 00:13:21 CST 2009
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!