
Я пытаюсь создать отчетную таблицу, которая может печатать отчеты за заданный период времени. Запрос ниже работает, но когда я пытаюсь использовать параметр ?
вместо даты, я получаю ошибку после выбора ячейки, содержащей мою дату. Если я использую одинарные кавычки, ('?')
я получаю ошибку преобразования из строки в дату/время, если я этого не делаю, (?)
я получаю синтаксическую ошибку около @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'}))"