Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Delphi: Базы данных и репортинг > Использование параметров в ADOQuery |
Автор: Lunatikus 16.6.2009, 14:14 | ||
Здравствуйте. MS SQL 2005 и Delphi 7.
далее в цикле я присваиваю параметрам значения и вызываю метод Open. параметры, на которые ругается: srok2m,srok3m. Они челочисленного типа. Однако получаю ошибку при выполнении запроса: "argument data type datetime is invalid for argument 2 af dateadd function" На форуме SQL мне сказали, что параметры надо объявлять через @, чтобы их можно было использовать в функции SQL-языка "dateadd()". Но я все время использовал двоеточие и читал, что это и есть использование параметров. спасибо за уделенное время |
Автор: Данкинг 16.6.2009, 15:45 |
Ты же в данном случае подставляешь параметры именно в Query, при чём здесь SQL-сервер. Значит, двоеточия используешь, как обычно. |
Автор: Lunatikus 16.6.2009, 15:49 |
тогда из-за чего может происходить такая ошибка? |
Автор: Данкинг 16.6.2009, 22:59 | ||
Я так понимаю, что ошибку пишет сам SQL-сервер. А почему - уж не знаю, я в нём не силён. Попробуй тот же запрос непосредственно на сервере выполнить. |
Автор: flomaster 16.6.2009, 23:11 | ||
Значения (тип значений), присвоенные параметрам не подходят. Для датовых параметров очень важно использовать:
|
Автор: Lunatikus 17.6.2009, 09:20 |
Данкинг,пробовал. Объявлял параметры, присваивал им целочисленное значение и все работало. flomaster, тип передаваемого значения параметра - целочисленный, почему тут надо вручную присваивать ftDatetime? Ведь в SQL-запросе это целое число прибавляется к дате. Если я присвою ему тип даты, сможет ли корректно сработать функция dateadd? |
Автор: flomaster 17.6.2009, 12:08 | ||||
Ага, пока читал сообщение об ошибке, забыл что они целые...
Тогда читаем еще раз "Аргумент типа datetime не подходит для второго аргумента функции dateadd" Т.е. во втором аргументе, а именно
образуется дата. Убираем дату и запускаем. Либо избавляемся от datediff, что вероятно будет не достаточно. Либо избавляемся от дробной части и преобразуем к целому. |