![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Выборка по датам [D7, Access]
Павел © (2011-05-14 08:26:00)Здравствуйте. У меня есть БД в 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)))',но не вижу ее.
Anatoly Podgoretsky (2011-05-18 08:53:00) [1]> Плохиш (17.05.2011 22:33:15) [15]
И даже база не обязательна. Кроме того они козлы его сделали с права на
лево.
Плохиш (2011-05-17 22:33:00) [2]
> Конечно козлы, придумали Акцесс и практически почти все
> функии в VBA.
Они ваще уже LINQ придумали, теперь батонокидателям и sql-я знать не надо.
Anatoly Podgoretsky (2011-05-16 23:58:00) [3]> Petr V. Abramov (16.05.2011 21:54:12) [12]
Конечно козлы, придумали Акцесс и практически почти все функии в VBA. Наружу
только несколько статистических функций
sniknik (2011-05-16 22:48:00) [4]> ну небось называется как-нить по-другому
iif + isNull
но оно и работает "немного" по другому, "красиво" не получится.
Petr V. Abramov (2011-05-16 21:54:00) [5]
> sniknik © (15.05.11 16:48) [11]
>
> > работает в nvl access
> nvl работает в access ...
>
ну небось называется как-нить по-другому, не верю я, что МС - такие казлы :)
sniknik (2011-05-15 16:48:00) [6]> работает в nvl access
nvl работает в access ...
sniknik (2011-05-15 16:47:00) [7]> тогда уж between nvl(:dt1, '09.05.1945') and nvl(:dt2, '12.12.2012')
работает в nvl access и не работает в jet...
Petr V. Abramov (2011-05-15 15:57:00) [8]
> where ((:dt1 is null) or (date between :dt2 and :dt3))
тогда ужbetween nvl(:dt1, '09.05.1945') and nvl(:dt2, '12.12.2012')
Ega23 (2011-05-15 09:50:00) [9]
where ((date is null)or
Есть смутное подозрение, что тут должно быть что-то типа
where ((:dt1 is null) or (date between :dt2 and :dt3))
Ну и оперировать параметрами, хочешь всё - первый параметр ставишь null,
хочешь период - первый параметр ставишь не нулл, второй и третий - период.
Как-то так, хотя возможно, что я пока не проснулся.. :)
Павел (2011-05-14 10:36:00) [10]
> А CentralPoint когда работает?
он ваще не работает...просто в программе есть несколько критериев выбора(по дате,через ComboBox) и эта процедура была введена для обобщения получается в одном месте программы.
sniknik (2011-05-14 10:03:00) [11]в дататайме есть время... избавься от него в дататаймпикере, ну и даты задавать нужно периодом, а не один день. типа того, в общем -
ADOQuery3.parameters.ParamByName('dt1').value:= Trunc(DateTimePicker1.DateTime);
ADOQuery3.parameters.ParamByName('dt2').value:= Trunc(DateTimePicker2.DateTime) + 1;
Anatoly Podgoretsky (2011-05-14 10:02:00) [12]> Павел (14.05.2011 08:26:00) [0]
Для первого - не может быть одновременно и min, и max
Для второго - не может быть больше dt1 и одновременно меньше dt2 при
одинаковой базе
Третье это форум по использованию Дельфи, а не по программированию в
конкретной СУБД
Anatoly Podgoretsky (2011-05-14 10:02:00) [13]Забыл сказать резюме - с этим в SQL школу
adigozelov (2011-05-14 09:53:00) [14]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'
b z (2011-05-14 09:38:00) [15]
> Верно ж?
Нет, оно ваще не нужно.
> date is null
это плохо. У события всегда есть дата.
А CentralPoint когда работает?
Galera (2011-05-14 09:12:00) [16]Даты случайно местами не перепутал? Поменяй местами dt1 и dt2
типа:
'select*from igra where ((date is null)or((date>=:dt2)'+'and (date<=:dt1)))',