OPRAVA: Chyba "Objekt neplatný nebo již není nastavený" s Microsoft Jet

Prohlášení o odmítnutí odpovědnosti pro už nepodporovaný obsah KB

Tento článek byl napsán pro produkty, ke kterým již Microsoft nadále nenabízí podporu. Článek je tedy poskytován „tak, jak je“ a nebude už nadále aktualizován.

Příznaky

Při otevření nebo zavření připojení nebo sady záznamů pomocí ovladač Microsoft ODBC pro aplikaci Access a Microsoft OLE DB Provider pro stroj Jet, může být hlášena následující chyba:
Objekt je neplatný nebo již není nastavený.
Poté, co tato chybová zpráva, žádné další sady záznamů nebo připojení lze otevřít ze stejného procesu.

Jiné možné chybové zprávy sděleny klientská aplikace patří:
Otevřete příliš mnoho tabulek.
Nelze otevřít žádné další tabulky.

Řešení

Chcete-li vyřešit tento problém, nainstalujte aktualizaci Microsoft Jet 4.0 service pack 6. Další informace získáte klepnutím na následující číslo článku databáze Microsoft Knowledge Base:

239114 jak: získat nejnovější Service Pack pro databázový stroj Microsoft Jet 4.0

Stav

Společnost Microsoft potvrzuje, že se jedná o problém v produktech této společnosti uvedených na začátku tohoto článku. Tento problém byl opraven v aktualizaci Jet 4.0 Service Pack 6 (SP6).

Další informace

Chcete-li problém reprodukovat, spusťte následující Microsoft Visual Basic for Applications (VBA) kód:
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 "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\YourTestDatabase.mdb;"

' Drop and re-create test query.
On Error Resume Next
conn.Execute "drop procedure sp_param_test", , adExecuteNoRecords
On Error GoTo 0
conn.Execute "create procedure sp_param_test as " & _
"parameters iInput Long; " & _
"select iInput as iOutput;", , 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 = "sp_param_test"
cmd.Parameters.Append cmd.CreateParameter("iInput", 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

Vlastnosti

ID článku: 304536 - Poslední kontrola: 9. 1. 2017 - Revize: 1

Váš názor