фильтрация

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Ответить
Элешки
Сообщения: 8
Зарегистрирован: 28 сен 2005, 15:32

фильтрация

Сообщение Элешки » 29 сен 2005, 19:17

Всем привет!
Пожалуйста, объясните мне, как сделать фильтрацию данных в Delphi? Мне, в частности, надо отфильтровать данные по времени.
У меня есть таблица по сделанным звонкам: дата(date), время(time), линия(line), номер(number) и продолжительность разговора(duration). Мне надо отфильтровать все звонки,сделанные , допустим, с 1.09.05 по 29.09.05. Как мне это сделать?
Очень прошу помочь! Буду всем признательна.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 29 сен 2005, 19:46

select * from table
where dt between '01.09.2005' and '29.09.2005'

пойдет?

Merlin
Динозавр IB/FB
Сообщения: 1502
Зарегистрирован: 27 окт 2004, 11:44

Сообщение Merlin » 29 сен 2005, 20:02

Это не в Дельфи.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 29 сен 2005, 20:14

а ты докажи :) запрос-то из Delphi идет. Вообще на такие вопросы отвечать опасно. Ответишь, а тебе потом - а чего у меня так тормозит, или еще что. Откуда ж я знаю, человек с dbf пришел, и отфильтровать пытается, или наоборот, собаку съел на sql, а тут его на Delphi посадили...

Merlin
Динозавр IB/FB
Сообщения: 1502
Зарегистрирован: 27 окт 2004, 11:44

Сообщение Merlin » 29 сен 2005, 20:34

kdv писал(а): Вообще на такие вопросы отвечать опасно.
Вот и я так думаю. Тебя в аське не видать, я здесь скажу - ты луччи почитай нитку [FFcommittee] Another Possible Sponsor for the Conference? Что в мире-то творицца ;)

TAV
Сообщения: 48
Зарегистрирован: 31 май 2005, 08:18

Сообщение TAV » 30 сен 2005, 08:18

если в Delphi, тады так:

1. Для активизации фильтра
DataSet.Filtered := true
2. В обработчике фильтра OnFilterRecord
Accept := (DataSet.FieldByName('DT').AsDateTime > StrToDateTime('01.09.05 00:00:00')) and (DataSet.FieldByName('DT').AsDateTime < StrToDateTime('29.09.05 23:59:59'))

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 30 сен 2005, 10:29

Что в мире-то творицца
я, к сожалению углядел только организацию прогулок по Праге и тест IB/FB от Better Office. Не все письма получал, большинство удалил не читая, увы.

Элешки
Сообщения: 8
Зарегистрирован: 28 сен 2005, 15:32

Сообщение Элешки » 30 сен 2005, 11:18

TAV писал(а):если в Delphi, тады так:

1. Для активизации фильтра
DataSet.Filtered := true
2. В обработчике фильтра OnFilterRecord
Accept := (DataSet.FieldByName('DT').AsDateTime > StrToDateTime('01.09.05 00:00:00')) and (DataSet.FieldByName('DT').AsDateTime < StrToDateTime('29.09.05 23:59:59'))
А если я хочу задать фильтрацию не в процессе проэктирования, а во время выполнения программы? Допустим, я поставила 2 компонента DateTimePicker, один показывает с какой даты надо делать фильтрацию, второй- по какую. Я нажимаю кнопку Show и он мне в DBGrid показывает результат. Как мне описать обработчик события OnClickButtonShow?

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 30 сен 2005, 11:35

может, лучше купить книжку, хотя бы Мир InterBase ?

Ivan_Pisarevsky
Заслуженный разработчик
Сообщения: 644
Зарегистрирован: 15 фев 2005, 11:34

Сообщение Ivan_Pisarevsky » 03 окт 2005, 09:14

где-нидь заранее
MyIBQuery.sql.text := 'select * from table where dt between :date_from and :date_to'

по нажатию на кнопку
MyIBQuery.Close;
MyIBQuery.ParamByName('date_from').asdatetime:=DateTimePicker_from.DateTime;
MyIBQuery.ParamByName('date_to').asdatetime:=DateTimePicker_to.DateTime;
MyIBQuery.Open;

Исключительно для прекрасной дамы, а так вообще-то RTFM. :)

Ответить