2

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

3

Вам нужно будет ввести запрос в виде формулы, а не в виде текста, и построить дату из выбранной ячейки, чтобы создать действительный оператор 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'}))"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .