Как создать запрос SQL в Excel 2007 с динамическим диапазоном дат?
Я пытаюсь создать электронную таблицу отчетов, которая может распечатывать отчеты за определенный период времени. Запрос ниже работает, но когда я пытаюсь использовать ?
параметр вместо даты, я получаю ошибку после выбора ячейки, содержащей мою дату. Если я использую одинарные кавычки ('?')
Я получаю преобразование из строки в дату / время сбоя, если я не (?)
Я получаю синтаксическую ошибку рядом @p1
,
В конце концов мне понадобится либо дата начала и окончания, либо формула, добавляющая месяц, либо смещение к начальной дате / времени, чтобы отфильтровать данные до важной информации. Запрос был построен в 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'} ))
Любая помощь будет высоко ценится.
1 ответ
Вам нужно будет ввести запрос в виде формулы, а не в виде текста, и построить дату из выбранной ячейки, чтобы создать действительный оператор SQL.
Предполагая, что у вас есть дата в ячейке A1, поместите следующую формулу в ячейку 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'}))"
Обратите внимание, что подчеркивания в конце каждой строки указывают на продолжение. Вам нужно будет удалить их, и каретка вернется, чтобы формула заработала. Вся формула настроена на одну строку ниже. (Трудно читать на этом сайте, но Excel это нравится!)
="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'}))"