Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.12.19;
Скачать: 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 вся ветка

Текущий архив: 2004.12.19;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.023 c
1-1101970372
VAV
2004-12-02 09:52
2004.12.19
LMDWeb компоненты


1-1102320665
tytus
2004-12-06 11:11
2004.12.19
Как проверить ввод символа в TEdit?


1-1102341249
Yuri_K
2004-12-06 16:54
2004.12.19
Двойное наследование


1-1101982135
Kat
2004-12-02 13:08
2004.12.19
чтобы сто строчек не писать?


8-1096206699
UserUserov
2004-09-26 17:51
2004.12.19
Media Player