Excel - Traer datos de consulta de access con parametro

   
Vista:

Traer datos de consulta de access con parametro

Publicado por Miguel (38 intervenciones) el 08/01/2016 17:32:12
Hola a todos.
Tengo una consulta y agradeceré tengan una idea de como solucionar

1er Parte: He creado una BD sencilla en la cual una consulta 1 lee una tabla filtrando una determinada fecha y a partir de esa fecha la consulta 2 busca los datos de otra tabla. Adjunto la consulta 1 que selecciona la fecha:
SELECT [Historico de Ventas].Fecha FROM [Historico de Ventas] GROUP BY [Historico de Ventas].Fecha;


2da Parte; En Excell he creado una conexion DSN la cual enlaza la base de datos creada y le indico ejecutar la consulta 2 que he creado y lo realiza muy bien colocando los datos en mi hoja excel como tabla el resultado de la consulta.

El problema resulta que al colocar un parámetro en la consulta 1 para que me pida la fecha y ejecuto la consulta en access lo hace muy bien pero cuando la ejecuto desde el excel me da un error de parámetros.

Adjunto la misma consulta 1 anterior pero con el parámetro de ingresar la fecha:
PARAMETERS [Ingrese la fecha: ] DateTime; SELECT [Historico de Ventas].Fecha FROM [Historico de Ventas] WHERE ((([Historico de Ventas].Fecha)=[Ingrese la fecha: ])) GROUP BY [Historico de Ventas].Fecha;

En el access las consultas al ejecutarla pregunta por la fecha deseada y se ejecutan sin problemas.; pero cuando la trato de ejecutar en el excel me da error:

[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.


Saben a que se puede deber? o si es necesario hacer algo en excel ??
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
Imágen de perfil de Gean

Traer datos de consulta de access con parametro

Publicado por Gean (9 intervenciones) el 08/01/2016 20:54:48
Mira no entiendo al cien por ciento tu caso, pero creo que tu problema es el lugar donde ejecutas la consulta.
Te aconsejo que lo hagas desde el Excel mediante VBA. Es decir, no envíes parámetros y menos de fechas, por el contrario, construye la consulta y ejecútala luego de conectarte a la BD.
Te resultará mejor.
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

Traer datos de consulta de access con parametro

Publicado por Miguel (38 intervenciones) el 08/01/2016 21:21:34
Hola gracias por tu interes y ayuda.
Permiteme explicarte un poco mas.

Tu sabes que puedes crear una consulta en access y el resultado de esa consulta traerla a excel de manera automatica o bueno solo con presionar boton derecho y actualizar.

El caso es que en access las consultas corren muy bien con o sin parámetro. Cuando me refiero a parámetro me refiero a que la consulta no es rígida sino que hay una interfase o mensaje previo a la ejecución en la cual el usuario puede ingresar la fecha o datos requerido.
Repito en access corre muy bien, pero cuando estoy en excel y trato de actualizar los datos de esa consulta me da el error :

[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.

Si en access le quito la opción del parámetro, la actualización de datos se ejecuta sin problemas en excel.

Pero no es el caso estar a cada actualización de datos, ingresando al access para colocar manualmente la fecha requerida.

Ojala pueda haber sido mas claro en mi explicación.

Lo que comentas a trabajar en VBA me suena un poco mas complicado pero no lo descarto.
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
Imágen de perfil de Gean

Traer datos de consulta de access con parametro

Publicado por Gean (9 intervenciones) el 08/01/2016 22:09:16
Bueno mira la rutina que debes hacer para lanzar la consulta desde Excel:

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 migrardatosdeaccessaexcel()
 
    Dim MyFecha As String
    MyFecha = InputBox ("Ingrese Fecha")
    MsgBox (MyFecha)
 
    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\nombrebasededatos.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 nombretabla WHERE campofecha = '" & MyFecha & "'"
 
    rs.Open sql, cn
 
    Range("C1").CopyFromRecordset rs
 
    rs.Close
    cn.Close
    Set rs = Nothing
    Set cn = Nothing
 
End Sub

Pienso que es mejor y te copia los datos al Excel.

Espero y te sirva.
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