jwcolby
jwcolby at colbyconsulting.com
Thu Feb 26 09:17:01 CST 2009
uuuhhh... =? That was air code that I promptly pasted into a module, found the error and fixed IN
MY MODULE. Sorry about that.
Function dbDao() As DAO.Database
Static db As DAO.Database
If db Is Nothing Then
Set db = CurrentDb
End If
Set dbDao = db
End Function
I found this issue years ago and have been using a function like this but because it is so simple I
just rewrote it in the email.
8(
John W. Colby
www.ColbyConsulting.com
William Hindman wrote:
> 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
>>
>