Текущий архив: 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