Como você cria uma consulta SQL no Excel 2007 com um período dinâmico?

2

Estou tentando criar uma planilha de relatórios que pode imprimir relatórios para um determinado período de tempo. A consulta abaixo funciona, mas quando tento usar um parâmetro ? no lugar da data, recebo um erro depois de selecionar uma célula que contém minha data. Se eu usar aspas simples, ('?') , obtenho uma conversão de string para falha de data / hora, se eu não (?) , recebo um erro de sintaxe próximo a @p1 .

Por fim, precisarei de uma data de início e de término ou de uma fórmula que adicione um mês ou mude para a data / hora de início para filtrar os dados até informações importantes. A consulta foi criada no 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'} )) 

Qualquer ajuda seria muito apreciada.

    
por Jordan 06.06.2012 / 23:54

1 resposta

3

Você precisará inserir a consulta como uma fórmula em vez de como texto e criar a data na célula selecionada para que uma instrução SQL válida seja criada.

Supondo que você tenha uma data na célula A1, coloque a seguinte fórmula na célula 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'}))"

Observe que os sublinhados no final de cada linha indicam continuação. Você precisará excluí-los e o carro retornará para que a fórmula funcione. A fórmula inteira é configurada em uma única linha abaixo. (Difícil de ler neste site, mas o Excel gosta!)

="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'}))"
    
por 07.06.2012 / 04:39