2009-08-16 13 views
28

Estoy usando MS Excel para obtener datos de una base de datos MySQL a través de ODBC.
Logré datos con éxito mediante una consulta SQL. Pero ahora quiero que esa consulta se parametrice.
Así que me pregunto si es posible usar un valor de celda (una celda de hoja de cálculo) como parámetro para dicha consulta.
Por ejemplo, para esta consulta:Excel: use un valor de celda como parámetro para una consulta SQL

select name from user where id=1 

me gustaría obtener el valor de ID de, por ejemplo, la celda D4 en la hoja de cálculo.

¿Es ese el enfoque adecuado para parametrizar una consulta? y como puedo hacerlo?

Gracias.

Respuesta

30

Tuve el mismo problema que tú, Noboby puede entenderme, pero lo resolví de esta manera.

SELECT NAME, TELEFONE, DATA 
FROM [sheet1$a1:q633] 
WHERE NAME IN (SELECT * FROM [sheet2$a1:a2]) 

necesita insertar un parámetro en otra hoja, el SQL considerará que la información al igual que como base de datos, entonces se puede seleccionar la información y compararlas en el parámetro que desee.

+0

Gracias, no sabía de eso. Lo intentaré. – GetFree

+0

Hola, lo siento por la última pregunta, me pregunto si también podemos usar la función nombrada/rango con nombre/celda con nombre como parámetro? –

3
queryString = "SELECT name FROM user WHERE id=" & Worksheets("Sheet1").Range("D4").Value 
+0

Supongo que tengo que hacer eso en un script de VBA, ¿verdad? No creo que pueda escribir esa expresión dentro de la ventana de SQL. – GetFree

+0

Eso es VBA, sí – barrowc

10

Si está utilizando la consulta de microsoft, puede agregar "?" a su consulta ...

seleccionar nombre del usuario where id =?

que aparecerá una pequeña ventana pidiendo la celda/datos/etc cuando vuelva a Excel.

En la ventana emergente, también puede seleccionar "utilizar siempre esta celda como parámetro", eliminando la necesidad de definir esa celda cada vez que actualice sus datos. Esta es la opción más fácil.

1

El SQL es algo así como la sintaxis de MS SQL.

SELECT * FROM [table$] WHERE *; 

Es importante que el nombre de la tabla finalice con un signo $ y todo se pone entre paréntesis. Como condiciones puede usar cualquier valor, pero hasta ahora Excel no me permitió usar lo que llamo "apóstrofos SQL" ('), por lo que se recomienda un título de columna en una palabra.

Si hay usuarios que figuran en una tabla llamada "usuarios", y la identificación es en una columna titulada "Identificación" y el nombre en una columna titulada "Nombre", la consulta se verá así:

SELECT Name FROM [Users$] WHERE id = 1; 

Espero que esto ayude.

Cuestiones relacionadas