Привет всем.
Задал вопрос в некоторых местах, ну все таки задам и здесь.
Работаю с DBGridEh, у него есть свойтсво сортировать и фильтровать данные автоматически с использованием специальной библиотеки. В моем случае EhlibFIB. Не работает фильтрация на уровне сервера, все сделал и настроил как надо(Включил библ. EhlibFIB.pas, STFilter.Local:=False, SqlSelect:='...... where /*FILTER*/ 1=1'). Но никакой реакций, хотя локальная фильтрация работает нормально.
Никто не знает в чем проблема?
DBgridEh and Server filtering
DBgridEh and Server filtering
Последний раз редактировалось joolio 10 июл 2006, 16:48, всего редактировалось 1 раз.
проблему решил.
Оказывается должно идти первой после , и еще с новой строки без пробелов.
Оказывается
Код: Выделить всё
/*FILTER*/
Код: Выделить всё
WHERE
-
- Сообщения: 18
- Зарегистрирован: 20 сен 2006, 09:18
Re: DBgridEh and Server filtering
......EhlibFIB.pas, STFilter.Local:=False, SqlSelect:='...... where /*FILTER*/ 1=1'). Но никакой реакций, хотя локальная фильтрация работает нормально.
Никто не знает в чем проблема?
дело в том что в стандартной библиотеке нету фильтрации!
где - не помню, но кое что нашел.
ОГРАМНОЕ СПАСИБО АВТОРУ.
Код: Выделить всё
{*******************************************************}
{ }
{ EhLib v3.6 }
{ Register object that sort data in TpFIBDataset }
{ }
{ Copyright (c) 2005 by Roman V. Babenko }
{ e-mail: romb@interbase-world.com }
{ }
{*******************************************************}
{*******************************************************}
{ Add this unit to 'uses' clause of any unit of your }
{ project to allow TDBGridEh to sort data in }
{ TpFIBDataset automatically after sorting markers }
{ will be changed. }
{ TFIBDatasetFeaturesEh will sort data locally }
{ using DoSort procedure of TpFIBDataset }
{ [+] SortLocal }
{ [+] FilterLocal }
{ [+] SortServer }
{ [+] FilterServer }
{*******************************************************}
unit EhLibFIB;
interface
{$I EhLib.Inc}
implementation
uses
DBUtilsEh, pFIBDataSet, DB, DBGridEh, Classes;
type
TpFIBDatasetFeaturesEh = class( TDatasetFeaturesEh )
public
procedure ApplySorting(Sender: TObject; DataSet: TDataSet; IsReopen: Boolean); override;
procedure ApplyFilter(Sender: TObject; DataSet: TDataSet; IsReopen: Boolean); override;
end;
{ TpFIBDatasetFeaturesEh }
procedure TpFIBDatasetFeaturesEh.ApplyFilter(Sender: TObject;
DataSet: TDataSet; IsReopen: Boolean);
var
vDBGridEh : TCustomDBGridEh;
vFIBDataSet : TpFIBDataSet;
begin
if ( Sender is TDBGridEh )
then begin
if ( Sender as TDBGridEh ).STFilter.Local
then begin
{ ToDO Debug 'Expr1 and Expr2' }
TpFIBDataSet( DataSet ).Filter :=
GetExpressionAsFilterString( ( Sender as TCustomDBGridEh ),
GetOneExpressionAsLocalFilterString, nil );
TpFIBDataSet( DataSet ).Filtered := True;
end
else begin
ApplyFilterSQLBasedDataSet( ( Sender as TCustomDBGridEh ), nil,
IsReopen, 'SelectSQL' );
end;
end;
end;
procedure TpFIBDatasetFeaturesEh.ApplySorting(Sender: TObject;
DataSet: TDataSet; IsReopen: Boolean);
var
Sort : array of boolean;
I, J : integer;
Grid : TCustomDBGridEh;
Fields : TStrings;
begin
if ( Sender is TCustomDBGridEh )
then begin
if ( Sender as TCustomDBGridEh ).SortLocal
then begin
Grid:=TCustomDBGridEh(Sender);
J := Grid.SortMarkedColumns.Count;
Fields := TStringList.Create;
Setlength( Sort, J );
for i:=0 to J - 1 do
begin
Fields.Add( Grid.SortMarkedColumns[i].FieldName );
Sort[ I ]:=Grid.SortMarkedColumns[i].Title.SortMarker=smDownEh;
end;
TpFIBDataSet( DataSet ).DoSortEx( Fields, Sort );
end
else begin
ApplySortingForSQLBasedDataSet( ( Sender as TCustomDBGridEh ),
TpFIBDataSet( DataSet ), True, IsReopen, 'SelectSQL' );
end;
end;
end;
initialization
RegisterDatasetFeaturesEh( TpFIBDatasetFeaturesEh, TpFIBDataSet );
end.