Leer datos de access desde excel usando ADODB
Publicado por Miguel (57 intervenciones) el 10/03/2016 16:24:51
Hola a todos, denme una mano por favor.
Pretendo desde una hoja excel, leer datos de una base de datos access. Usando DAO la consulta funciona y trae datos sin problemas, pero como debo leer datos de otras fuentes de datos, me "obliga" a usar ADO y alli esta mi problema
Este código uso para DAO:
Esto funciona muy bien pero no se como hacerla funcionar con ADODB, primero porque no hay similitud con querydef y ademas me aparece un error: No se puede leer ningún registro; no tiene permiso para READ en xxx
Lo que he hecho en ADODB es lo siguiente:
Por favor si alguien me puede decir cual es el problema de tal error. parece un tema de seguridad o acceso aún cuando dicha base de datos no se ha tocado o modificado
La consulta he tenido como ponerla como instrucción sql por que en si esta como una query dentro de la base de datos original y se llama "Filtra UltDatos."
Pretendo desde una hoja excel, leer datos de una base de datos access. Usando DAO la consulta funciona y trae datos sin problemas, pero como debo leer datos de otras fuentes de datos, me "obliga" a usar ADO y alli esta mi problema
Este código uso para DAO:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
' Paso 1:Asignación de bd, recordset y querydef
Dim MyDatabase As DAO.database
Dim MyQueryDef As DAO.Querydef
Dim MyRecordset As DAO.Recordset
' Paso 2: Identificar la base de datos y la consulta.
Set MyDatabase = DBEngine.OpenDatabase ("C:\Mis Documentos\Genera datos.mdb")
Set MyQueryDef = MyDatabase.QueryDefs("Filtra UltDatos") 'esta query esta en la BD
'Paso 3: Abrir la consulta. Los resultados de la consulta son archivadas dentro de MyRecordset.
Set MyRecordset = MyQueryDef.OpenRecordset
'Paso 4: Se copian los datos a Excel, para este caso a la celda "I4"
ActiveSheet.Range("I4").CopyFromRecordset MyRecordset
Esto funciona muy bien pero no se como hacerla funcionar con ADODB, primero porque no hay similitud con querydef y ademas me aparece un error: No se puede leer ningún registro; no tiene permiso para READ en xxx
Lo que he hecho en ADODB es lo siguiente:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Dim cs As String
Dim sPath As String
Dim sql As String
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
sPath = ThisWorkbook.Path & "\Genera datos.mdb"
cs = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & sPath & ";Persist Security Info=False;"
Set cn = New ADODB.Connection
cn.Open cs
Set rs = New ADODB.Recordset
With rs
.CursorLocation = adUseClient
.CursorType = adOpenStatic
.LockType = adLockOptimistic
End With
sql = "SELECT [xxx].campo1, [yyy].campo2, Sum([campo3]+[campo4]) AS Total " & _
"FROM [xxx] LEFT JOIN [yyy] ON [xxx].campo1 = [yyy].campo5 GROUP BY [xxx].campo1"
rs.Open sql, cn
ActiveSheet.Range("I4").CopyFromRecordset rs
rs.Close
cn.Close
Set rs = Nothing
Set cn = Nothing
Por favor si alguien me puede decir cual es el problema de tal error. parece un tema de seguridad o acceso aún cuando dicha base de datos no se ha tocado o modificado
La consulta he tenido como ponerla como instrucción sql por que en si esta como una query dentro de la base de datos original y se llama "Filtra UltDatos."
Valora esta pregunta


0