Filter в FIBDataSet не работает! почему???

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Filter в FIBDataSet не работает! почему???

Сообщение Джентельмен » 01.09.2006 10:01:10

И еще проблемка...
мне нуно...
к FIBDataSet установить фильтр, и выбрать записи только за указаный период...

я делаю так:

FIBDataSet1.Filtered := 'True';
FIBDataSet1.Filter := 'DATA_S>18.06.83 and DATA_V<18.06.85';

компилирует, все хорошо...
но на этот фильтр не обращает внимания, и выводит все записи...
кто дурак?
Джентельмен
постоялец
 
Сообщения: 162
Зарегистрирован: 16.10.2005 10:47:26
Откуда: Украина Донбасс Краматорск

Сообщение Джентельмен » 01.09.2006 16:56:02

Ну!
неужели никто ничего не подскажет???
Джентельмен
постоялец
 
Сообщения: 162
Зарегистрирован: 16.10.2005 10:47:26
Откуда: Украина Донбасс Краматорск

Сообщение Сергей Смирнов » 01.09.2006 19:46:56

Я чего-то не помню, чтобы в FIBL была реализована фильтрация. В TDataSet - тем более. У меня нет сейчас под рукой Лазаря, так что посмотреть сам не могу. Просто гляньте сами на реализацию этих FIBDataSet1.Filtered и FIBDataSet1.Filter.
Аватара пользователя
Сергей Смирнов
энтузиаст
 
Сообщения: 595
Зарегистрирован: 28.04.2005 13:23:25
Откуда: Москва

Сообщение debi12345 » 01.09.2006 21:43:43

Сергей Смирнов писал(а):Я чего-то не помню, чтобы в FIBL была реализована фильтрация. В TDataSet - тем более. У меня нет сейчас под рукой Лазаря, так что посмотреть сам не могу. Просто гляньте сами на реализацию этих FIBDataSet1.Filtered и FIBDataSet1.Filter.

Чтобы избежать такого рода проблем, для фильтрации надежнее использовать SQL-варианты ( а не через файл ) доступа к данным, как наиболее проработанные - то бишь через TSQLQuery. Тогда фильтр автоматически добавляется к WHERE-условию и делается перезапрос.
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5752
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Сообщение Джентельмен » 04.09.2006 09:33:57

я это все понимаю.... что SQL надо использовать... но там тогда получаетса очень много условий для выборки, и именно посиму я хочу это все дело разделить... сначала поставить фильтр по дате, причем по двум столбцам, а потом уже SQLем делать выборку...
а фильтрация реализована, покрайне мере свойство Filtered, Filter у FIBDataSet есть... от только почему то не работает...
еще предложения...
Джентельмен
постоялец
 
Сообщения: 162
Зарегистрирован: 16.10.2005 10:47:26
Откуда: Украина Донбасс Краматорск

Сообщение MageSlayer » 07.09.2006 12:36:29

Точно не скажу, но насколько я понимаю TFIBDataset - это "тяжкое наследие войны". Куча медотов там вообще не реализованы и представляют из себя пустые заглушки. AFAIK, нужен TpFibDataset.
Пробуйте, Джентельмены! :wink:
MageSlayer
постоялец
 
Сообщения: 216
Зарегистрирован: 07.09.2006 12:30:44

Сообщение wellx » 07.09.2006 13:16:21

Джентельмен писал(а):я это все понимаю.... что SQL надо использовать... но там тогда получаетса очень много условий для выборки, и именно посиму я хочу это все дело разделить... сначала поставить фильтр по дате, причем по двум столбцам, а потом уже SQLем делать выборку...
а фильтрация реализована, покрайне мере свойство Filtered, Filter у FIBDataSet есть... от только почему то не работает...
еще предложения...


Вы хотите ставить фильтр после того как увидели выборку? очень странное дело...
wellx
новенький
 
Сообщения: 67
Зарегистрирован: 06.05.2005 14:01:07

Сообщение Джентельмен » 07.09.2006 13:50:30

нет...
я хочу поставить фильтр а потом выборку запросом зделать...
Джентельмен
постоялец
 
Сообщения: 162
Зарегистрирован: 16.10.2005 10:47:26
Откуда: Украина Донбасс Краматорск

Сообщение SergKam » 07.09.2006 16:14:14

по моему это глупо.
там тогда получаетса очень много условий для выборки,

сколькоб их не было лучше делать через sql. а не тащить все на клиента и там еще раз фильтровать кучу ненужно выбранных данных.
SergKam
постоялец
 
Сообщения: 251
Зарегистрирован: 16.11.2005 21:31:11
Откуда: Украина,Харьков

Re: Filter в FIBDataSet не работает! почему???

Сообщение jwv » 07.09.2006 18:43:56

Джентельмен писал(а):И еще проблемка...
мне нуно...
к FIBDataSet установить фильтр, и выбрать записи только за указаный период...

я делаю так:

FIBDataSet1.Filtered := 'True';
FIBDataSet1.Filter := 'DATA_S>18.06.83 and DATA_V<18.06.85';

компилирует, все хорошо...
но на этот фильтр не обращает внимания, и выводит все записи...
кто дурак?


на сколько я понял "18.06.83" это дата, тогда надо её в опостров
FIBDataSet1.Filter := 'DATA_S>''18.06.83'' and DATA_V<''18.06.85''';

я вообще то не советовал бы пользоваться фильтром, когда можно это через SQL сделать.
jwv
новенький
 
Сообщения: 21
Зарегистрирован: 10.05.2005 12:23:16

Сообщение debi12345 » 07.09.2006 21:55:13

Джентельмен писал(а):я это все понимаю.... что SQL надо использовать... но там тогда получаетса очень много условий для выборки, и именно посиму я хочу это все дело разделить... сначала поставить фильтр по дате, причем по двум столбцам, а потом уже SQLем делать выборку...
а фильтрация реализована, покрайне мере свойство Filtered, Filter у FIBDataSet есть... от только почему то не работает...
еще предложения...

На крайняк проще ввести и использовать параметры запроса.
-------------
query.sql.add('select * from table1 where cond1 = :PARAM1');
query.params.parambyname('PARAM1').asinteger:= 1;
query.active:= true;
-------------
и далее менять значение параметров и делать презапросы.
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5752
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Majestic-12 [Bot] и гости: 17

Рейтинг@Mail.ru