<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<TITLE>Message</TITLE>

<META content="MSHTML 6.00.2600.0" name=GENERATOR></HEAD>
<BODY>
<DIV><SPAN class=716064013-05022003><FONT face=Arial color=#0000ff size=2>No 
clear cut answer to this question.  I normally put any code that I feel I 
will reuse in a class module (by reuse I mean within the same app only, or 
many apps).  A couple of examples:</FONT></SPAN></DIV>
<DIV><SPAN class=716064013-05022003><FONT face=Arial color=#0000ff 
size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=716064013-05022003><FONT face=Arial color=#0000ff size=2>1. I 
used to have a problem remembering the provider/connect string for Access and 
SQL OLEDB provides used when opening an ADO connection and/or 
recordset(s).  I wrapped the code I use to open connections and create recordsets in a class, cDatabase.  Now when I want to use ADO I create an 
object of type cDatabase, call the OpenConnection method, pass in the mdb or SQL 
DB, and pass a parameter telling the class what type of db I'm using and I've 
got my connection.</FONT></SPAN></DIV>
<DIV><SPAN class=716064013-05022003><FONT face=Arial color=#0000ff 
size=2>Ex.</FONT></SPAN></DIV>
<DIV><SPAN class=716064013-05022003><FONT face=Arial color=#0000ff 
size=2><snip></FONT></SPAN></DIV>
<DIV><SPAN class=716064013-05022003><FONT face=Arial color=#0000ff size=2>Dim 
oDB As cDatabase</FONT></SPAN></DIV>
<DIV><SPAN class=716064013-05022003><FONT face=Arial color=#0000ff size=2>Dim rs 
As ADODB.Recordset</FONT></SPAN></DIV>
<DIV><SPAN class=716064013-05022003>    <FONT face=Arial color=#0000ff size=2>Set oDB = New cDatabase</FONT></SPAN></DIV>
<DIV><SPAN class=716064013-05022003><FONT face=Arial color=#0000ff 
size=2>    oDB.OpenConnection "mydb.mdb" 'mdb is default so we 
don't have to pass optional db type argument</FONT></SPAN></DIV>
<DIV><SPAN class=716064013-05022003><FONT face=Arial color=#0000ff 
size=2>    Set rs = oDB.OpenRecordset 
("mytablequeryorsql")</FONT></SPAN></DIV>
<DIV><SPAN class=716064013-05022003><FONT face=Arial color=#0000ff 
size=2></snip></FONT></SPAN></DIV>
<DIV><SPAN class=716064013-05022003><FONT face=Arial color=#0000ff size=2>I 
don't have to remember or find the provider/connect string 
anymore.</FONT></SPAN></DIV>
<DIV><SPAN class=716064013-05022003><FONT face=Arial color=#0000ff 
size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=716064013-05022003><FONT face=Arial color=#0000ff size=2>2. I 
wrote some code that reads setup/configuration settings from an XML file.  
Once it was done I realized I'd like to add this functionality to more apps so I 
ported it into a class module.  Now with no knowledge of XML my team 
of developers can add this functionality to their apps by importing the class 
module.</FONT></SPAN></DIV>
<DIV><SPAN class=716064013-05022003><FONT face=Arial color=#0000ff 
size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=716064013-05022003><FONT face=Arial color=#0000ff size=2>This 
is not to say a one-off class is not out of the realm of possibility.  As 
J. Colby mentioned in a earlier post, if you need certain functionality in more 
than one place in a single app classes make it very easy to add that 
functionality without copy/paste or reviewing a code module to see "how it works" or how to use it.  </FONT></SPAN></DIV>
<DIV><SPAN class=716064013-05022003><FONT face=Arial color=#0000ff 
size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=716064013-05022003><FONT face=Arial color=#0000ff size=2>We all 
have stand alone functions that belong in standard modules.  One common 
module (here at least) is basUtil containing utility functions like IsLoaded to 
check whether a form or Access object is currently open (things not related to 
the function of the system).  There's nothing stopping you from putting 
those in a class.  Why bother?  Class objects implement type ahead 
code functionality.  Imagine then how easy it would be to access your utility functions by calling an object of type cUtil as 
follows:</FONT></SPAN></DIV>
<DIV><SPAN class=716064013-05022003><FONT face=Arial color=#0000ff 
size=2><snip></FONT></SPAN></DIV>
<DIV><SPAN class=716064013-05022003><FONT face=Arial color=#0000ff size=2>Dim 
oUtil As cUtil</FONT></SPAN></DIV>
<DIV><SPAN class=716064013-05022003><FONT face=Arial color=#0000ff size=2>  
Set oUtil = New cUtil</FONT></SPAN></DIV>
<DIV><SPAN class=716064013-05022003><FONT face=Arial color=#0000ff size=2>  
oUtil.IsLoaded "myform"</FONT></SPAN></DIV>
<DIV><SPAN class=716064013-05022003><FONT face=Arial color=#0000ff 
size=2></snip></FONT></SPAN></DIV>
<DIV><SPAN class=716064013-05022003><FONT face=Arial color=#0000ff size=2>I'd 
normally have to take a look at basUtil to see what functionality was in there 
but the class object's type ahead would alleviate that (actually, this was a 
last minute thought but I think I'll give it a try!).</FONT></SPAN></DIV>
<P><FONT face=Arial><FONT size=2><SPAN 
class=716064013-05022003>HTH</SPAN>,</FONT></FONT> </P>
<P><FONT face=Arial size=2>Jim DeMarco</FONT> <BR><FONT face=Arial 
size=2>Director of Product Development</FONT> <BR><FONT face=Arial 
size=2>HealthSource/Hudson Health Plan</FONT> </P>
<BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px">
  <DIV class=OutlookMessageHeader dir=ltr align=left><FONT face=Tahoma 
  size=2>-----Original Message-----<BR><B>From:</B> Myke Myers 
  [mailto:mmmtbig@bellsouth.net]<BR><B>Sent:</B> Monday, February 03, 2003 6:44 
  PM<BR><B>To:</B> accessd@databaseadvisors.com<BR><B>Subject:</B> [AccessD] 
  Standard vs. Class Module<BR><BR></FONT></DIV>
  <DIV><FONT face=Arial size=2><SPAN class=859564123-03022003>Can anyone 
  describe how to determine when to use a standard module and when to use a   class module in Access?</SPAN></FONT></DIV>
  <DIV><FONT face=Arial size=2><SPAN 
  class=859564123-03022003></SPAN></FONT> </DIV>
  <DIV><FONT face=Arial size=2><SPAN 
  class=859564123-03022003>TIA    Myke</SPAN></FONT></DIV>
  <DIV><FONT face=Arial size=2></FONT> </DIV></BLOCKQUOTE><CODE><FONT SIZE=3><BR>
<BR>
***********************************************************************************<BR>
"This electronic message is intended to be for the use only of the named recipient, and may contain information from HealthSource/Hudson Health Plan (HS/HHP) that is confidential or privileged.  If you are not the intended recipient, you are hereby notified that any disclosure, copying, distribution or use of the contents of this message is strictly prohibited.  If you have received this message in error or are not the named recipient, please notify us immediately, either by contacting the sender at the electronic mail address noted above or calling HS/HHP at (914) 631-1611. If you are not the intended recipient, please do not forward this email to anyone, and delete and destroy all copies of this message.  Thank You".<BR>
***********************************************************************************<BR>
</FONT></CODE>
</BODY></HTML>