Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

фильтрация в DBGridEh через STFilter - работает неадекватно [D7]


alex_*** ©   (2007-01-11 12:20:00) 

STFilter.Local := false;

в SQL прописал
where /*FILTER*/  (1=1)  - работает.

то же самое прописал в соседнем query - не работает.
Проверил настройки гридов - одинаковые.
Перенес первый грид с query в тестовый проект - не работает.

Чего-то я не догоняю от чего зависит работоспособность STFilter


alex_***   (2007-01-11 15:38:00) [1]


> Или текст запроса так составлен, что парсер не может понять
> куда where лепить.

ну это абстрактные размышления. Все равно спасибо - остановил меня во время доводки своей реализации фильтра на ApplyFilter


Reindeer Moss Eater   (2007-01-11 15:33:00) [2]

Reindeer Moss Eater ©   (11.01.07 13:39) [6]
Ну может в uses второго проекта не включен модуль, в котором реализованы фичи для BDE датасетов. Или текст запроса так составлен, что парсер не может понять куда where лепить.


alex_***   (2007-01-11 15:17:00) [3]

работает даже с TADODataSet что радует.


alex_***   (2007-01-11 15:13:00) [4]

все это понятно.
Все оказалось просто до отвратительного:
строка  '/*FILTER*/  (1=1)'  должна идти с новой строки с первой позиции без пробелов:
'  /*FILTER*/  (1=1)' - не работает.

Вот блин, кто бы мог подумать. На удаление пробела потратил полдня :(
Хотя надо было мануал внимательнее читать:


So your SQL query have to have a line that begining from '/*Filter*/'


Reindeer Moss Eater   (2007-01-11 14:58:00) [5]

package EhLib70;
.....
 EhLibVCL in 'EhLibVCL.pas',
 EhLibIBX in '..\DataService\EhLibIBX.pas',
  EhLibADO in '..\DataService\EhLibADO.Pas';
end.


alex_***   (2007-01-11 14:46:00) [6]

явно в uses он у меня не прописан и как-то работает


Reindeer Moss Eater   (2007-01-11 14:45:00) [7]

unit EhLibADO;
.....

initialization
 RegisterDatasetFeaturesEh(TADOSQLDatasetFeaturesEh, TADOQuery);
 RegisterDatasetFeaturesEh(TADOCommandTextDatasetFeaturesEh, TCustomADODataSet);
end.

Без выполненного кода в initialization не будет работать. надеюсь с этим спорить не будем? Просто модуль EhLibADO уже включен в пакет EhLibХ0.dpk


alex_***   (2007-01-11 14:34:00) [8]


> Если в юзез ни в одном модуле нет EhLibADO.Pas, то фильтрация
> не будет работать вообще нигде

тем не менее, как-то она работает без него


Reindeer Moss Eater   (2007-01-11 14:14:00) [9]

кто здесь говорил про БДЕ? ADOQuery.

А кто должен был говорить про то, какие у него датасеты?

кроме DBGridEh никаких модулей из EhLib не подключено ни в 1 , ни во 2 проекте

Оптический обман. Если в юзез ни в одном модуле нет EhLibADO.Pas, то фильтрация не будет работать вообще нигде.

надоели эти фичи или глюки

Слова не мальчика, но мужа.


alex_***   (2007-01-11 14:08:00) [10]

вобщем сам буду фильтр составлять, надоели эти фичи или глюки


alex_***   (2007-01-11 14:07:00) [11]

кто здесь говорил про БДЕ? ADOQuery.

кроме DBGridEh никаких модулей из EhLib не подключено ни в 1 , ни во 2 проекте


Reindeer Moss Eater   (2007-01-11 13:39:00) [12]

Ну может в uses второго проекта не включен модуль, в котором реализованы фичи для BDE датасетов. Или текст запроса так составлен, что парсер не может понять куда where лепить.


alex_***   (2007-01-11 13:07:00) [13]

спасибо, конечно, за науку, но ведь тип query у меня один и тот же и TDatasetFeaturesEh д.б. постоянный.


Reindeer Moss Eater   (2007-01-11 12:49:00) [14]

procedure TDBGridEhDataService.DefaultApplyFilter(AGrid: TCustomDBGridEh);
var
 DatasetFeatures: TDatasetFeaturesEh;
begin
 if (AGrid.DataSource <> nil) and (AGrid.DataSource.DataSet <> nil) then
 begin
   DatasetFeatures := GetDatasetFeaturesForDataSet(AGrid.DataSource.DataSet);
   if DatasetFeatures <> nil then
     DatasetFeatures. ApplyFilter(AGrid, AGrid.DataSource.DataSet, True);
 end;
end;


Reindeer Moss Eater   (2007-01-11 12:45:00) [15]

типа шутка юмора?

Кому как.


alex_***   (2007-01-11 12:25:00) [16]

типа шутка юмора?
распечатываю SQL.Text на BeforeOpen. В первом случае нормально подставляется условие отбора, в других набор даже не переотрывается


Reindeer Moss Eater   (2007-01-11 12:23:00) [17]

Чего-то я не догоняю от чего зависит работоспособность STFilter

От специализированных потомков класса TDBFeatures.


Наверх

Титульная страница Поиск, карта сайта Написать письмо