![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Делфи и SQL запрос с датой [D6, Access]
ВицеЧайник © (2004-11-17 16:28:00)База Access
в Delphi:
TADOQuery.SQL если пишу:
Select Поле From База
Where пДатаВремя BETWEEN #01/01/2004# AND #21/11/2005#
работает, а если так:
Select Поле From База
Where пДатаВремя BETWEEN :prmDate1 AND :prmDate2
то результат Nul
в модуле:
Active := False;
Parameters.ParamValues['PrmDate1'] := Date;
Parameters.ParamValues['PrmDate2'] := Date;
Active := True;
где грабли?
Anatoly Podgoretsky (2004-11-19 12:22:00) [1]ВицеЧайник (17.11.04 16:40) [5]
Нет у тебя в базе таких записей
sniknik (2004-11-19 11:27:00) [2]> а не работает:
> Parameters.ParamValues['PrmDate1'] := ПеременнаяTипа_TDateTime
не работает у тебя не потому что тот же DateTime другим способом задаеш а потому что и в первом и во втором параметре Date задаеш, периода не получается (0-0 что между ними?) а текущей даты у тебя в базе видимо нет.
вот так проверь, тоже сработает
Parameters.ParamValues['PrmDate1'] := StartOfAYear(Date);
Parameters.ParamValues['PrmDate2'] := Date;
ВицеЧайник (2004-11-19 09:46:00) [3]Sniknik! большое спасибо.
Только, если не жалко времени, поясни, почему
работает
Parameters.ParamValues['PrmDate1'] := StrToDate('01.01.2004');
а не работает:
Parameters.ParamValues['PrmDate1'] := ПеременнаяTипа_TDateTime
в чём разница, ведь д.б.
ПеременнаяTипа_TDateTime = StrToDate('01.01.2004')
sniknik (2004-11-17 17:22:00) [4]> Select Поле From База
> Where пДатаВремя BETWEEN #01/01/2004# AND #21/11/2005#
не равно
> Select Поле From База
> Where пДатаВремя BETWEEN :prmDate1 AND :prmDate2
> Active := False;
> Parameters.ParamValues['PrmDate1'] := Date;
> Parameters.ParamValues['PrmDate2'] := Date;
равнозначные параметры дадут тот же результат
Parameters.ParamValues['PrmDate1'] := StrToDate('01.01.2004');
Parameters.ParamValues['PrmDate2'] := StrToDate('21.11.2004');
Johnmen (2004-11-17 16:43:00) [5]>ВицеЧайник (17.11.04 16:40) [5]
Не-а. Не должен. Разве что время в составе значений поля таблицы есть 0.
Johnmen (2004-11-17 16:41:00) [6]>Почему? Это же дата, ы?
Потому что я взглюкнул на тему Now<>Date
:)
ВицеЧайник (2004-11-17 16:40:00) [7]вдогонку: и даже, если они одинаковые, то должны выдавать записи, которые удовлетворяют условие (такие есть), а он молчит ...
ВицеЧайник (2004-11-17 16:38:00) [8]При Date1 <> Date2 результат тот-же, я имел ввиду, что переменная там типа TDateTime ...
Nikolay M. (2004-11-17 16:34:00) [9]
> значения параметров будут одинаковы с точностью 13.7 наносекунд
Почему? Это же дата, ы?
Johnmen (2004-11-17 16:32:00) [10]>где грабли?
Здесь
Parameters.ParamValues['PrmDate1'] := Date;
Parameters.ParamValues['PrmDate2'] := Date;
значения параметров будут одинаковы с точностью 13.7 наносекунд
:)
Nikolay M. (2004-11-17 16:32:00) [11]
> Parameters.ParamValues['PrmDate1'] := Date;
> Parameters.ParamValues['PrmDate2'] := Date;
Запорс получается вида
...
пДатаВремя >= Date AND пДатаВремя < Date