Error en consulta a Access desde Excel (ADO)

18/05/2006 - 09:56 por smartito | Informe spam
Buenas grupo,

A ver si me pueden hechar una mano ( y no al cuello :P )

Excel 2000
Access 2000


Tengo el siguiente código:



Const sPathBase As String = "rutabase\mibase.mdb" (he suprimido la
ruta especifica)

Dim he1, hs1, he2, hs2 As String

Set Cnn = New ADODB.Connection
Set rst = New ADODB.Recordset
Dim fecha As String

Dim fila, col As Double
fila = 21
col = 1

Call BorraTabla

With Cnn
.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & sPathBase & ";"
.Open

End With



rst.Open "select * from [HORARIO_X_DIA]", Cnn, adOpenDynamic,
adLockOptimistic




Cuando llega a la linea donde tiene que abrir el Recordset me indica el
siguiente error.
Textual:
"Se ha producido el error '-2147217911 (80040e09)' en tiempo de
ejecución:

No se puede leer ningún registro; no tiene permiso para READ en
'HORARIO_X_DIA'."

Si accedo a la tabla desde access, me permite diseñarla y verla en
modo ejecución... no se que puede estar pasando ???? alguna
sugerencia?

Si necesitais mas datos... indicarmelo

Gracias de antemano y un saludo !
Juan Antonio
 

Leer las respuestas

#1 Héctor Miguel
19/05/2006 - 06:39 | Informe spam
hola, Juan Antonio !

1) los errores '800xxxx' o '-2147xxxx'... significan que...
-> ocurrio una llamada a un 'proveedor/servidor/objeto/...' que NO estaba 'disponible/visible/...'

2) si quieres 'llamar' [por separado] a la propiedad 'ConnectionString' de un objeto ADODB.Connection
prueba a llamar 'por separado' [tambien] a su propiedad 'Provider'
o... a usar la cadena completa de conexion al momento de 'abrirlo' [con el '.Open'] p.e.
op1:
With Cnn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source=" & sPathBase & ";"
.Open
End With

op2:
Cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & sPathBase & ";"

3) comentarios 'al margen'...
la forma en que asignas tipo de datos a tus variables esta 'incompleta' [me explico]...
es necesario asignar el tipo de datos A CADA UNA de las variables [aun si estan en una sola linea]
de lo contrario... se asumira aue el tipo de datos ES -> Variant [por omision] :-( [p.e.]
a) cuando 'dices': -> Dim fila, col As Double
1) fila toma el tipo de datos Variant [por omision]
2) col TIENE especificado un tipo de datos Double [que me parece 'sobrado' ya que solo hay 256 columnas] :))
b) cuando 'dices': -> Dim he1, hs1, he2, hs2 As String
SOLO hs2 TIENE especificado un tipo de datos 'String'... [el resto toma el tipo Variant -> por omision] ;)

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

__ consulta original __
A ver si me pueden hechar una mano ( y no al cuello :P )
Excel 2000
Access 2000
... el siguiente codigo:
Const sPathBase As String = "rutabase\mibase.mdb" (he suprimido la ruta especifica)
Dim he1, hs1, he2, hs2 As String
Set Cnn = New ADODB.Connection
Set rst = New ADODB.Recordset
Dim fecha As String
Dim fila, col As Double
fila = 21
col = 1
Call BorraTabla
With Cnn
.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & sPathBase & ";"
.Open
End With
rst.Open "select * from [HORARIO_X_DIA]", Cnn, adOpenDynamic, adLockOptimistic [...]
Cuando llega a la linea donde tiene que abrir el Recordset me indica el siguiente error. Textual:
"Se ha producido el error '-2147217911 (80040e09)' en tiempo de ejecucion:
No se puede leer ningún registro; no tiene permiso para READ en 'HORARIO_X_DIA'."
Si accedo a la tabla desde access, me permite dise#arla y verla en modo ejecucion...
no se que puede estar pasando ???? alguna sugerencia?

Preguntas similares