Error -2147467259 - Could not find installable ISAM using ADO 2.1 
Author Message
 Error -2147467259 - Could not find installable ISAM using ADO 2.1

Am getting the error (-2147467259 - Could not find installable ISAM) on the
line "comMSAccessCommand.Execute" in the procedure _ProcessCommand_ (see
below) but not in the procedure _DropWorkTables_. I'm using ADO 2.1, VB6,
Access 97, WINNT 4.0 SP6. Anyone able to help me? Do I need to update ADO,
VB6, and/or Access with service packs?

How do I check to see if service packs/updates have been applied to ADO,
VB6, and Access? Bottom of the

Private Function ProcessCommand(strCommandText As String) As Boolean

Dim conMSAccessConnection As ADODB.Connection
Dim comMSAccessCommand As ADODB.Command

On Error GoTo ProcessCommandErrHndlr

  Set conMSAccessConnection = New ADODB.Connection
  Set comMSAccessCommand = New ADODB.Command

  conMSAccessConnection.ConnectionString = MSACCESS_CONNECT_STRING

  conMSAccessConnection.Open

  comMSAccessCommand.CommandText = strCommandText
  comMSAccessCommand.CommandType = adCmdText
  comMSAccessCommand.ActiveConnection = conMSAccessConnection
  comMSAccessCommand.Execute

  conMSAccessConnection.Close

  Set comMSAccessCommand = Nothing
  Set conMSAccessConnection = Nothing

  ProcessCommand = True

Exit Function

ProcessCommandErrHndlr:

  MsgBox Str(Err.Number) & " " & Err.Description, vbExclamation, "Error!"
  ProcessCommand = False

End Function

Private Sub DropWorkTables()

Dim conMSAccessConnection As ADODB.Connection
Dim comMSAccessConnection As ADODB.Command
Dim rsWorkTablesSchema As ADODB.Recordset
Dim strTableName As String
Dim strTableType As String

On Error GoTo DropWorkTablesErrHndlr

  Set conMSAccessConnection = New ADODB.Connection
  Set comMSAccessConnection = New ADODB.Command
  Set rsWorkTablesSchema = New ADODB.Recordset

  conMSAccessConnection.ConnectionString = MSACCESS_CONNECT_STRING

  conMSAccessConnection.Open

  Set rsWorkTablesSchema = conMSAccessConnection.OpenSchema(adSchemaTables,
Array(Empty, Empty, Empty, "TABLE"))

  Do Until rsWorkTablesSchema.EOF

    strTableName = rsWorkTablesSchema!TABLE_NAME
    strTableType = rsWorkTablesSchema!TABLE_TYPE

    If strTableType = "TABLE" Then
      comMSAccessConnection.CommandText = "DROP TABLE " & strTableName
      comMSAccessConnection.CommandType = adCmdText
      comMSAccessConnection.ActiveConnection = conMSAccessConnection
      comMSAccessConnection.Execute
    End If

    rsWorkTablesSchema.MoveNext

  Loop

  rsWorkTablesSchema.Close
  conMSAccessConnection.Close

  Set rsWorkTablesSchema = Nothing
  Set comMSAccessConnection = Nothing
  Set conMSAccessConnection = Nothing

Exit Sub

DropWorkTablesErrHndlr:

  MsgBox Str(Err.Number) & " " & Err.Description, vbExclamation, "Error!"
  Resume Next

End Sub

TIA,
john

--
John Chambless



Mon, 08 Jul 2002 03:00:00 GMT  
 Error -2147467259 - Could not find installable ISAM using ADO 2.1
Reworked error handling in both procedures (see code below) that use ADO.
"DropWorkTables" is called first and works fine. "ProcessCommand" fails on
the line "comMSAccessCommand.Execute" ; here's the message:

VB Error #0
    Generated by:
    Description:
Error #1
    ADO Error:    #-2147467259
    Description:    Could not find installable ISAM
    Source:            Microsoft JET Database engine

John

Pull the string, and it will follow wherever you wish.  Push it, and it will
go nowhere at all. - Dwight D. Eisenhower

The head thinks, the hands labor, but it's the heart that laughs. - Liz
Curtis Higgs

The one thing we can never get enough of is love. And the one thing we never
give enough is love. - Henry Miller

Private Sub DropWorkTables()

Dim conMSAccessConnection As ADODB.Connection
Dim comMSAccessCommand As ADODB.Command
Dim rsWorkTablesSchema As ADODB.Recordset
Dim strTableName As String
Dim strTableType As String

Dim Errs1 As ADODB.Errors
Dim i As Integer
Dim strTmp As String

On Error GoTo DropWorkTablesErrHndlr

  Set conMSAccessConnection = New ADODB.Connection
  Set comMSAccessCommand = New ADODB.Command
  Set rsWorkTablesSchema = New ADODB.Recordset

  conMSAccessConnection.ConnectionString = MSACCESS_CONNECT_STRING

  conMSAccessConnection.Open

  Set rsWorkTablesSchema = conMSAccessConnection.OpenSchema(adSchemaTables,
Array(Empty, Empty, Empty, "TABLE"))

  Do Until rsWorkTablesSchema.EOF

    strTableName = rsWorkTablesSchema!TABLE_NAME
    strTableType = rsWorkTablesSchema!TABLE_TYPE

    If strTableType = "TABLE" Then
      comMSAccessCommand.CommandText = "DROP TABLE " & strTableName
      comMSAccessCommand.CommandType = adCmdText
      comMSAccessCommand.ActiveConnection = conMSAccessConnection
      comMSAccessCommand.Execute
    End If

    rsWorkTablesSchema.MoveNext

  Loop

  GoTo Done

Done:

  If rsWorkTablesSchema.State = adStateOpen Then
    rsWorkTablesSchema.Close
  End If

  If conMSAccessConnection.State = adStateOpen Then
    conMSAccessConnection.Close
  End If

  Set rsWorkTablesSchema = Nothing
  Set comMSAccessCommand = Nothing
  Set conMSAccessConnection = Nothing

Exit Sub

DropWorkTablesErrHndlr:

Dim errLoop As Error
Dim strError As String

