¿Cómo se crea una consulta SQL en Excel 2007 con un rango de fechas dinámico?

¿Cómo se crea una consulta SQL en Excel 2007 con un rango de fechas dinámico?

Estoy intentando crear una hoja de cálculo de informes que pueda imprimir informes para un período de tiempo determinado. La siguiente consulta funciona, pero cuando intento usar un ?parámetro en lugar de la fecha, aparece un error después de seleccionar una celda que contiene mi fecha. Si uso comillas simples, ('?')obtengo una conversión de cadena a fecha/hora fallida; si no, (?)aparece un error de sintaxis cerca de @p1.

Con el tiempo, necesitaré una fecha de inicio y finalización o una fórmula que agregue un mes o cambie a la fecha/hora de inicio para filtrar los datos hasta obtener información importante. La consulta se creó en Microsoft Query.

SELECT FloatTable.DateAndTime,
       TagTable.TagName
FROM   master.dbo.FloatTable FloatTable,
       master.dbo.TagTable TagTable
WHERE  FloatTable.TagIndex = TagTable.TagIndex
       AND (( FloatTable.DateAndTime >= {ts '2012-06-01 00:00:00'} )) 

Cualquier ayuda sería muy apreciada.

Respuesta1

Deberá ingresar la consulta como una fórmula en lugar de como texto y generar la fecha a partir de la celda que seleccionó para que se cree una declaración SQL válida.

Suponiendo que tiene una fecha en la celda A1, coloque la siguiente fórmula en la celda B1:

="SELECT FloatTable.DateAndTime, TagTable.TagName FROM master.dbo.FloatTable _ 
FloatTable, master.dbo.TagTable TagTable WHERE FloatTable.TagIndex = _
TagTable.TagIndex AND ((FloatTable.DateAndTime>={ts '" & YEAR(A1) & "-" _
& MONTH(A1) & "-" & DAY(A1) & " 00:00:00'}))"

Tenga en cuenta que los guiones bajos al final de cada línea indican continuación. Tendrás que eliminarlos y el carro regresa para que la fórmula funcione. La fórmula completa está configurada en una sola fila a continuación. (Es difícil de leer en este sitio, ¡pero a Excel le gusta!)

="SELECT FloatTable.DateAndTime, TagTable.TagName FROM master.dbo.FloatTable FloatTable, master.dbo.TagTable TagTable WHERE FloatTable.TagIndex = TagTable.TagIndex AND ((FloatTable.DateAndTime>={ts '" & YEAR(A1) & "-" & MONTH(A1) & "-" & DAY(A1) & " 00:00:00'}))"

información relacionada