![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Фильтрация в TIBQuery [D6, IB6.x]
maximf © (2002-08-08 13:00:00)Фильтрации в TIBQuery не оказывает никакого влияния на множество записей.
Тот же фильтр в TIBTable нормально работает.
В чём же проблема?
Использую IB Firebird, Delphi 6 UP2, компоненты IBX.
Спасибо!
elv (2002-08-08 20:18:00) [1]AlexSam
Если желаешь, можешь как-нибудь доехать ко мне - все покажу.
Нет, лучше ты приезжай ко мне, покажу как обойтись без этого. ;)
Тебе конечно виднее.
AlexSam (2002-08-08 17:29:00) [2]Если желаешь, можешь как-нибудь доехать ко мне - все покажу.
elv (2002-08-08 17:18:00) [3]AlexSam (08.08.02 16:53)
Я работаю в крупной конторе.
30 000 - Там описания параметров приборов.
А база данных этих приборов > 3 000 000 записей.
Вот и считай все записи, будешь год ждать....
И что пользователь делает с 3млн. записей?
Ладно, "урежем осетра", что пользователю делать с 30000 записями? Если он их просто пересчитает, у него рабочий день закончиться ;) Так что на клиенте, такой набор почти никогда не нужен.
Johnmen (2002-08-08 16:54:00) [4]AlexSam
elv ©
Я не спорю с вами. Правильно вы все говорите. Просто вы не обратили внимание на слово "Иногда"
AlexSam (2002-08-08 16:53:00) [5]Я работаю в крупной конторе.
30 000 - Там описания параметров приборов.
А база данных этих приборов > 3 000 000 записей.
Вот и считай все записи, будешь год ждать....
elv (2002-08-08 16:50:00) [6]Johnmen © (08.08.02 16:31)
Иногда целесообразней делать локальные фильтрации, и не грузить сервер такими пустяками. А это значительно быстрее. :)
Только данные могут устареть.
elv (2002-08-08 16:47:00) [7]AlexSam (08.08.02 16:44)
что же, сервер будет меньше загружен, если считывает полный набор данных без where, у меня таблица 30000 записей, так я дождаться не могу, когда она полностью считается.
Если ты сможешь придумать зачем клиенту 30000 записей, ты победил :))
AlexSam (2002-08-08 16:44:00) [8]Elv,Johnmen
что же, сервер будет меньше загружен, если считывает полный набор данных без where, у меня таблица 30000 записей, так я дождаться не могу, когда она полностью считается.
Johnmen (2002-08-08 16:31:00) [9]>AlexSam
Иногда целесообразней делать локальные фильтрации, и не грузить сервер такими пустяками. А это значительно быстрее. :)
elv (2002-08-08 16:28:00) [10]AlexSam (08.08.02 16:06)
Согласен, наверное, это для меня "правильно". Программирование с базами перекладывать большей частью на сервер базы данных.
Не только для тебя ;)
Насчет "не быстрее", я честно, не понял объясни.
Ну например производительность клиента выше, чем сервера. Всякое бывает.
AlexSam (2002-08-08 16:06:00) [11]Johnmen
Согласен, наверное, это для меня "правильно". Программирование с базами перекладывать большей частью на сервер базы данных.
Насчет "не быстрее", я честно, не понял объясни.
Johnmen (2002-08-08 16:00:00) [12]>AlexSam (08.08.02 15:56)
>...быстрее...
Не всегда !
>...правильнее...
В чем критерий "правильности" ?
AlexSam (2002-08-08 15:56:00) [13]Я согласен с elv, используй .SQL.text="select .... where". Гораздо быстрее и правильнее.
Johnmen (2002-08-08 14:58:00) [14]Но ничто не мешает fnatali © (08.08.02 13:07) !
Причем это значительно более гибко...
maximf (2002-08-08 14:52:00) [15]Жаль (:
А хелп молчит как рыба :)
Спасибо!
Johnmen (2002-08-08 14:28:00) [16]Свойство Filter для TIBQuery не реализовано !
Жалобы - к разработчику. :)))))
fnatali (2002-08-08 14:26:00) [17]A filter и не будет работать
maximf (2002-08-08 14:22:00) [18]Спасибо за ответы.
Уточняю. У TIBQuery есть свойства Filter и Filtered.
Я пишу:
query.Filter := ...;
query.Filtered := true;
Для соединённой с источником данных сеткой примение фильтра не меняет содержимое сетки.
Для TIBTable то же самое работает - отображает в сетке только отфильтрованные записи.
2 elv:- очевидно, можно менять текст запроса. Но иногда удобнее использовать фильтрацию с помощью свойства Filter. В исходных текстах VCL видно, что для фильтрации используется повторное исполнение запроса, как вы говорите. Если это так, то получается, что в IBX фильтрация понимается и реализуется иначе, чем в компонентах BDE и ADO - где фильтрация выполнялось локально, а не повторным исполнением запроса к серверу.
2 fnatali:Да, это работает. Только интересно разобраться с свойством Filter.
Leran2002 (2002-08-08 13:19:00) [19]Сорь вроде я не так понял вопрос...
Leran2002 (2002-08-08 13:10:00) [20]Фильтры в TIBQuery и TIBTable работают одинаково, т.е. сперва перегоняются отобранные записи (если это TIBQuery - то только записи соответствующие условию запроса, а если TIBTable - то все записи), и только потом к ним применяется фильтр. На то он и называется фильтр, так и положено, так что у тебя все нормально.