' In case conMSAccessConnection isn't set or other initialization problems
On Error Resume Next

  i = 1

  ' Process
  strTmp = strTmp & vbCrLf & "VB Error # " & Str(Err.Number)
  strTmp = strTmp & vbCrLf & "   Generated by " & Err.Source
  strTmp = strTmp & vbCrLf & "   Description  " & Err.Description

  ' Enumerate Errors collection and display properties of
  ' each Error object.
  Set Errs1 = conMSAccessConnection.Errors
  For Each errLoop In Errs1
    With errLoop
      strTmp = strTmp & vbCrLf & "Error #" & i & ":"
      strTmp = strTmp & vbCrLf & "   ADO Error   #" & .Number
      strTmp = strTmp & vbCrLf & "   Description  " & .Description
      strTmp = strTmp & vbCrLf & "   Source       " & .Source
      i = i + 1
    End With

  MsgBox strTmp, , "DropWorkTables Error"

' Clean up Gracefully
  On Error Resume Next
  GoTo Done

End Sub

Private Function ProcessCommand(strCommandText As String, _
                                enmCommandType As CommandTypeEnum) As
Boolean

Dim conMSAccessConnection As ADODB.Connection
Dim comMSAccessCommand As ADODB.Command

Dim Errs1 As ADODB.Errors
Dim i As Integer
Dim strTmp As String

On Error GoTo ProcessCommandErrHndlr

  Set conMSAccessConnection = New ADODB.Connection
  Set comMSAccessCommand = New ADODB.Command

  conMSAccessConnection.ConnectionString = MSACCESS_CONNECT_STRING

  conMSAccessConnection.Open

  comMSAccessCommand.CommandText = strCommandText
  comMSAccessCommand.CommandType = enmCommandType
  comMSAccessCommand.ActiveConnection = conMSAccessConnection
  comMSAccessCommand.Execute

  ProcessCommand = True

  GoTo Done

Done:

  If conMSAccessConnection.State = adStateOpen Then
    conMSAccessConnection.Close
  End If

  Set comMSAccessCommand = Nothing
  Set conMSAccessConnection = Nothing

  Exit Function

ProcessCommandErrHndlr:

Dim errLoop As Error
Dim strError As String

' In case conMSAccessConnection isn't set or other initialization problems
On Error Resume Next

  i = 1

  ' Process
  strTmp = strTmp & vbCrLf & "VB Error # " & Str(Err.Number)
  strTmp = strTmp & vbCrLf & "   Generated by " & Err.Source
  strTmp = strTmp & vbCrLf & "   Description  " & Err.Description

  ' Enumerate Errors collection and display properties of
  ' each Error object.
  Set Errs1 = conMSAccessConnection.Errors
  For Each errLoop In Errs1
    With errLoop
      strTmp = strTmp & vbCrLf & "Error #" & i & ":"
      strTmp = strTmp & vbCrLf & "   ADO Error   #" & .Number
      strTmp = strTmp & vbCrLf & "   Description  " & .Description
      strTmp = strTmp & vbCrLf & "   Source       " & .Source
      i = i + 1
    End With
  Next

  MsgBox strTmp, , "ProcessCommand Error"

' Clean up Gracefully
  On Error Resume Next
  ProcessCommand = False
  GoTo Done

End Function


Quote:
> Am getting the error (-2147467259 - Could not find installable ISAM) on
the
> line "comMSAccessCommand.Execute" in the procedure _ProcessCommand_ (see
> below) but not in the procedure _DropWorkTables_. I'm using ADO 2.1, VB6,
> Access 97, WINNT 4.0 SP6. Anyone able to help me? Do I need to update ADO,
> VB6, and/or Access with service packs?

> How do I check to see if service packs/updates have been applied to ADO,
> VB6, and Access? Bottom of the

> Private Function ProcessCommand(strCommandText As String) As Boolean

> Dim conMSAccessConnection As ADODB.Connection
> Dim comMSAccessCommand As ADODB.Command

> On Error GoTo ProcessCommandErrHndlr

>   Set conMSAccessConnection = New ADODB.Connection
>   Set comMSAccessCommand = New ADODB.Command

>   conMSAccessConnection.ConnectionString = MSACCESS_CONNECT_STRING

>   conMSAccessConnection.Open

>   comMSAccessCommand.CommandText = strCommandText
>   comMSAccessCommand.CommandType = adCmdText
>   comMSAccessCommand.ActiveConnection = conMSAccessConnection
>   comMSAccessCommand.Execute

>   conMSAccessConnection.Close

>   Set comMSAccessCommand = Nothing
>   Set conMSAccessConnection = Nothing

>   ProcessCommand = True

> Exit Function

> ProcessCommandErrHndlr:

>   MsgBox Str(Err.Number) & " " & Err.Description, vbExclamation, "Error!"
>   ProcessCommand = False

> End Function

> Private Sub DropWorkTables()

> Dim conMSAccessConnection As ADODB.Connection
> Dim comMSAccessConnection As ADODB.Command
> Dim rsWorkTablesSchema As ADODB.Recordset
> Dim strTableName As String
> Dim strTableType As String

> On Error GoTo DropWorkTablesErrHndlr

>   Set conMSAccessConnection = New ADODB.Connection
>   Set comMSAccessConnection = New ADODB.Command
>   Set rsWorkTablesSchema = New ADODB.Recordset

>   conMSAccessConnection.ConnectionString = MSACCESS_CONNECT_STRING

>   conMSAccessConnection.Open

>   Set rsWorkTablesSchema =

conMSAccessConnection.OpenSchema(adSchemaTables,

- Show quoted text -

Quote:
> Array(Empty, Empty, Empty, "TABLE"))

>   Do Until rsWorkTablesSchema.EOF

>     strTableName = rsWorkTablesSchema!TABLE_NAME
>     strTableType = rsWorkTablesSchema!TABLE_TYPE

>     If strTableType = "TABLE" Then
>       comMSAccessConnection.CommandText = "DROP TABLE " & strTableName
>       comMSAccessConnection.CommandType = adCmdText
>       comMSAccessConnection.ActiveConnection = conMSAccessConnection
>       comMSAccessConnection.Execute
>     End If

>     rsWorkTablesSchema.MoveNext

>   Loop

>   rsWorkTablesSchema.Close
>   conMSAccessConnection.Close

