imagebox array loses index, possibly declare connectionstring globally

i am using vb6sp5, and an access database to get strings for the pictures on the imageboxes

i have an array of imageboxes
on the click event, the index is called:

Private Sub imgPicture_Click(Index As Integer)

however i can click on say img1,then img2, then img3
and the indexes are called fine , namely, 1,2,3 respectively

then when i click on img1 for example again, the index is set to 0
this happens when i click on imageX, imageY and imageX again.
and i get an "unspecified error" the debugger stops on my connection string

 oconn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
               "Data Source=.\tapeus.mdb;" & _
               "User ID=admin;" & _
               "Password=;"
               
which is working fine, because i just connected to it twice.

maybe its the connection that does not like to be reconnected so much, how can i the connectionstring
public so i only need to connect once, i cant put it in general declaration
i am currently declaring it in every sub or function


jxhardingAsked:
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

x
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

TimCotteeHead of Software ServicesCommented:
Hi jxharding,

If you put the declaration in the declarations section of your form, you can set the connection in form_load. Alternatively you can do it in a module:

In a form:

'Declarations Section
Private oConn As ADODB.Connection

Private Sub Form_Load()
'Instantiate the object
  Set oConn = New ADODB.Connection
'Assign the connection string
  oConn.ConnectionString = "Your connection string"
'Open the connection
  oConn.Open
End Sub

Private Sub Form_Unload()
'Clean up and destroy connection
  If Not(oConn Is Nothing) Then 'the connection object has not been released
    If oConn.State <> adStateClosed Then 'the connection is open
      oConn.Close 'close the connection
    End If
    Set oConn = Nothing ' destroy the object
  End If
End Sub
 
In a module, you would simply have

Public oConn As ADODB.Connection

And then two subs which have the same code as for the form, however you need to then call these when your application starts and ends. A good way of doing this is by setting your startup object to Sub Main(). You then create SUB Main in your module:

Public Sub Main()
  'Initiate connection
  frmMyMainForm.Show vbModal 'pass control to the form
  'terminate connection
End Sub

Tim Cottee MCSD, MCDBA, CPIM
Brainbench MVP for Visual Basic
http://www.brainbench.com

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
jxhardingAuthor Commented:
Hi Tim

heres my sub main module, which is set as start up:

(general declaration)
  Public oConn As ADODB.Connection

Public Sub Main()
   Set oConn = New ADODB.Connection
  oConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
           "Data Source=.\tapeus.mdb;" & _
           "User ID=admin;" & _
           "Password=;"
  oConn.Open
  Form1.Show vbModal
End Sub

then it goes straight to form_load,which contains only
    Dim SQLQ As String
    SQLQ = "SELECT * FROM Products"
    rsProductsG.Open SQLQ, oConn, adOpenStatic, adLockBatchOptimistic, adCmdText

but when i reach this , oconn = nothing
and i get an "object required " message


It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Visual Basic Classic

From novice to tech pro — start learning today.