[AccessD] Using Global Connections

StaRKeY StaRKeY at Wanadoo.nl
Thu Mar 20 15:37:00 CST 2003


First of all, I am not against globals but I think there are a couple of
things to bare in mind:

1) - kept open connections could slow down traffic in general, usually only
if your app is used by a lot of
      people/connections
2) - what is the max. amount of open connections allowed?
3) - globals can loose their value in case an unhandled error occurs
4) - no Mark, in a LOT of cases you are NOT the only programmer over time...

Last but not least, I've seen many different Access applications and to be
honest, whenever I was asked to come fix or upgrade an app. I've never
really cared about how the job was done unless it actually was
creating/being a problem.

My two cents..
Eric

-----Original Message-----
From: accessd-admin at databaseadvisors.com
[mailto:accessd-admin at databaseadvisors.com]On Behalf Of Mark L. Breen
Sent: donderdag 20 maart 2003 22:22
To: accessd at databaseadvisors.com
Subject: Re: [AccessD] Using Global Connections


Hello John,

I am glad to hear that I am on the right track anyway.  The reason that I
asked the question was that I noticed a few people referring to globals
recently.  Also, I have been reading a bit about them and the author was
complaining about globals.  But, as we are both agreed, for a global
constant connection, there is a lot of upside and very little downside to
using one.  I had considered using a class and setting properties, bit
again, that is only really complictating it further.  However, I could make
it a read only class, and that would have some benefit, or I could do as you
do and use a function.

Based on the fact that I am the programmer, nobody else is going to mess
with my global variable, I can probably continue to use a normal global and
pass it around.

I am reading with interest your migration to .net, I am about to start the
same thing myself in the next few weeks.

If I have anything to post, I will.

I think that everybody on the list should let each other know if we come
across any good reading material, especially online / free stuff.

Thanks to all for the feedback on the globals.

Best Regards


Mark L. Breen
Solution Providers
Ireland




----- Original Message -----
From: "John W. Colby" <jcolby at colbyconsulting.com>
To: <accessd at databaseadvisors.com>
Sent: Saturday, March 15, 2003 5:03 PM
Subject: RE: [AccessD] Using Global Connections


> Mark,
>
> I also use globals for the db connection.  This is a case where the
> connection is specific, a penalty is paid for creating / deleting it, and
it
> is needed all over the app.  The connection is not something that is going
> to be updated (written to) by pieces of the application, it is going to be
> created once and then used all over.  That is a good candidate for a
global.
>
>
> Globals tend to cause problems when they are *updated* from all over the
> place, and the reason is that is quite difficult to track down who is
doing
> the updating when it is incorrectly updated.  If for example a serial port
> is opened and closed by 10 different functions, one function tries to use
> the serial port and it is closed.  Who closed it?  It's supposed to be
> opened, but some process closed it unexpectedly.  These kinds of problems
> can be a real bear to track down and fix.
>
> It becomes a bigger problem if the system is written and maintained by a
> team of programmers where nobody knows the whole story.  Globals by
> definition are available to anyone at any time.
>
> Scope exists for a reason.  If a variable is only used by a specific
> function, then it's variables have no business being global to the program
> (or even the module).  If a variable is only used by code inside an
instance
> of a class but needs to be accessed by several functions inside the class,
> then it should be defined inside the class (in the header) as a PRIVATE
> variable.  Thus only code inside the class can modify the variable.  If a
> variable needs to be shared by many functions inside of a module, but only
> these functions modify the variable, then the variable should be PRIVATE
to
> that module.  By making any of these variables truly Global to the
project,
> you end up with things being (able to be) set by code that has no business
> setting the variable.
>
> On the other hand, if as in your example, a database connection is needed,
> and a function calls a function which calls a function, which needs that
> connection, why pass the connection through 3 functions that don't even
need
> the connection simply so that the fourth function that does need it can
have
> access to the connection?
>
> In a case like this, I tend to make the connection a private variable
inside
> a module, with a function that initializes the variable when the db opens,
> and then define a function that READS the connection variable and returns
> the value.  This in effect makes it read only.  Anyone can call the
function
> that gets the value, but since the variable is PRIVATE to the module, no
one
> outside the module can write to it.
>
> John W. Colby
> Colby Consulting
> www.ColbyConsulting.com
>
> -----Original Message-----
> From: accessd-admin at databaseadvisors.com
> [mailto:accessd-admin at databaseadvisors.com]On Behalf Of Mark L. Breen
> Sent: Friday, March 14, 2003 12:37 PM
> To: accessd at databaseadvisors.com
> Subject: Re: [AccessD] Using Global Connctions
>
>
> Hello All,
>
> I was not aware that a previous debate (sounds a little heated) had been
> already carried out.  Sorry for duplicating the discussion.
>
> In the last few emails, Marcus was the only one that explicitly stated
that
> he likes the idea of using Globals for a db connection.
>
> So leaving aside passing around an order nunber or a customer id as a
global
> (which I would never even consider), what do you guys do to hand around a
> database connection?  Do you use Globals or do you make the connction each
> time or do you use some kind of class.  Any sample code would be
interesting
> to read.
>
> What I do is have the following code in a module
>
> ' This will be the global connection that we will share, we open it once
> only and share it throughout the applications life
> Global gccnn As New ADODB.Connection
> Global Const gcstrConStr As String = "Provider=SQLOLEDB.1;Integrated
> Security=SSPI;Persist Security Info=False;Initial Catalog=spps40;Data
> Source=PC1"
>
>
> and then in the first form_load I have
>
>     ' Give it a connect string
>     gccnn.ConnectionString = gcstrConStr
>
>     ' And make the connection
>     gccnn.Open
>
>
>
> What do you guys think of this strategy, should I use a class to pass it
> around.  And if I am not using a class, do you think that it is a little
bit
> untidy or is downright bad practice.
>
> Again, I am just curious what the rest of the world is doing in their
apps.
>
> Thanks
>
> Mark
>
>
> _______________________________________________
> AccessD mailing list
> AccessD at databaseadvisors.com
> http://databaseadvisors.com/mailman/listinfo/accessd
> Website: http://www.databaseadvisors.com
>
>
>
> ----------------------------------------------------
> Is email taking over your day?  Manage your time with eMailBoss.
> Try it free!  http://www.eMailBoss.com
>

_______________________________________________
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com


---
Message is tested virus free
Virus Database (VPS): 19-3-2003
Tested on: 20-3-2003 22:29:50

(c) 2000-2003 ALWIL Software.
http://www.avast.com




More information about the AccessD mailing list