>   Set rsWorkTablesSchema = Nothing
>   Set comMSAccessConnection = Nothing
>   Set conMSAccessConnection = Nothing

> Exit Sub

> DropWorkTablesErrHndlr:

>   MsgBox Str(Err.Number) & " " & Err.Description, vbExclamation, "Error!"
>   Resume Next

> End Sub

> TIA,
> john

> --
> John Chambless




Mon, 08 Jul 2002 03:00:00 GMT  
 Error -2147467259 - Could not find installable ISAM using ADO 2.1
What kind of table are you trying to access with the strCommandText
argument? If you are trying to access a linked table of some sort (which is
an Installable ISAM) then you need to have the correct registry settings
under Jet xx where xx is the version of Jet.

Example:
The following text (if stored as a .reg file) will put the Installable ISAM
setting in the registry under Jet4.0 in the registry.

REGEDIT4

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\ISAM Formats\FoxPro 2.6]
"Engine"="Xbase"
"ExportFilter"="Microsoft FoxPro 2.6 (*.dbf)"
"CanLink"=hex:01
"OneTablePerFile"=hex:01
"IsamType"=dword:00000000
"IndexDialog"=hex:01
"IndexFilter"="FoxPro Index (*.idx;*.cdx)"
"CreateDBOnExport"=hex:00
"ResultTextExport"="Export data from the current database into a Microsoft
FoxPro 2.6 file.  This process will overwrite the data if exported to an
existing file."
"SupportsLongNames"=hex:00

Hope this helps

Steve


Quote:
> Reworked error handling in both procedures (see code below) that use ADO.
> "DropWorkTables" is called first and works fine. "ProcessCommand" fails on
> the line "comMSAccessCommand.Execute" ; here's the message:

> VB Error #0
>     Generated by:
>     Description:
> Error #1
>     ADO Error:    #-2147467259
>     Description:    Could not find installable ISAM
>     Source:            Microsoft JET Database engine

> John

> Pull the string, and it will follow wherever you wish.  Push it, and it
will
> go nowhere at all. - Dwight D. Eisenhower

> The head thinks, the hands labor, but it's the heart that laughs. - Liz
> Curtis Higgs

> The one thing we can never get enough of is love. And the one thing we
never
> give enough is love. - Henry Miller

> Private Sub DropWorkTables()

> Dim conMSAccessConnection As ADODB.Connection
> Dim comMSAccessCommand As ADODB.Command
> Dim rsWorkTablesSchema As ADODB.Recordset
> Dim strTableName As String
> Dim strTableType As String

> Dim Errs1 As ADODB.Errors
> Dim i As Integer
> Dim strTmp As String

> On Error GoTo DropWorkTablesErrHndlr

>   Set conMSAccessConnection = New ADODB.Connection
>   Set comMSAccessCommand = New ADODB.Command
>   Set rsWorkTablesSchema = New ADODB.Recordset

>   conMSAccessConnection.ConnectionString = MSACCESS_CONNECT_STRING

>   conMSAccessConnection.Open

>   Set rsWorkTablesSchema =

conMSAccessConnection.OpenSchema(adSchemaTables,

- Show quoted text -

Quote:
> Array(Empty, Empty, Empty, "TABLE"))

>   Do Until rsWorkTablesSchema.EOF

>     strTableName = rsWorkTablesSchema!TABLE_NAME
>     strTableType = rsWorkTablesSchema!TABLE_TYPE

>     If strTableType = "TABLE" Then
>       comMSAccessCommand.CommandText = "DROP TABLE " & strTableName
>       comMSAccessCommand.CommandType = adCmdText
>       comMSAccessCommand.ActiveConnection = conMSAccessConnection
>       comMSAccessCommand.Execute
>     End If

>     rsWorkTablesSchema.MoveNext

>   Loop

>   GoTo Done

> Done:

>   If rsWorkTablesSchema.State = adStateOpen Then
>     rsWorkTablesSchema.Close
>   End If

>   If conMSAccessConnection.State = adStateOpen Then
>     conMSAccessConnection.Close
>   End If

>   Set rsWorkTablesSchema = Nothing
>   Set comMSAccessCommand = Nothing
>   Set conMSAccessConnection = Nothing

> Exit Sub

> DropWorkTablesErrHndlr:

> Dim errLoop As Error
> Dim strError As String

> ' In case conMSAccessConnection isn't set or other initialization problems
> On Error Resume Next

>   i = 1

>   ' Process
>   strTmp = strTmp & vbCrLf & "VB Error # " & Str(Err.Number)
>   strTmp = strTmp & vbCrLf & "   Generated by " & Err.Source
>   strTmp = strTmp & vbCrLf & "   Description  " & Err.Description

>   ' Enumerate Errors collection and display properties of
>   ' each Error object.
>   Set Errs1 = conMSAccessConnection.Errors
>   For Each errLoop In Errs1
>     With errLoop
>       strTmp = strTmp & vbCrLf & "Error #" & i & ":"
>       strTmp = strTmp & vbCrLf & "   ADO Error   #" & .Number
>       strTmp = strTmp & vbCrLf & "   Description  " & .Description
>       strTmp = strTmp & vbCrLf & "   Source       " & .Source
>       i = i + 1
>     End With

>   MsgBox strTmp, , "DropWorkTables Error"

> ' Clean up Gracefully
>   On Error Resume Next
>   GoTo Done

> End Sub

> Private Function ProcessCommand(strCommandText As String, _
>                                 enmCommandType As CommandTypeEnum) As
> Boolean

> Dim conMSAccessConnection As ADODB.Connection
> Dim comMSAccessCommand As ADODB.Command

> Dim Errs1 As ADODB.Errors
> Dim i As Integer
> Dim strTmp As String

> On Error GoTo ProcessCommandErrHndlr

>   Set conMSAccessConnection = New ADODB.Connection
>   Set comMSAccessCommand = New ADODB.Command

>   conMSAccessConnection.ConnectionString = MSACCESS_CONNECT_STRING

>   conMSAccessConnection.Open

>   comMSAccessCommand.CommandText = strCommandText
>   comMSAccessCommand.CommandType = enmCommandType
>   comMSAccessCommand.ActiveConnection = conMSAccessConnection
>   comMSAccessCommand.Execute

>   ProcessCommand = True

>   GoTo Done

