Query con parámetro

16/07/2003 - 00:50 por fernando | Informe spam
Quisiera crear un query con un parámetro, cuyo valor se
tome de forma automática de una celda de la hoja excel, en
vez de introducirlo manualmente.
Alquien puede ayudarme?

Preguntas similare

Leer las respuestas

#1 Fernando Arroyo
16/07/2003 - 10:00 | Informe spam
En el siguiente ejemplo se recuperan los registros de la Tabla3 de la base de datos C:\datos\Access\prueba cuyo Campo3 coincide con la celda G1 de la hoja donde está la consulta de Query:

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address <> "$G$1" Then Exit Sub
If ActiveSheet.QueryTables.Count <> 1 Then Exit Sub

Dim qtQ As QueryTable
Dim strSQL As String

Set qtQ = ActiveSheet.QueryTables(1)
strSQL = "SELECT Tabla3.Campo1, Tabla3.Campo2 FROM `C:\datos\Access\prueba`.Tabla3 Tabla3 WHERE (Tabla3.Campo1 ='" & ActiveSheet.Range("G1") & "')"
qtQ.CommandText = strSQL
qtQ.Refresh

Set qtQ = Nothing

End Sub

Esto iría en el módulo de la hoja (click derecho sobre su solapa->Ver código)
Dependiendo del tipo de datos, es posible que hubiera que modificar el código.
Un saludo.


Fernando Arroyo
MS MVP - Excel


PS: El objeto QueryTable tiene una colección Parameters, pero yo nunca he conseguido que me funcione bien...

"fernando" escribió en el mensaje news:049801c34b23$7423aee0$
Quisiera crear un query con un parámetro, cuyo valor se
tome de forma automática de una celda de la hoja excel, en
vez de introducirlo manualmente.
Alquien puede ayudarme?
Respuesta Responder a este mensaje
#2 Juanjo
01/08/2003 - 15:57 | Informe spam
Hola,
necesito pasar parámetros desde excel a un query y he realizado al pie de la
letra lo que habis comentado en el mensaje, pero me da un error cuando
intento ejecutarlo:
"Se ha producido el error '1004' en tiempo de ejecución:
Error general de ODBC"

Si le pongo Depurar, se queda en la linea "qtQ.Refresh" y si se la quito no
funciona.

Mediante el mismo ODBC accedo para hacer querys sin parametros y me funciona
perfectamente.

Un saludo
Juanjo
Respuesta Responder a este mensaje
#3 Fernando Arroyo
01/08/2003 - 21:55 | Informe spam
No "veo" el mensaje al que te refieres. ¿Podrías poner el código que estás usando?
Un saludo.


Fernando Arroyo
MS MVP - Excel

"Juanjo" escribió en el mensaje news:
Hola,
necesito pasar parámetros desde excel a un query y he realizado al pie de la
letra lo que habis comentado en el mensaje, pero me da un error cuando
intento ejecutarlo:
"Se ha producido el error '1004' en tiempo de ejecución:
Error general de ODBC"

Si le pongo Depurar, se queda en la linea "qtQ.Refresh" y si se la quito no
funciona.

Mediante el mismo ODBC accedo para hacer querys sin parametros y me funciona
perfectamente.

Un saludo
Juanjo


Respuesta Responder a este mensaje
#4 Juanjo
05/08/2003 - 08:43 | Informe spam
El código es el que habías puesto en la primera respuesta:

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address <> "$G$1" Then Exit Sub
If ActiveSheet.QueryTables.Count <> 1 Then Exit Sub

Dim qtQ As QueryTable
Dim strSQL As String

Set qtQ = ActiveSheet.QueryTables(1)
strSQL = "SELECT Tabla3.Campo1, Tabla3.Campo2 FROM
`C:\datos\Access\prueba`.Tabla3 Tabla3 WHERE (Tabla3.Campo1 ='" &
ActiveSheet.Range("G1") & "')"
qtQ.CommandText = strSQL
qtQ.Refresh

Set qtQ = Nothing

End Sub


Gracias


"Fernando Arroyo" escribió en el mensaje
news:
No "veo" el mensaje al que te refieres. ¿Podrías poner el código que estás
usando?
Un saludo.


Fernando Arroyo
MS MVP - Excel

"Juanjo" escribió en el mensaje
news:
Hola,
necesito pasar parámetros desde excel a un query y he realizado al pie de


la
letra lo que habis comentado en el mensaje, pero me da un error cuando
intento ejecutarlo:
"Se ha producido el error '1004' en tiempo de ejecución:
Error general de ODBC"

Si le pongo Depurar, se queda en la linea "qtQ.Refresh" y si se la quito


no
funciona.

Mediante el mismo ODBC accedo para hacer querys sin parametros y me


funciona
perfectamente.

Un saludo
Juanjo


Respuesta Responder a este mensaje
#5 Fernando Arroyo
06/08/2003 - 07:23 | Informe spam
Ten en cuenta que ese código sólo funcionará si hay una base de datos llamada prueba.mdb situada en C:\datos\access, y si dicha base de datos tiene una tabla llamada Tabla3 y al menos dos campos llamados Campo1 y Campo2, el primero de los cuales tendría que ser necesariamente de texto.
Un saludo.


Fernando Arroyo
MS MVP - Excel


"Juanjo" escribió en el mensaje news:%
El código es el que habías puesto en la primera respuesta:

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address <> "$G$1" Then Exit Sub
If ActiveSheet.QueryTables.Count <> 1 Then Exit Sub

Dim qtQ As QueryTable
Dim strSQL As String

Set qtQ = ActiveSheet.QueryTables(1)
strSQL = "SELECT Tabla3.Campo1, Tabla3.Campo2 FROM
`C:\datos\Access\prueba`.Tabla3 Tabla3 WHERE (Tabla3.Campo1 ='" &
ActiveSheet.Range("G1") & "')"
qtQ.CommandText = strSQL
qtQ.Refresh

Set qtQ = Nothing

End Sub


Gracias


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida