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!