Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2015.10.11;
Скачать: CL | DM;

Вниз

Выборка по датам   Найти похожие ветки 

 
Павел   (2011-05-14 08:26) [0]

Здравствуйте. У меня есть БД в Access,соединил ее с Delphi. Значит имеется 4 таблицы. В одной из них матчи с датами команды. Хочу сделать выборку по датам через DateTimePicker1 и 2,но не получается. Задаем период в этих DateTimePicker1 и 2 и должен в DBGrid выходить список матчей за период.

есть код:(здесь я сделал min и max парам-ры,которые подставляются в DateTimePicker1 и DateTimePicker2. Верно ж?)
procedure TForm1.FormActivate(Sender: TObject);
begin
ADOQuery3.Close;
ADOQuery3.SQL.Text:="select min(date),max(date) from Igra";
ADOQuery3.Open;
DateTimePicker1.Date:=ADOQuery3.Fields[0].asdatetime;
DateTimePicker2.Date:=ADOQuery3.Fields[1].asdatetime;
end;

А вот это я списал:
procedure TForm1.CentralPoint;(написано,что эта процедура введена для концентрации всей логики SQL-запроса в одном месте программы)
begin
ADOQuery3.Close;
ADOQuery3.SQL.Text:=
"select*from igra where ((date is null)or((date>=:dt1)"+"and (date<=:dt2)))";
ADOQuery3.parameters[0].value:=DateTimePicker1.DateTime;
ADOQuery3.parameters[1].value:=DateTimePicker2.DateTime;
ADoQuery3.open;
end;

Я весь код этот пишу,запускаю программу и таблица с матчами пустая. Ну и соответственно выборка не идет( Мб как-нибудь другим способом можно решить? Предполагаю,что ошибка мб тут:SQL.Text:=
"select*from igra where ((date is null)or((date>=:dt1)"+"and (date<=:dt2)))",но не вижу ее.


 
Galera   (2011-05-14 09:12) [1]

Даты случайно местами не перепутал? Поменяй местами dt1 и dt2
типа:
"select*from igra where ((date is null)or((date>=:dt2)"+"and (date<=:dt1)))",


 
b z   (2011-05-14 09:38) [2]


> Верно ж?
Нет, оно ваще не нужно.

> date is null
это плохо. У события всегда есть дата.
А CentralPoint когда работает?


 
adigozelov ©   (2011-05-14 09:53) [3]

Ti pisis vot
DateTimePicker1.DateTime
pisi
prosta
DateTimePicker1.Date

Patamusta yesli pasmotris "object isispektor" property time na DateTimePicker1  ili
DateTimePicker2 to vidish shto tam yes naprimeer "01:01:49".
yes 2 variant Problema dumuyu ya
napisi
prosta DateTimePicker1.Date,DateTimePicker2.Date

ili

zdeliy v "object isispektor" property time na DateTimePicker1 i DateTimePicker2
"00:00:00"
Vot tak
DateTimePicker1.time = "00:00:00"
DateTimePicker2.time = "00:00:00"


 
Anatoly Podgoretsky ©   (2011-05-14 10:02) [4]

> Павел  (14.05.2011 08:26:00)  [0]

Для первого - не может быть одновременно и min, и max
Для второго - не может быть больше dt1 и одновременно меньше dt2 при
одинаковой базе
Третье это форум по использованию Дельфи, а не по программированию в
конкретной СУБД


 
Anatoly Podgoretsky ©   (2011-05-14 10:02) [5]

Забыл сказать резюме - с этим в SQL школу


 
sniknik ©   (2011-05-14 10:03) [6]

в дататайме есть время... избавься от него в дататаймпикере, ну и даты задавать нужно периодом, а не один день. типа того, в общем -

ADOQuery3.parameters.ParamByName("dt1").value:= Trunc(DateTimePicker1.DateTime);
ADOQuery3.parameters.ParamByName("dt2").value:= Trunc(DateTimePicker2.DateTime) + 1;


 
Павел   (2011-05-14 10:36) [7]


> А CentralPoint когда работает?

он ваще не работает...просто в программе есть несколько критериев выбора(по дате,через ComboBox) и эта процедура была введена для обобщения получается в одном месте программы.


 
Ega23 ©   (2011-05-15 09:50) [8]

where ((date is null)or
Есть смутное подозрение, что тут должно быть что-то типа
where ((:dt1 is null) or (date between :dt2 and :dt3))
Ну и оперировать параметрами, хочешь всё - первый параметр ставишь null,
хочешь период - первый параметр ставишь не нулл, второй и третий - период.
Как-то так, хотя возможно, что я пока не проснулся.. :)


 
Petr V. Abramov ©   (2011-05-15 15:57) [9]


> where ((:dt1 is null) or (date between :dt2 and :dt3))

тогда уж between nvl(:dt1, "09.05.1945") and nvl(:dt2, "12.12.2012")


 
sniknik ©   (2011-05-15 16:47) [10]

> тогда уж between nvl(:dt1, "09.05.1945") and nvl(:dt2, "12.12.2012")
работает в nvl access и не работает в jet...


 
sniknik ©   (2011-05-15 16:48) [11]

> работает в nvl access
nvl работает в access ...


 
Petr V. Abramov ©   (2011-05-16 21:54) [12]


> sniknik ©   (15.05.11 16:48) [11]
>
> > работает в nvl access
> nvl работает в access ...
>

ну небось называется как-нить по-другому, не верю я, что МС - такие казлы :)


 
sniknik ©   (2011-05-16 22:48) [13]

> ну небось называется как-нить по-другому
iif + isNull
но оно и работает "немного" по другому, "красиво" не получится.


 
Anatoly Podgoretsky ©   (2011-05-16 23:58) [14]

> Petr V. Abramov  (16.05.2011 21:54:12)  [12]

Конечно козлы, придумали Акцесс и практически почти все функии в VBA. Наружу
только несколько статистических функций


 
Плохиш ©   (2011-05-17 22:33) [15]


> Конечно козлы, придумали Акцесс и практически почти все
> функии в VBA.

Они ваще уже LINQ придумали, теперь батонокидателям и sql-я знать не надо.


 
Anatoly Podgoretsky ©   (2011-05-18 08:53) [16]

> Плохиш  (17.05.2011 22:33:15)  [15]

И даже база не обязательна. Кроме того они козлы его сделали с права на
лево.



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

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

Наверх




Память: 0.5 MB
Время: 0.006 c
2-1400838886
mfender
2014-05-23 13:54
2015.10.11
Ерунда с записью/чтением структуры в потоке


2-1400275324
rumma
2014-05-17 01:22
2015.10.11
tchart


15-1423884159
MBo
2015-02-14 06:22
2015.10.11
Delphi - 20 лет!


15-1423869487
Ламот
2015-02-14 02:18
2015.10.11
Робот или человек? Как "правильно" организовать проверку?


2-1400762205
IceBeerg
2014-05-22 16:36
2015.10.11
Как изменить Объект ярлыка