Solved

How to find whether object exists?

Posted on 2001-06-17
6
181 Views
Last Modified: 2012-05-04
Consider a situation that I have an ADO connection objet named cn. Now I have closed the object as :

cn.close

and have released the resources as :

Set cn = Nothing.

Now if I call some routine that uses the ADO cn object and refer to it program would give me an error. I want that my program must first confirm whether this object exists then refer to it. HGow can I do this.
0
Comment
Question by:ShehzadMunir
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
6 Comments
 
LVL 6

Accepted Solution

by:
sharmon earned 10 total points
ID: 6199634
Dim cn As ADODB.Connection

Private Sub Form_Load()

  Set cn = New ADODB.Connection
  'Setup and open, etc...

  If cn.State = adStateOpen Then cn.Close
  Set cn = Nothing

  Dim fResult As Boolean
  fResult = cn Is Nothing
  Debug.Print fResult
End Sub
0
 

Expert Comment

by:ostrosoft
ID: 6199659
...
On Error Resume Next
If cn.State = adStateClosed Then MsgBox "Connection closed"
If Err <> 0 Then MsgBox "Object destroyed"
On Error GoTo 0
...
0
 
LVL 3

Expert Comment

by:RodStephens
ID: 6199663
If cn Is Nothing Then
    ' Connection doesn't exist...
Else
    ' Connection exists...
End If

To see if the connection is open, use:

    If cn.State = adStateOpen Then ...
0
Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 6

Expert Comment

by:sharmon
ID: 6199693
ostrosoft, closing a connection doesn't destroy the object.

RodStephens, your code is basically the same as mine...
0
 
LVL 3

Expert Comment

by:Hornet241
ID: 6200155
Checking the cn.state after Set cn = Nothing will cause an error Try this code

Function ChkValidConnection()
On Error GoTo ErrorHandler:

'Just to Check
Set conn = Nothing

Chkconn = IsObject(conn)
If Chkconn = True Then
    If conn.State = 1 Then
      conn.Close
    End If
  Else
    'use this if necessary
    Dim conn As ADODB.Connection
    Set conn = New ADODB.Connection
End If

conn.Open "ConnectionString"

ErrorHandlerExit:
  Exit Function

ErrorHandler:
  If Err = 91 Then  ''Object variable not set
      Set conn = New ADODB.Connection
      Resume
    Else
      MsgBox "Unhandled Error"
      Resume ErrorHandlerExit:
  End If

End Function
0
 

Author Comment

by:ShehzadMunir
ID: 6200946
Because object cannot be referred after being destroyed.

Actually right now I am not seeing any Accept Answer button. Though I have accepted sharmon 's answer in a sense that we can check the connection existance by keeping a boolean variable. : Hornet241 is absolutely right. But since Sharmon attempted first so no he would be awarded the marks.

Thanks for all who answered.
0

Featured Post

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

I’ve seen a number of people looking for examples of how to access web services from VB6.  I’ve been using a test harness I built in VB6 (using many resources I found online) that I use for small projects to work out how to communicate with web serv…
Introduction In a recent article (http://www.experts-exchange.com/A_7811-A-Better-Concatenate-Function.html) for the Excel community, I showed an improved version of the Excel Concatenate() function.  While writing that article I realized that no o…
Get people started with the process of using Access VBA to control Excel using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Excel. Using automation, an Access application can laun…
Get people started with the utilization of class modules. Class modules can be a powerful tool in Microsoft Access. They allow you to create self-contained objects that encapsulate functionality. They can easily hide the complexity of a process from…

733 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question