Microsoft KB Archive/304536

= FIX: &quot;Object invalid or no longer set&quot; Error with Microsoft Jet =

Article ID: 304536

Article Last Modified on 9/26/2005

-

APPLIES TO


 * Microsoft Open Database Connectivity Driver for Access 4.0
 * Microsoft OLE DB Provider for Jet 4.0

-



This article was previously published under Q304536



SYMPTOMS
When opening and closing connections or recordsets using the Microsoft ODBC Driver for Access or the Microsoft OLE DB Provider for Jet, the following error may be reported:

Object invalid or no longer set.

After this error is reported, no more recordsets or connections can be opened from the same process.

Other possible error messages reported to the client application include:

Too many tables open.

Cannot open any more tables.



RESOLUTION
To resolve this problem, install the latest Microsoft Jet 4.0 service pack 6. For additional information, click the following article number to view the article in the Microsoft Knowledge Base:

239114 How To: Obtain the Latest Service Pack for the Microsoft Jet 4.0 Database Engine



STATUS
Microsoft has confirmed that this is a problem in the Microsoft products that are listed at the beginning of this article. This problem was fixed in Jet 4.0 Service Pack 6 (SP6).



MORE INFORMATION
To reproduce the problem, run the following Microsoft Visual Basic for Applications (VBA) code: Public Sub Jet_TableID_Repro Dim conn As ADODB.Connection Dim cmd As ADODB.Command Dim rs As ADODB.recordset Dim i As Long Set conn = New ADODB.Connection ' Modify this connection string to point to some blank database. conn.Open &quot;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\YourTestDatabase.mdb;&quot; ' Drop and re-create test query. On Error Resume Next conn.Execute &quot;drop procedure sp_param_test&quot;,, adExecuteNoRecords On Error GoTo 0 conn.Execute &quot;create procedure sp_param_test as &quot; & _ &quot;parameters iInput Long; &quot; & _ &quot;select iInput as iOutput;&quot;,, adExecuteNoRecords For i = 1 To 10000

' Code should fail at around 2000-3000 iterations. Set rs = New ADODB.recordset Set cmd = New ADODB.Command Set cmd.ActiveConnection = conn cmd.CommandType = adCmdStoredProc cmd.CommandText = &quot;sp_param_test&quot; cmd.Parameters.Append cmd.CreateParameter(&quot;iInput&quot;, adInteger) cmd.Parameters(0).value = 12

' This will fail at around 2000-3000 iterations. rs.Open cmd,, adOpenKeyset, adLockOptimistic Set cmd = Nothing Debug.Print i       DoEvents rs.Close Set rs = Nothing

Next i

End Sub

Keywords: kbqfe kbjet kbprb kbhotfixserver KB304536

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.