Вниз
Скачать: CL | DM;

Делфи и SQL запрос с датой   Найти похожие ветки 

 
ВицеЧайник   (2004-11-17 16:28) [0]

База 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;

где грабли?


 
Johnmen ©   (2004-11-17 16:32) [1]

>где грабли?

Здесь
Parameters.ParamValues["PrmDate1"] := Date;
Parameters.ParamValues["PrmDate2"] := Date;

значения параметров будут одинаковы с точностью 13.7 наносекунд
:)


 
Nikolay M. ©   (2004-11-17 16:32) [2]


> Parameters.ParamValues["PrmDate1"] := Date;
> Parameters.ParamValues["PrmDate2"] := Date;

Запорс получается вида

...
пДатаВремя >= Date AND пДатаВремя < Date


 
Nikolay M. ©   (2004-11-17 16:34) [3]


> значения параметров будут одинаковы с точностью 13.7 наносекунд

Почему? Это же дата, ы?


 
ВицеЧайник   (2004-11-17 16:38) [4]

При Date1 <> Date2 результат тот-же, я имел ввиду, что переменная там типа TDateTime ...


 
ВицеЧайник   (2004-11-17 16:40) [5]

вдогонку: и даже, если они одинаковые, то должны выдавать записи, которые удовлетворяют условие (такие есть), а он молчит ...


 
Johnmen ©   (2004-11-17 16:41) [6]

>Почему? Это же дата, ы?

Потому что я взглюкнул на тему Now<>Date
:)


 
Johnmen ©   (2004-11-17 16:43) [7]

>ВицеЧайник   (17.11.04 16:40) [5]

Не-а. Не должен. Разве что время в составе значений поля таблицы есть 0.


 
sniknik ©   (2004-11-17 17:22) [8]

>  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");


 
ВицеЧайник   (2004-11-19 09:46) [9]

Sniknik! большое спасибо.
Только, если не жалко времени, поясни, почему

работает
Parameters.ParamValues["PrmDate1"] := StrToDate("01.01.2004");

а не работает:
Parameters.ParamValues["PrmDate1"] := ПеременнаяTипа_TDateTime
в чём разница, ведь д.б.
ПеременнаяTипа_TDateTime = StrToDate("01.01.2004")


 
sniknik ©   (2004-11-19 11:27) [10]

> а не работает:
> Parameters.ParamValues["PrmDate1"] := ПеременнаяTипа_TDateTime
не работает у тебя не потому что тот же DateTime другим способом задаеш а потому что и в первом и во втором параметре Date задаеш, периода не получается (0-0 что между ними?) а текущей даты у тебя в базе видимо нет.
вот так проверь, тоже сработает

Parameters.ParamValues["PrmDate1"] := StartOfAYear(Date);
Parameters.ParamValues["PrmDate2"] := Date;


 
Anatoly Podgoretsky ©   (2004-11-19 12:22) [11]

ВицеЧайник   (17.11.04 16:40) [5]
Нет у тебя в базе таких записей



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.03 c
14-1101819266
DeMoN-777
2004-11-30 15:54
2004.12.19
И снова бессонница


1-1101988555
alikvp
2004-12-02 14:55
2004.12.19
ProgressBar to StatusBar


1-1102438089
redlord
2004-12-07 19:48
2004.12.19
как в delphi использовать двоичное представление числа


8-1096016836
dracula
2004-09-24 13:07
2004.12.19
как из midi файла прочитать тэги


3-1100858467
Molchanov
2004-11-19 13:01
2004.12.19
Экспорт в ACCESS




   Наверх