Параметры в Sql-запросе
Реальный запрос несколько сложней, но суть в том, что как записано выполняется и возвращает верный результат. Но если вместо констант использовать параметры, не всё гладко.SELECT LEAST(outdate, '2008/09/30') - GREATEST(indate, '2008/09/1') + 1
FROM sometable
WHERE '2008/09/01' <= outdate AND indate <= '2008/09/30'
Параметры Date1 и Date2 берутся из формы отчёта.
Вот так без ошибок:
А вот так:SELECT LEAST(outdate, '2008/09/30') - GREATEST(indate, '2008/09/1') + 1
FROM sometable
WHERE :Date1 <= outdate AND indate <= :Date2
CommandText does not return a result set.SELECT LEAST(outdate, :Date2) - GREATEST(indate, :Date1) + 1
FROM sometable
WHERE :Date1 <= outdate AND indate <= :Date2
Понятно, что дело в запросе. Но не пойму в чём дело. Как правильно запрос написать?
Кратко поясню. Человек проживал с indate по outdate. Необходимо получить количество дней его проживания с :Date1 по :Date2.
Комментарии
Оказывается Придётся, видимо, либо в программе формировать запрос, либо средствами построителя отчёта. У меня в реальном запросе нужна группировка:
SUM( LEAST(outdate, :Date2) - GREATEST(indate, :Date1) + 1 )
Хотя, наверно, можно использовать скрипт для формирования запроса? Непонятно только в каком месте, т.е. при каком событии.
Как передать параметр-список в sql-запрос в оператор IN?
Грубо, запрос выглядит так:
SELECT * FROM table WHERE field IN (1, 2, 7, 12)
Хочу в отчёте создать диалог с чекбоксами, пользователь отмечает некоторые из них и как передать его выбор в запрос
SELECT * FROM table WHERE field IN (:List)
Что должна представлять переменная List? Массив? Никак не соображу.
Варианта тут два:
1) Генерировать запрос динамически в коде скрипта
2) Использовать Query которые поддерживают макросы. Например в библиотеке SQL Direct есть компонент TSDMacroQuery, который их поддерживает. Аналогичный компонент есть и в RxLib для BDE.