> Done:

>   If conMSAccessConnection.State = adStateOpen Then
>     conMSAccessConnection.Close
>   End If

>   Set comMSAccessCommand = Nothing
>   Set conMSAccessConnection = Nothing

>   Exit Function

> ProcessCommandErrHndlr:

> Dim errLoop As Error
> Dim strError As String

> ' In case conMSAccessConnection isn't set or other initialization problems
> On Error Resume Next

>   i = 1

>   ' Process
>   strTmp = strTmp & vbCrLf & "VB Error # " & Str(Err.Number)
>   strTmp = strTmp & vbCrLf & "   Generated by " & Err.Source
>   strTmp = strTmp & vbCrLf & "   Description  " & Err.Description

>   ' Enumerate Errors collection and display properties of
>   ' each Error object.
>   Set Errs1 = conMSAccessConnection.Errors
>   For Each errLoop In Errs1
>     With errLoop
>       strTmp = strTmp & vbCrLf & "Error #" & i & ":"
>       strTmp = strTmp & vbCrLf & "   ADO Error   #" & .Number
>       strTmp = strTmp & vbCrLf & "   Description  " & .Description
>       strTmp = strTmp & vbCrLf & "   Source       " & .Source
>       i = i + 1
>     End With
>   Next

>   MsgBox strTmp, , "ProcessCommand Error"

> ' Clean up Gracefully
>   On Error Resume Next
>   ProcessCommand = False
>   GoTo Done

> End Function



> > Am getting the error (-2147467259 - Could not find installable ISAM) on
> the
> > line "comMSAccessCommand.Execute" in the procedure _ProcessCommand_ (see
> > below) but not in the procedure _DropWorkTables_. I'm using ADO 2.1,
VB6,
> > Access 97, WINNT 4.0 SP6. Anyone able to help me? Do I need to update
ADO,
> > VB6, and/or Access with service packs?

> > How do I check to see if service packs/updates have been applied to ADO,
> > VB6, and Access? Bottom of the

> > Private Function ProcessCommand(strCommandText As String) As Boolean

> > Dim conMSAccessConnection As ADODB.Connection
> > Dim comMSAccessCommand As ADODB.Command

> > On Error GoTo ProcessCommandErrHndlr

> >   Set conMSAccessConnection = New ADODB.Connection
> >   Set comMSAccessCommand = New ADODB.Command

> >   conMSAccessConnection.ConnectionString = MSACCESS_CONNECT_STRING

> >   conMSAccessConnection.Open

> >   comMSAccessCommand.CommandText = strCommandText
> >   comMSAccessCommand.CommandType = adCmdText
> >   comMSAccessCommand.ActiveConnection = conMSAccessConnection
> >   comMSAccessCommand.Execute

> >   conMSAccessConnection.Close

> >   Set comMSAccessCommand = Nothing
> >   Set conMSAccessConnection = Nothing

> >   ProcessCommand = True

> > Exit Function

> > ProcessCommandErrHndlr:

> >   MsgBox Str(Err.Number) & " " & Err.Description, vbExclamation,
"Error!"
> >   ProcessCommand = False

> > End Function

> > Private Sub DropWorkTables()

> > Dim conMSAccessConnection As ADODB.Connection
> > Dim comMSAccessConnection As ADODB.Command
> > Dim rsWorkTablesSchema As ADODB.Recordset
> > Dim strTableName As String
> > Dim strTableType As String

> > On Error GoTo DropWorkTablesErrHndlr

> >   Set conMSAccessConnection = New ADODB.Connection
> >   Set comMSAccessConnection = New ADODB.Command
> >   Set rsWorkTablesSchema = New ADODB.Recordset

> >   conMSAccessConnection.ConnectionString = MSACCESS_CONNECT_STRING

> >   conMSAccessConnection.Open

> >   Set rsWorkTablesSchema =
> conMSAccessConnection.OpenSchema(adSchemaTables,
> > Array(Empty, Empty, Empty, "TABLE"))

> >   Do Until rsWorkTablesSchema.EOF

> >     strTableName = rsWorkTablesSchema!TABLE_NAME
> >     strTableType = rsWorkTablesSchema!TABLE_TYPE

> >     If strTableType = "TABLE" Then
> >       comMSAccessConnection.CommandText = "DROP TABLE " & strTableName
> >       comMSAccessConnection.CommandType = adCmdText
> >       comMSAccessConnection.ActiveConnection = conMSAccessConnection
> >       comMSAccessConnection.Execute
> >     End If

> >     rsWorkTablesSchema.MoveNext

> >   Loop

> >   rsWorkTablesSchema.Close
> >   conMSAccessConnection.Close

> >   Set rsWorkTablesSchema = Nothing
> >   Set comMSAccessConnection = Nothing
> >   Set conMSAccessConnection = Nothing

> > Exit Sub

> > DropWorkTablesErrHndlr:

> >   MsgBox Str(Err.Number) & " " & Err.Description, vbExclamation,
"Error!"
> >   Resume Next

> > End Sub

> > TIA,
> > john

> > --
> > John Chambless




Tue, 09 Jul 2002 03:00:00 GMT  
 Error -2147467259 - Could not find installable ISAM using ADO 2.1
Steve,

