[AccessD] A 97 to A 2010 compile error

Stuart McLachlan stuart at lexacorp.com.pg
Mon May 1 08:42:52 CDT 2017


The P-Code is only built once.  Either when you manually compile or when anything in the 
module is first run.

After that: P-Code is P-Code, regardless of how the source code was formatted.
(Do you really think that there is a difference in an Accde depending on how an object 
reference was typed in the removed source?)

At that stage, the reference is no longer in a paren/quote format.  The reference has already 
been "tokenized". in a binary form.

In fact the reference is not even in paren/quote format once you move on to the next line. At 
that stage it is "compiled" to Op-Code which is also a form of tokenized binary.

"Compiling" really converts the Op-Codes to P-Code.


It's all explained quite well here:  http://cpap.com.br/orlando/VBADecompilerMore.asp
in the section "What It Means to Decompile and Compact in VBA"


-- 
Stuart

On 1 May 2017 at 6:26, Jim Dettman wrote:

> 
>  There is a slight edge. 
> 
>  While the p-code would ultimately be the same, it's one extra step
>  that
> Access/VBA does not need to go through when dealing with a reference.
> 
>  All references are converted to the paren/quote format before
>  anything else
> is done with it.
> 
> Jim.
> 
> -----Original Message-----
> From: AccessD [mailto:accessd-bounces at databaseadvisors.com] On Behalf
> Of Stuart McLachlan Sent: Sunday, April 30, 2017 07:28 PM To: Access
> Developers discussion and problem solving Subject: Re: [AccessD] A 97
> to A 2010 compile error
> 
> I really doubt that Forms("frmTest")("txtName")  will be any different
> to Forms![frmTest]![txtName] when it comes to run time performance.
> 
> Both will be converted to exactly the same PCode when the VBA  is
> compiled.
> 
> -- 
> Stuart
> 
> On 30 Apr 2017 at 15:19, Bob Heygood wrote:
> 
> > Hello Jim,
> > Yes I'm pretty old school and not kept up on the latest Access
> > changes. I must have written that code a long time ago. Good advice
> > on explicitly stating the hierarchy of elements and their
> > collections. Gotta say though I really hate to use any parenthesis
> > in my coding. I was traumatized many times by my errors and grew to
> > dislike them a lot, especially when concatenating lines.
> > 
> > Thanks again,
> > 
> > Bob
> > 
> > 
> > -----Original Message-----
> > From: AccessD [mailto:accessd-bounces at databaseadvisors.com] On
> > Behalf Of Jim Dettman Sent: Saturday, April 29, 2017 5:07 AM To:
> > 'Access Developers discussion and problem solving' Subject: Re:
> > [AccessD] A 97 to A 2010 compile error
> > 
> > Bob,
> > 
> >   You'll find reference checking got a lot tighter in A2007 and up
> >   and some
> > things that you got away with before you can no longer.  A bang (!)
> > indicates that what follows is a element of a collection.  A dot (.)
> > means a property, collection, or method name.  Also there were some
> > changes made with A2000, which is the addition of default
> > collections, that has an impact on references.
> > 
> >   If you can learn to do it, you can always use this syntax:
> > 
> >     Set ctl = Forms("frmTest")("txtName")
> > 
> >     before you would do this:
> > 
> >     Set ctl = Forms![frmTest]![txtName]
> > 
> >   Behind the scenes, Access actually translates all your statements
> >   to this
> > format of parentheses and quotes, so if you use it, there is a bit
> > of a performance edge.
> > 
> >   The above works because the controls collection is the default
> >   collection
> > for a form.   Normally in the past, you would have had to do:
> > 
> >   Set ctl = Forms("frmTest").Controls("txtName")
> > 
> >   I'm still "old school" and use the bang everywhere as even with
> >   the ("")
> > syntax, querydef parameters that refer to form controls is one place
> > where a bang must be used.   There were a couple of others as well,
> > but I've forgotten what they were, and I could never keep them all
> > straight, so I continued to use the bang.
> > 
> > Jim.  
> > 
> > -----Original Message-----
> > From: AccessD [mailto:accessd-bounces at databaseadvisors.com] On
> > Behalf Of Bob Heygood Sent: Friday, April 28, 2017 05:13 PM To:
> > 'Access Developers discussion and problem solving' Subject:
> > [AccessD] A 97 to A 2010 compile error
> > 
> > I am converting an app from A 97 to A 2010.
> > I updated the DAO ref already.
> > What reference or library am I missing when I get an error :
> > Compile Error
> > "Method or Data member not found"
> > For this line:
> > txtTerms_ID = rstTerms.[Terms_ID]
> > .[Terms_ID] is highlighted.
> > 
> > 
> > TIA
> > Bob
> > 
> > --
> > 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
> > 
> > -- 
> > 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
> 
> -- 
> 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