Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

не работает запрос при использовании параметров в ADO [D7, MSSQL]


Dysan ©   (2004-12-28 14:01:00) 

Почему запрос вот такой работает на ура

GetBaza('Select * From BazaPred Where Time_bg>='+ku+'2003-12-09'+ku+' AND Time_end<='+ku+'2003-12-09'+ku);

А такой не отрабатывает и возвращает пустой результата!

ADOQ.Parameters.Clear;
ADOQ.Parameters.AddParameter.Name:='VD1';
ADOQ.Parameters.ParamByName('VD1').Value:=StrToDate('2004-12-09');
GetBaza('Select * From BazaPred Where Time_bg>=:VD1 AND Time_end<=:VD1');

Хотя суть их одна и таже! Но мне нужно чтобы работал второй вариант запроса!


Dysan   (2004-12-28 15:43:00) [1]

спасибо! вроде заработало!


Ольга   (2004-12-28 15:41:00) [2]

У вас поля Time_bg, Time_end время, отличное от 00:00:00 содержат? Если да, то нужно переформировать условие Time_end < @d1+1


Stanislav   (2004-12-28 15:26:00) [3]

Плохиш ©   (28.12.04 15:17) [16]
Правильно !
Можно так:
Declare @d1 datetime
Set @d1 = :VD1
'Select * From BazaPred Where Time_bg>=@d1 AND Time_end<=@d1');


Плохиш   (2004-12-28 15:17:00) [4]


'Select * From BazaPred Where Time_bg>= :VD1AND Time_end<= :VD1');

это два разных параметра! Соответственно инициализировать надо оба.


Stanislav   (2004-12-28 15:07:00) [5]

К стати если в тип параметра ftDateTime, то дату можно записывать в привычном формате mm.dd.yy


Dysan   (2004-12-28 15:04:00) [6]

нет. бодяга не из за GetBaza. я уже все в одном месте пишу. всё тоже.


Dysan   (2004-12-28 14:58:00) [7]

собственно в хелпе написано что дата не целое число а
type TDate = TDateTime;
type TDateTime = type Double;

пока так у меня ничего не получилось.
не пробовал разве что только воспользоваться  SET DATEFORMAT
только правда потому что никогда еще им не пользовался.
может будут еще идеи почему так проиходить и что поробовать?


Stanislav   (2004-12-28 14:57:00) [8]

Дату можно передать в стандарте ISO: '20041231'
Строка без всяких разделителей, и MSSQL это поймет !


Sergey13   (2004-12-28 14:55:00) [9]

А мне кажется (я с АДО не работал), что тут бодяга из-за GetBaza. Такое ощущение, что параметр задается в одном месте, а запрос выполняется в другом, с нуловым параметром.


Соловьев   (2004-12-28 14:51:00) [10]

но ведь я подуаю ее в формате просто real !

1. дата - целое число.
2. разницу чувствуешь - 2001-03-04 и 2001-04-03?


Stanislav   (2004-12-28 14:50:00) [11]

Эта строчка здесь лишняя
ADOQ.Parameters.AddParameter.Name:='VD1';


Dysan   (2004-12-28 14:50:00) [12]

строкой я дату тут написал для примера
передаю я ее сразу в формате TDateTime


Dysan   (2004-12-28 14:48:00) [13]

т.е. вы хотите сказать что я просто не в том формате подаю дату?
но ведь я подуаю ее в формате просто real ! а уже там на той стороне (я правда не знаю где конкретно) эти цифорки должны перекодироваться в нужный формат? или я не прав?


Ольга   (2004-12-28 14:46:00) [14]

Так если дата передается жесткой строкой '2004-12-09' значит это кому-нибудь нужно... Впрочем полностью согласна с г.Соловьевым


Соловьев   (2004-12-28 14:39:00) [15]

StrToDate('2004-12-31');

Зачем? Нужно нормальные компоненты юзать DateTimePicker хотя-бы
И не надо будет делать формат на сервере


Ольга   (2004-12-28 14:31:00) [16]

А вы уверены, что Delphi правильно интерпритирует формат даты.
Попробуйте
ADOQ.Parameters.ParamByName('VD1').Value:=StrToDate('2004-12-31');

Нужно сделать SET DATEFORMAT


Александр Иванов   (2004-12-28 14:20:00) [17]

Вот так попробуй:

ADOC.Open;
ADOQ.SQL.Clear;
ADOQ.SQL.Add(query);
ADOQ.Parameters.ParamByName('VD1').Value:=StrToDate('2004-12-09');
ADOQ.Open;


Dysan   (2004-12-28 14:06:00) [18]

эээ
да не важно там происходит обычное подключение и выполнение запроса

ADOC.Open;
ADOQ.SQL.Clear;
ADOQ.SQL.Add(query);
ADOQ.Open;

ничего особенного.


Александр Иванов   (2004-12-28 14:04:00) [19]

А что за процедура GetBaza?


Наверх

Титульная страница Поиск, карта сайта Написать письмо