My problem is with running my VB app against MSAccess
(Provider=Microsoft.Jet.OLEDB.4.0). When I change my target DB to SQLServer
(Provider=SQLOLEDB), I have no problems (except for syntactical differences
between Jet-SQL and Transact-SQL.

Another user in this or another news group gets the same error number but a
different description (E_Fail status (-245755 (-2147467259)) on
MoveFirst/MoveNext).

Any ideas?

john


Quote:
> What kind of table are you trying to access with the strCommandText
> argument? If you are trying to access a linked table of some sort (which
is
> an Installable ISAM) then you need to have the correct registry settings
> under Jet xx where xx is the version of Jet.

> Example:
> The following text (if stored as a .reg file) will put the Installable
ISAM
> setting in the registry under Jet4.0 in the registry.

> REGEDIT4

> [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\ISAM Formats\FoxPro 2.6]
> "Engine"="Xbase"
> "ExportFilter"="Microsoft FoxPro 2.6 (*.dbf)"
> "CanLink"=hex:01
> "OneTablePerFile"=hex:01
> "IsamType"=dword:00000000
> "IndexDialog"=hex:01
> "IndexFilter"="FoxPro Index (*.idx;*.cdx)"
> "CreateDBOnExport"=hex:00
> "ResultTextExport"="Export data from the current database into a Microsoft
> FoxPro 2.6 file.  This process will overwrite the data if exported to an
> existing file."
> "SupportsLongNames"=hex:00

> Hope this helps

> Steve



> > Reworked error handling in both procedures (see code below) that use
ADO.
> > "DropWorkTables" is called first and works fine. "ProcessCommand" fails
on
> > the line "comMSAccessCommand.Execute" ; here's the message:

> > VB Error #0
> >     Generated by:
> >     Description:
> > Error #1
> >     ADO Error:    #-2147467259
> >     Description:    Could not find installable ISAM
> >     Source:            Microsoft JET Database engine

> > John

> > Pull the string, and it will follow wherever you wish.  Push it, and it
> will
> > go nowhere at all. - Dwight D. Eisenhower

> > The head thinks, the hands labor, but it's the heart that laughs. - Liz
> > Curtis Higgs

> > The one thing we can never get enough of is love. And the one thing we
> never
> > give enough is love. - Henry Miller

> > Private Sub DropWorkTables()

> > Dim conMSAccessConnection As ADODB.Connection
> > Dim comMSAccessCommand As ADODB.Command
> > Dim rsWorkTablesSchema As ADODB.Recordset
> > Dim strTableName As String
> > Dim strTableType As String

> > Dim Errs1 As ADODB.Errors
> > Dim i As Integer
> > Dim strTmp As String

> > On Error GoTo DropWorkTablesErrHndlr

> >   Set conMSAccessConnection = New ADODB.Connection
> >   Set comMSAccessCommand = New ADODB.Command
> >   Set rsWorkTablesSchema = New ADODB.Recordset

> >   conMSAccessConnection.ConnectionString = MSACCESS_CONNECT_STRING

> >   conMSAccessConnection.Open

> >   Set rsWorkTablesSchema =
> conMSAccessConnection.OpenSchema(adSchemaTables,
> > Array(Empty, Empty, Empty, "TABLE"))

> >   Do Until rsWorkTablesSchema.EOF

> >     strTableName = rsWorkTablesSchema!TABLE_NAME
> >     strTableType = rsWorkTablesSchema!TABLE_TYPE

> >     If strTableType = "TABLE" Then
> >       comMSAccessCommand.CommandText = "DROP TABLE " & strTableName
> >       comMSAccessCommand.CommandType = adCmdText
> >       comMSAccessCommand.ActiveConnection = conMSAccessConnection
> >       comMSAccessCommand.Execute
> >     End If

> >     rsWorkTablesSchema.MoveNext

> >   Loop

> >   GoTo Done

> > Done:

> >   If rsWorkTablesSchema.State = adStateOpen Then
> >     rsWorkTablesSchema.Close
> >   End If

> >   If conMSAccessConnection.State = adStateOpen Then
> >     conMSAccessConnection.Close
> >   End If

> >   Set rsWorkTablesSchema = Nothing
> >   Set comMSAccessCommand = Nothing
> >   Set conMSAccessConnection = Nothing

> > Exit Sub

> > DropWorkTablesErrHndlr:

> > Dim errLoop As Error
> > Dim strError As String

> > ' In case conMSAccessConnection isn't set or other initialization
problems
> > On Error Resume Next

> >   i = 1

> >   ' Process
> >   strTmp = strTmp & vbCrLf & "VB Error # " & Str(Err.Number)
> >   strTmp = strTmp & vbCrLf & "   Generated by " & Err.Source
> >   strTmp = strTmp & vbCrLf & "   Description  " & Err.Description

> >   ' Enumerate Errors collection and display properties of
> >   ' each Error object.
> >   Set Errs1 = conMSAccessConnection.Errors
> >   For Each errLoop In Errs1
> >     With errLoop
> >       strTmp = strTmp & vbCrLf & "Error #" & i & ":"
> >       strTmp = strTmp & vbCrLf & "   ADO Error   #" & .Number
> >       strTmp = strTmp & vbCrLf & "   Description  " & .Description
> >       strTmp = strTmp & vbCrLf & "   Source       " & .Source
> >       i = i + 1
> >     End With

> >   MsgBox strTmp, , "DropWorkTables Error"

> > ' Clean up Gracefully
> >   On Error Resume Next
> >   GoTo Done

> > End Sub

> > Private Function ProcessCommand(strCommandText As String, _
> >                                 enmCommandType As CommandTypeEnum) As
> > Boolean

> > Dim conMSAccessConnection As ADODB.Connection
> > Dim comMSAccessCommand As ADODB.Command

> > Dim Errs1 As ADODB.Errors
> > Dim i As Integer
> > Dim strTmp As String

> > On Error GoTo ProcessCommandErrHndlr

> >   Set conMSAccessConnection = New ADODB.Connection
> >   Set comMSAccessCommand = New ADODB.Command

> >   conMSAccessConnection.ConnectionString = MSACCESS_CONNECT_STRING

> >   conMSAccessConnection.Open

> >   comMSAccessCommand.CommandText = strCommandText
> >   comMSAccessCommand.CommandType = enmCommandType
> >   comMSAccessCommand.ActiveConnection = conMSAccessConnection
> >   comMSAccessCommand.Execute

> >   ProcessCommand = True

> >   GoTo Done

> > Done:

> >   If conMSAccessConnection.State = adStateOpen Then
> >     conMSAccessConnection.Close
> >   End If

> >   Set comMSAccessCommand = Nothing
> >   Set conMSAccessConnection = Nothing

> >   Exit Function

> > ProcessCommandErrHndlr:

> > Dim errLoop As Error
> > Dim strError As String

> > ' In case conMSAccessConnection isn't set or other initialization
problems
> > On Error Resume Next

> >   i = 1

> >   ' Process
> >   strTmp = strTmp & vbCrLf & "VB Error # " & Str(Err.Number)
> >   strTmp = strTmp & vbCrLf & "   Generated by " & Err.Source
> >   strTmp = strTmp & vbCrLf & "   Description  " & Err.Description

> >   ' Enumerate Errors collection and display properties of
> >   ' each Error object.
> >   Set Errs1 = conMSAccessConnection.Errors
> >   For Each errLoop In Errs1
> >     With errLoop
> >       strTmp = strTmp & vbCrLf & "Error #" & i & ":"
> >       strTmp = strTmp & vbCrLf & "   ADO Error   #" & .Number
> >       strTmp = strTmp & vbCrLf & "   Description  " & .Description
> >       strTmp = strTmp & vbCrLf & "   Source       " & .Source
> >       i = i + 1
> >     End With
> >   Next

> >   MsgBox strTmp, , "ProcessCommand Error"

> > ' Clean up Gracefully
> >   On Error Resume Next
> >   ProcessCommand = False
> >   GoTo Done

> > End Function



> > > Am getting the error (-2147467259 - Could not find installable ISAM)
on
> > the
> > > line "comMSAccessCommand.Execute" in the procedure _ProcessCommand_
(see
> > > below) but not in the procedure _DropWorkTables_. I'm using ADO 2.1,
> VB6,
> > > Access 97, WINNT 4.0 SP6. Anyone able to help me? Do I need to update
> ADO,
> > > VB6, and/or Access with service packs?

> > > How do I check to see if service packs/updates have been applied to
ADO,
> > > VB6, and Access? Bottom of the

> > > Private Function ProcessCommand(strCommandText As String) As Boolean

> > > Dim conMSAccessConnection As ADODB.Connection
> > > Dim comMSAccessCommand As ADODB.Command

> > > On Error GoTo ProcessCommandErrHndlr

> > >   Set conMSAccessConnection = New ADODB.Connection
> > >   Set comMSAccessCommand = New ADODB.Command

> > >   conMSAccessConnection.ConnectionString = MSACCESS_CONNECT_STRING

> > >   conMSAccessConnection.Open

> > >   comMSAccessCommand.CommandText = strCommandText
> > >   comMSAccessCommand.CommandType = adCmdText
> > >   comMSAccessCommand.ActiveConnection = conMSAccessConnection
> > >   comMSAccessCommand.Execute

> > >   conMSAccessConnection.Close

> > >   Set comMSAccessCommand = Nothing
> > >   Set conMSAccessConnection = Nothing

> > >   ProcessCommand = True

> > > Exit Function

> > > ProcessCommandErrHndlr:

> > >   MsgBox Str(Err.Number) & " " & Err.Description, vbExclamation,
> "Error!"
> > >   ProcessCommand = False

> > > End Function

> > > Private Sub DropWorkTables()

> > > Dim conMSAccessConnection As ADODB.Connection
> > > Dim comMSAccessConnection As ADODB.Command
> > > Dim rsWorkTablesSchema As ADODB.Recordset
> > > Dim strTableName As String
> > > Dim strTableType As String

> > > On Error GoTo DropWorkTablesErrHndlr

> > >   Set conMSAccessConnection = New ADODB.Connection
> > >   Set comMSAccessConnection = New ADODB.Command
> > >   Set rsWorkTablesSchema = New ADODB.Recordset

> > >   conMSAccessConnection.ConnectionString = MSACCESS_CONNECT_STRING

> > >   conMSAccessConnection.Open

> > >   Set rsWorkTablesSchema =
> > conMSAccessConnection.OpenSchema(adSchemaTables,
> > > Array(Empty, Empty, Empty, "TABLE"))

> > >   Do Until rsWorkTablesSchema.EOF

> > >     strTableName = rsWorkTablesSchema!TABLE_NAME
> > >     strTableType = rsWorkTablesSchema!TABLE_TYPE

> > >     If strTableType = "TABLE" Then
> > >       comMSAccessConnection.CommandText =

...

read more »



Tue, 09 Jul 2002 03:00:00 GMT  
 Error -2147467259 - Could not find installable ISAM using ADO 2.1
John,
I have come to not trust these numbers as you can get the same one for more
than one error. I experienced this again today going against a main frame
with a minisoft ODBC driver. I was getting three different error
descriptions depending on the SQL I was passing and the number was the same.
I have only gotten the Installable ISAM thing with linked table in Access
where the linked table is some sort of xBase table. I suppose it could
happen with SQL Server but I haven't heard of it. Nevertheless, if you can
figure out the ISAM access is looking for you can input the values in the
registry the same as the short .reg file I sent.

Steve


Quote:
> Steve,

> My problem is with running my VB app against MSAccess
> (Provider=Microsoft.Jet.OLEDB.4.0). When I change my target DB to
SQLServer
> (Provider=SQLOLEDB), I have no problems (except for syntactical
differences
> between Jet-SQL and Transact-SQL.

> Another user in this or another news group gets the same error number but
a
> different description (E_Fail status (-245755 (-2147467259)) on
> MoveFirst/MoveNext).

> Any ideas?

> john



> > What kind of table are you trying to access with the strCommandText
> > argument? If you are trying to access a linked table of some sort (which
> is
> > an Installable ISAM) then you need to have the correct registry settings
> > under Jet xx where xx is the version of Jet.

> > Example:
> > The following text (if stored as a .reg file) will put the Installable
> ISAM
> > setting in the registry under Jet4.0 in the registry.

> > REGEDIT4

> > [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\ISAM Formats\FoxPro 2.6]
> > "Engine"="Xbase"
> > "ExportFilter"="Microsoft FoxPro 2.6 (*.dbf)"
> > "CanLink"=hex:01
> > "OneTablePerFile"=hex:01
> > "IsamType"=dword:00000000
> > "IndexDialog"=hex:01
> > "IndexFilter"="FoxPro Index (*.idx;*.cdx)"
> > "CreateDBOnExport"=hex:00
> > "ResultTextExport"="Export data from the current database into a
Microsoft
> > FoxPro 2.6 file.  This process will overwrite the data if exported to an
> > existing file."
> > "SupportsLongNames"=hex:00

> > Hope this helps

> > Steve



> > > Reworked error handling in both procedures (see code below) that use
> ADO.
> > > "DropWorkTables" is called first and works fine. "ProcessCommand"
fails
> on
> > > the line "comMSAccessCommand.Execute" ; here's the message:

> > > VB Error #0
> > >     Generated by:
> > >     Description:
> > > Error #1
> > >     ADO Error:    #-2147467259
> > >     Description:    Could not find installable ISAM
> > >     Source:            Microsoft JET Database engine

> > > John

> > > Pull the string, and it will follow wherever you wish.  Push it, and
it
> > will
> > > go nowhere at all. - Dwight D. Eisenhower

> > > The head thinks, the hands labor, but it's the heart that laughs. -
Liz
> > > Curtis Higgs

> > > The one thing we can never get enough of is love. And the one thing we
> > never
> > > give enough is love. - Henry Miller

> > > Private Sub DropWorkTables()

> > > Dim conMSAccessConnection As ADODB.Connection
> > > Dim comMSAccessCommand As ADODB.Command
> > > Dim rsWorkTablesSchema As ADODB.Recordset
> > > Dim strTableName As String
> > > Dim strTableType As String

> > > Dim Errs1 As ADODB.Errors
> > > Dim i As Integer
> > > Dim strTmp As String

> > > On Error GoTo DropWorkTablesErrHndlr

> > >   Set conMSAccessConnection = New ADODB.Connection
> > >   Set comMSAccessCommand = New ADODB.Command
> > >   Set rsWorkTablesSchema = New ADODB.Recordset

> > >   conMSAccessConnection.ConnectionString = MSACCESS_CONNECT_STRING

> > >   conMSAccessConnection.Open

> > >   Set rsWorkTablesSchema =
> > conMSAccessConnection.OpenSchema(adSchemaTables,
> > > Array(Empty, Empty, Empty, "TABLE"))

> > >   Do Until rsWorkTablesSchema.EOF

> > >     strTableName = rsWorkTablesSchema!TABLE_NAME
> > >     strTableType = rsWorkTablesSchema!TABLE_TYPE

> > >     If strTableType = "TABLE" Then
> > >       comMSAccessCommand.CommandText = "DROP TABLE " & strTableName
> > >       comMSAccessCommand.CommandType = adCmdText
> > >       comMSAccessCommand.ActiveConnection = conMSAccessConnection
> > >       comMSAccessCommand.Execute
> > >     End If

> > >     rsWorkTablesSchema.MoveNext

> > >   Loop

> > >   GoTo Done

> > > Done:

> > >   If rsWorkTablesSchema.State = adStateOpen Then
> > >     rsWorkTablesSchema.Close
> > >   End If

> > >   If conMSAccessConnection.State = adStateOpen Then
> > >     conMSAccessConnection.Close
> > >   End If

> > >   Set rsWorkTablesSchema = Nothing
> > >   Set comMSAccessCommand = Nothing
> > >   Set conMSAccessConnection = Nothing

> > > Exit Sub

> > > DropWorkTablesErrHndlr:

> > > Dim errLoop As Error
> > > Dim strError As String

> > > ' In case conMSAccessConnection isn't set or other initialization
> problems
> > > On Error Resume Next

> > >   i = 1

> > >   ' Process
> > >   strTmp = strTmp & vbCrLf & "VB Error # " & Str(Err.Number)
> > >   strTmp = strTmp & vbCrLf & "   Generated by " & Err.Source
> > >   strTmp = strTmp & vbCrLf & "   Description  " & Err.Description

> > >   ' Enumerate Errors collection and display properties of
> > >   ' each Error object.
> > >   Set Errs1 = conMSAccessConnection.Errors
> > >   For Each errLoop In Errs1
> > >     With errLoop
> > >       strTmp = strTmp & vbCrLf & "Error #" & i & ":"
> > >       strTmp = strTmp & vbCrLf & "   ADO Error   #" & .Number
> > >       strTmp = strTmp & vbCrLf & "   Description  " & .Description
> > >       strTmp = strTmp & vbCrLf & "   Source       " & .Source
> > >       i = i + 1
> > >     End With

> > >   MsgBox strTmp, , "DropWorkTables Error"

> > > ' Clean up Gracefully
> > >   On Error Resume Next
> > >   GoTo Done

> > > End Sub

> > > Private Function ProcessCommand(strCommandText As String, _
> > >                                 enmCommandType As CommandTypeEnum) As
> > > Boolean

> > > Dim conMSAccessConnection As ADODB.Connection
> > > Dim comMSAccessCommand As ADODB.Command

> > > Dim Errs1 As ADODB.Errors
> > > Dim i As Integer
> > > Dim strTmp As String

> > > On Error GoTo ProcessCommandErrHndlr

> > >   Set conMSAccessConnection = New ADODB.Connection
> > >   Set comMSAccessCommand = New ADODB.Command

> > >   conMSAccessConnection.ConnectionString = MSACCESS_CONNECT_STRING

> > >   conMSAccessConnection.Open

> > >   comMSAccessCommand.CommandText = strCommandText
> > >   comMSAccessCommand.CommandType = enmCommandType
> > >   comMSAccessCommand.ActiveConnection = conMSAccessConnection
> > >   comMSAccessCommand.Execute

> > >   ProcessCommand = True

> > >   GoTo Done

> > > Done:

> > >   If conMSAccessConnection.State = adStateOpen Then
> > >     conMSAccessConnection.Close
> > >   End If

> > >   Set comMSAccessCommand = Nothing
> > >   Set conMSAccessConnection = Nothing

> > >   Exit Function

> > > ProcessCommandErrHndlr:

> > > Dim errLoop As Error
> > > Dim strError As String

> > > ' In case conMSAccessConnection isn't set or other initialization
> problems
> > > On Error Resume Next

> > >   i = 1

> > >   ' Process
> > >   strTmp = strTmp & vbCrLf & "VB Error # " & Str(Err.Number)
> > >   strTmp = strTmp & vbCrLf & "   Generated by " & Err.Source
> > >   strTmp = strTmp & vbCrLf & "   Description  " & Err.Description

> > >   ' Enumerate Errors collection and display properties of
> > >   ' each Error object.
> > >   Set Errs1 = conMSAccessConnection.Errors
> > >   For Each errLoop In Errs1
> > >     With errLoop
> > >       strTmp = strTmp & vbCrLf & "Error #" & i & ":"
> > >       strTmp = strTmp & vbCrLf & "   ADO Error   #" & .Number
> > >       strTmp = strTmp & vbCrLf & "   Description  " & .Description
> > >       strTmp = strTmp & vbCrLf & "   Source       " & .Source
> > >       i = i + 1
> > >     End With
> > >   Next

> > >   MsgBox strTmp, , "ProcessCommand Error"

> > > ' Clean up Gracefully
> > >   On Error Resume Next
> > >   ProcessCommand = False
> > >   GoTo Done

> > > End Function



> > > > Am getting the error (-2147467259 - Could not find installable ISAM)
> on
> > > the
> > > > line "comMSAccessCommand.Execute" in the procedure _ProcessCommand_
> (see
> > > > below) but not in the procedure _DropWorkTables_. I'm using ADO 2.1,
> > VB6,
> > > > Access 97, WINNT 4.0 SP6. Anyone able to help me? Do I need to
update
> > ADO,
> > > > VB6, and/or Access with service packs?

> > > > How do I check to see if service packs/updates have been applied to
> ADO,
> > > > VB6, and Access? Bottom of the

> > > > Private Function ProcessCommand(strCommandText As String) As Boolean

> > > > Dim conMSAccessConnection As ADODB.Connection
> > > > Dim comMSAccessCommand As ADODB.Command

> > > > On Error GoTo ProcessCommandErrHndlr

> > > >   Set conMSAccessConnection = New ADODB.Connection
> > > >   Set comMSAccessCommand = New ADODB.Command

> > > >   conMSAccessConnection.ConnectionString = MSACCESS_CONNECT_STRING

> > > >   conMSAccessConnection.Open

> > > >   comMSAccessCommand.CommandText = strCommandText
> > > >   comMSAccessCommand.CommandType = adCmdText
> > > >   comMSAccessCommand.ActiveConnection = conMSAccessConnection
> > > >   comMSAccessCommand.Execute

> > > >   conMSAccessConnection.Close

...

read more »



Tue, 09 Jul 2002 03:00:00 GMT  
 Error -2147467259 - Could not find installable ISAM using ADO 2.1
Your problem may be the constant MSACCESS_CONNECT_STRING (which isn't posted).
Did you leave a space between Data and Source in the connect string?


Quote:
> Am getting the error (-2147467259 - Could not find installable ISAM) on the
> line "comMSAccessCommand.Execute" in the procedure _ProcessCommand_ (see
> below) but not in the procedure _DropWorkTables_. I'm using ADO 2.1, VB6,
> Access 97, WINNT 4.0 SP6. Anyone able to help me? Do I need to update ADO,
> VB6, and/or Access with service packs?

> How do I check to see if service packs/updates have been applied to ADO,
> VB6, and Access? Bottom of the

> Private Function ProcessCommand(strCommandText As String) As Boolean

> Dim conMSAccessConnection As ADODB.Connection
> Dim comMSAccessCommand As ADODB.Command

> On Error GoTo ProcessCommandErrHndlr

>   Set conMSAccessConnection = New ADODB.Connection
>   Set comMSAccessCommand = New ADODB.Command

>   conMSAccessConnection.ConnectionString = MSACCESS_CONNECT_STRING

>   conMSAccessConnection.Open

>   comMSAccessCommand.CommandText = strCommandText
>   comMSAccessCommand.CommandType = adCmdText
>   comMSAccessCommand.ActiveConnection = conMSAccessConnection
>   comMSAccessCommand.Execute

>   conMSAccessConnection.Close

>   Set comMSAccessCommand = Nothing
>   Set conMSAccessConnection = Nothing

>   ProcessCommand = True

> Exit Function

> ProcessCommandErrHndlr:

>   MsgBox Str(Err.Number) & " " & Err.Description, vbExclamation, "Error!"
>   ProcessCommand = False

> End Function

> Private Sub DropWorkTables()

> Dim conMSAccessConnection As ADODB.Connection
> Dim comMSAccessConnection As ADODB.Command
> Dim rsWorkTablesSchema As ADODB.Recordset
> Dim strTableName As String
> Dim strTableType As String

> On Error GoTo DropWorkTablesErrHndlr

>   Set conMSAccessConnection = New ADODB.Connection
>   Set comMSAccessConnection = New ADODB.Command
>   Set rsWorkTablesSchema = New ADODB.Recordset

>   conMSAccessConnection.ConnectionString = MSACCESS_CONNECT_STRING

>   conMSAccessConnection.Open

>   Set rsWorkTablesSchema = conMSAccessConnection.OpenSchema(adSchemaTables,
> Array(Empty, Empty, Empty, "TABLE"))

>   Do Until rsWorkTablesSchema.EOF

>     strTableName = rsWorkTablesSchema!TABLE_NAME
>     strTableType = rsWorkTablesSchema!TABLE_TYPE

>     If strTableType = "TABLE" Then
>       comMSAccessConnection.CommandText = "DROP TABLE " & strTableName
>       comMSAccessConnection.CommandType = adCmdText
>       comMSAccessConnection.ActiveConnection = conMSAccessConnection
>       comMSAccessConnection.Execute
>     End If

>     rsWorkTablesSchema.MoveNext

>   Loop

>   rsWorkTablesSchema.Close
>   conMSAccessConnection.Close

>   Set rsWorkTablesSchema = Nothing
>   Set comMSAccessConnection = Nothing
>   Set conMSAccessConnection = Nothing

> Exit Sub

> DropWorkTablesErrHndlr:

>   MsgBox Str(Err.Number) & " " & Err.Description, vbExclamation, "Error!"
>   Resume Next

> End Sub

> TIA,
> john

> --
> John Chambless




Wed, 10 Jul 2002 03:00:00 GMT  
 
 [ 6 post ] 

 Relevant Pages 

1. Error -2147467259 - Could not find installable ISAM using ADO 2.1

2. ADO 2.1 / Error -2147467259

3. Error: Could not find installable ISAM.

4. VB 3 Error 3170 Could Not Find Installable ISAM

5. Could'nt find installable ISAM - classic error but not easy

6. Error: Could not find installable ISAM.

7. Error - Could not find installable ISAM

8. Error: Could not find installable ISAM.

9. error 3170 Could not find installable ISAM

10. Error: Could not find installable ISAM

11. Cannot find installable ISAM error ---- using Access database

12. Can't find installable ISAM - ADO Nightmare!

 

 
Powered by phpBB® Forum Software