Ejecutar consulta SQL en VBA excel
Publicado por Pablo (77 intervenciones) el 29/10/2013 21:15:25
Estoy intentando digitalizar un parte de trabajo. Sé que hay otras formas, pero mis usuarios se manejan mejor en Excel.
Quiero que los datos "0bvios" se rellenen solos. Y como datos obvios están la fecha o el usuario.
El usuairo lo leo del sistema. Pero mi problema es que quieren hacer uso de algunos datos del usuario que no son tan evidentes, como el número de empleado, su nombre, iniciales, etc.
Bien, he pensado colocar esa información (además de los clientes, los repuestos, etc) en una DB, y en esas estoy.
Estoy intentando correr una consulta SQL en la BD Access, para que me de esos datos, y no todo lo que haya en la tabla.
Entonces, leo el login de usuario del sistema y lo que quiero es buscar ese login en la BD y que me devuelva un recordset para rellenar unos campos con él.
Mi código es este:
Bien, mi problema es el siguiente:
El código me lee el usuario (lo cual aparece en una msgbox), pero cuando lo busco en la consulta, me da un error de automatización.
He probado, que si busco el ID de un registro, me lo devuelve. He probado que si hago MyText igual a un número de ID, me lo devuelve también.
Pero cuando le digo que me busque por el nombre del campo dónde están los logins, me devuelve el error.
He estado buscando por Internet y no encuentro nada. No quiero bajarme toda una tabla, quiero un solo recordset.
Lo único que se me ocurre es que el tipo de datos sea diferente, aunque el usuario es un string y en la tabla es texto.
Cualquier ayuda será bienvenida. Gracias de antemano.
Quiero que los datos "0bvios" se rellenen solos. Y como datos obvios están la fecha o el usuario.
El usuairo lo leo del sistema. Pero mi problema es que quieren hacer uso de algunos datos del usuario que no son tan evidentes, como el número de empleado, su nombre, iniciales, etc.
Bien, he pensado colocar esa información (además de los clientes, los repuestos, etc) en una DB, y en esas estoy.
Estoy intentando correr una consulta SQL en la BD Access, para que me de esos datos, y no todo lo que haya en la tabla.
Entonces, leo el login de usuario del sistema y lo que quiero es buscar ese login en la BD y que me devuelva un recordset para rellenar unos campos con él.
Mi código es este:
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
32
33
34
35
36
37
38
Sub escribirexcel()
Dim MyText As String
MyText = Environ("username")
MsgBox (MyText)
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 & "\DB\db.accdb"
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 * FROM tecnicos WHERE id = 1 " '& MyText & " ORDER BY id"
rs.Open sql, cn
Range("C1").CopyFromRecordset rs
rs.Close
cn.Close
Set rs = Nothing
Set cn = Nothing
End Sub
Bien, mi problema es el siguiente:
El código me lee el usuario (lo cual aparece en una msgbox), pero cuando lo busco en la consulta, me da un error de automatización.
He probado, que si busco el ID de un registro, me lo devuelve. He probado que si hago MyText igual a un número de ID, me lo devuelve también.
Pero cuando le digo que me busque por el nombre del campo dónde están los logins, me devuelve el error.
He estado buscando por Internet y no encuentro nada. No quiero bajarme toda una tabla, quiero un solo recordset.
Lo único que se me ocurre es que el tipo de datos sea diferente, aunque el usuario es un string y en la tabla es texto.
Cualquier ayuda será bienvenida. Gracias de antemano.
Valora esta pregunta


0