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

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

Запрос в ADOQuery [D6, MSSQL]


Иришка ©   (2004-04-06 10:35:00) 

Приветик!
SELECT AccountPays.Pay_ID,..................
From AccountPays LEFT OUTER JOIN
Inpays on  (Inpays.Inpay_ID = AccountPays.Inpay_ID.........

where InnerDepName=:b And Account_Base_Name=:d and (CreateDate>=:u and CreateDate<=:o)
                       
Всё в принцыпе работает нормально только по CreateDate (тип дата)
выдаёт данные > и <=, а должен >= и <=
Может я что-то не тек неписала?

Дополнение.
Выборка ведётся по параметрам u,o
P:=DateTimePicker1.Date;
ADOQuery1.Close;
ADOQuery1.Parameters.ParamByName('u').Value:=p;
ADOQuery1.Open;
------------------
P:=DateTimePicker1.Date;
ADOQuery1.Close;
ADOQuery1.Parameters.ParamByName('o').Value:=p;
ADOQuery1.Open;


serge35   (2004-04-06 11:45:00) [1]

Ну не объяснили девушке, что можно просвоить сразу 2 параметра, вот она и присваивает их по одному.
Перед вторым Open оба параметра будут присвоены.


Vlad   (2004-04-06 11:37:00) [2]


> stone ©   (06.04.04 11:21) [6]

Пускай даже два. Но зачем запрос открывать два раза. С одним параметром вместо двух - вот что неясно ;-)


stone   (2004-04-06 11:21:00) [3]


> Vlad ©   (06.04.04 11:12) [5]

Я не телепат:)) но мне кажется тут просто опечатка, вероятнее всего DateTimePicker все же 2. Задать диапазон дат одним действительно сложно :))


> Иришка   (06.04.04 10:35)  

Для выбора диапазона дат лучше использовать синтаксис: CreateDate BETWEEN :u and :o


Vlad   (2004-04-06 11:12:00) [4]

Да и я не оспариваю, ошибка безусловно может быть в этом, однако странновато что запрос открывается два раза и каждый раз вместо двух параметров присваивается один...


serge35   (2004-04-06 11:04:00) [5]

stone прав на все 100%. Присоединяюсь.


stone   (2004-04-06 10:47:00) [6]


> Иришка   (06.04.04 10:35)  

Все дело в том, что DateTimePicker1.Date содержит время и дату, и если на сервере поле не содержит времени (например 06.04.2004 0:00:00), то это значение окажется меньше указанного в DateTimePicker1.Date, соответствено время нужно отрезать trunc(DateTimePicker1.Date)


Vlad   (2004-04-06 10:46:00) [7]


> Иришка   (06.04.04 10:35)  

Хм... Я по поводу дополнения.
А что собственно там происходит ? Первый раз открываем набор данных с одним параметром (где второй ?),  второй раз открываем  набор данных со вторым параметром (где первый ?)
И что же мы хотим получить ?


stone   (2004-04-06 10:44:00) [8]

P:=Trunc(DateTimePicker1.Date);


Наверх

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