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