Visual Basic para Aplicaciones - Ejecutar consulta SQL en VBA excel

Life is soft - evento anual de software empresarial
   
Vista:

Ejecutar consulta SQL en VBA excel

Publicado por Pablo (29 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:

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
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Ejecutar consulta SQL en VBA excel [Solucionado]

Publicado por Pablo (29 intervenciones) el 30/10/2013 17:19:26
El eterno problema de las comillas simples y dobles.
Lo siento.
Al final la consulta ha quedado como:

1
2
3
4
sql = "SELECT * FROM tecnicos WHERE login =  ' " & MyText & '  "


Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar