If miDB.State <> adStateClosed Then miDB.Close
If miRS.State <> adStateClosed Then miRS.Close
miDB.Open miConnectionStringaDSN
miRS.Open "select * from Tabla", miDB
La propiedad State de ambas variables me dice si están cerradas o abiertas.
En resumen, una vez cerrada la conexión a la base de datos en Access, conectaba miDB a otra base de datos, a través de un DSN (ya creado mediante ODBC usando el aplicativo odbcad32.exe del Windows) y usando el formato de cadena de conexión para System DSN de la web de ConnectionStrings.
Y entonces me saltaba este error:
El mensaje es: "Error 80004005 en tiempo de ejecución: no se pudo encontrar el archivo ISAM instalable."
Parecía que me faltaba instalar algo, pero cuando realizaba primero la conexión por DSN (sin conectar miDB ó miRS a ninguna base de datos con anterioridad) la aplicación funcionaba de maravilla.
Deduje que no era problemas de instalación. Cuando conectaba miDB y miRS a una base de datos, cerraba ambos objetos e intentaba abrir una nueva conexión a DSN (¡y esto sólo ocurría al conectar por DSN!), "algo" se quedaba bloqueando un archivo, en algún lugar, y como la nueva conexión por DSN no podía abrirlo, consideraba que el archivo no existía y me lanzaba el error.
Entonces cambié mi código a:
If miDB.State <> adStateClosed Then miDB.Close
If miRS.State <> adStateClosed Then miRS.Close
Set miDB = Nothing
Set miRS = Nothing
Set miDB = New Connection
Set miRS = New Recordset
Set miRS = New Recordset
miDB.Open miConnectionStringaDSN
miRS.Open "select * from Tabla", miDB
Y resolví el problema, ya no aparece el error de ISAM instalable, y pude conectarme a mi DSN sin más inconvenientes, pues al anular ambos objetos (miDB y miRS) destruyo cualquier enlace que quede flotando, en algún lugar, perdido en las entrañas de mi Windows.
3 comentarios:
Buenas yo tengo un datagrid, combobox y caja de texto cuando ejecuto me sale ese error , no se que hacer
Private Sub Form_Load()
Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source = C:\Users\Emi\Desktop\Proyecto 2\BD1." & _
"MDB ; Persist Security Info= False"
With Adodc1
.CommandType = adCmdText
.RecordSource = " Select * From Consultas"
.Refresh
Set DataGrid1.DataSource = Adodc1.Recordset
DataGrid1.MarqueeStyle = dbgHighlightRowRaiseCell
.Visible = False
End With
With Combo1
Combo1.Text = "largo"
End With
text1.Text = ""
End Sub
Private Sub Text1_Change()
On Error GoTo error_Handler
With Adodc1
If text1 <> "" Then
.Recordset.Filter = Combo1 & " LIKE '*" + text1 + "*'"
Else
.Recordset.Filter = ""
End If
.Refresh
End With
Exit Sub
error_Handler:
If Err.Number = 3265 Then
MsgBox " el campo seleccionado no es valido ", vbCritical
Else
MsgBox "dd", vbCritical
End If
End Sub
Tengo este error
If Clave.Text <> "" Then
consulta = "SELECT *FROM Clave_Encapsuladas WHERE Clave= " & Clave.Text & ""
adaptador = New OleDb.OleDbDataAdapter(consulta, conexion)
registro = New DataSet
adaptador.Fill(registro, "Clave_Encapsuladas")
lista = registro.Tables("Clave_Encapsuladas").Rows.Count
End If
del boton actualizar ayuda
Me gusta, Aprender programacion
Publicar un comentario