Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Совместное использование EhLib и FIBPlus, локальная сортировка и фильтр 
:(
    Опции темы
bruha
Дата 11.6.2006, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 11.6.2006

Репутация: нет
Всего: нет



В ehlib нет драйверов под fibplus, и хотя все данные из датасета отображаются нормально, хотелось бы также иметь возможность локальной сортировки и фильтра.
Подскажите решение этой проблемы.

PS если у кого есть, очень нужен полный русский хелп по EhLib, заранее благодарен (-8 мыло [email protected] 
PM   Вверх
Alex
Дата 12.6.2006, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 17
Всего: 162



Код

unit EhLibFIB;

{$I EhLib.Inc}

interface

uses
  Classes, SysUtils, DB, 
  DbUtilsEh, DBGridEh, pFIBDataSet;

type
  TFIBDatasetFeaturesEh = class(TSQLDatasetFeaturesEh)
  public
    constructor Create; override;
    procedure ApplySorting(Sender: TObject; DataSet: TDataSet; IsReopen: Boolean); override;
    procedure ApplyFilter(Sender: TObject; DataSet: TDataSet; IsReopen: Boolean); override;
  end;

implementation

function DateValueToIBSQLStringProc(DataSet: TDataSet; Value: Variant): String;
begin
  Result := '''' + FormatDateTime('MM"/"DD"/"YYYY', Value) + '''';
end;

constructor TFIBDatasetFeaturesEh.Create; 
begin
  DateValueToSQLString := DateValueToIBSQLStringProc;
  SQLPropName := 'SelectSQL';
end;

procedure TFIBDatasetFeaturesEh.ApplySorting(Sender: TObject; DataSet: TDataSet; IsReopen: Boolean);
var FLD  : array of TVarRec ;
    sort : array of boolean;
    I,J  : integer;
    Grid : TCustomDBGridEh;
begin
  if Sender is TCustomDBGridEh then begin
    Grid:=TCustomDBGridEh(Sender);
    J:=Grid.SortMarkedColumns.Count;
    setlength(fld,J);setlength(sort,J);
    for i:=0 to pred(j) do
      begin
       fld[i].VType:=vtAnsiString;
       string(fld[i].VString):=Grid.SortMarkedColumns[i].fieldname;
       sort[i]:=Grid.SortMarkedColumns[i].Title.SortMarker=smDownEh;
      end;
      TpFibDataset(Dataset).DoSort(fld,sort);
    end;
end;

procedure TFIBDatasetFeaturesEh.ApplyFilter(Sender: TObject; DataSet: TDataSet; IsReopen: Boolean);
begin
  if TDBGridEh(Sender).STFilter.Local then begin
    DataSet.Filter :=
      GetExpressionAsFilterString(TDBGridEh(Sender),
        GetOneExpressionAsLocalFilterString, nil, False, True);
    DataSet.Filtered:=true;
    end
  else
    ApplyFilterSQLBasedDataSet(TDBGridEh(Sender), DateValueToSQLString, IsReopen, SQLPropName);
end;

initialization
  RegisterDatasetFeaturesEh(TFIBDatasetFeaturesEh, TpFIBDataSet);
end.
 


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
bruha
Дата 13.6.2006, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 11.6.2006

Репутация: нет
Всего: нет



Отлично!! Огромное спасибо, сортировка и фильтр теперь работают  smile 

Возникли еще вопросы по совместной работе EhLib и FIBPlus, не знаю может надо отдельную тему, но напишу сюда.

Теперь интересует работа с таблицами Мастер-Деталь, а именно:
Есть таблица ПРОБА, в ней кроме всего прочего поле КОД_ЗАКАЗЧИКА, и есть таблица ЗАКАЗЧИК с полями КОД_ЗАКАЗЧИКА и ИМЯ_ЗАКАЗЧИКА. Как мне теперь в одном гриде (DBGridEh) отобразить таблицу ПРОБА, но вместо поля КОД_ЗАКАЗЧИКА чтобы отображалось ИМЯ_ЗАКАЗЧИКА, а при изменении (MouseClick по полю) появлялся бы выпадающий список со всеми записями поля ИМЯ_ЗАКАЗЧИКА таблицы ЗАКАЗЧИК. Ну и соответственно чтобы работала сортировка и фильтр по этому полю.

Интересуют описания разных способов (или хотя бы каким пользуетесь вы), а также ссылки на статьи, доки по этой теме (чтобы работало в связке EhLib+FIBPlus). Заранее благодарен (=

Сейчас у меня в датасете ПРОБА добавлено поле ИМЯЗАКАЗЧИКА, событие OnGetText которого вызывает SQL запрос, который возвращает ИМЯ_ЗАКАЗЧИКА по КОДУ_ЗАКАЗЧИКА. Т.е. отображается в гриде то, что надо, но понятное дело не работает сортировка, фильтр и нет выпадающего списка.  smile  
PM   Вверх
Alex
Дата 13.6.2006, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 17
Всего: 162



Цитата(bruha @  13.6.2006,  12:49 Найти цитируемый пост)
Возникли еще вопросы по совместной работе EhLib и FIBPlus, не знаю может надо отдельную тему, но напишу сюда.

Теперь интересует работа с таблицами Мастер-Деталь, а именно:
Есть таблица ПРОБА, в ней кроме всего прочего поле КОД_ЗАКАЗЧИКА, и есть таблица ЗАКАЗЧИК с полями КОД_ЗАКАЗЧИКА и ИМЯ_ЗАКАЗЧИКА. Как мне теперь в одном гриде (DBGridEh) отобразить таблицу ПРОБА, но вместо поля КОД_ЗАКАЗЧИКА чтобы отображалось ИМЯ_ЗАКАЗЧИКА, а при изменении (MouseClick по полю) появлялся бы выпадающий список со всеми записями поля ИМЯ_ЗАКАЗЧИКА таблицы ЗАКАЗЧИК. Ну и соответственно чтобы работала сортировка и фильтр по этому полю.

Интересуют описания разных способов (или хотя бы каким пользуетесь вы), а также ссылки на статьи, доки по этой теме (чтобы работало в связке EhLib+FIBPlus). Заранее благодарен (=

Сейчас у меня в датасете ПРОБА добавлено поле ИМЯЗАКАЗЧИКА, событие OnGetText которого вызывает SQL запрос, который возвращает ИМЯ_ЗАКАЗЧИКА по КОДУ_ЗАКАЗЧИКА. Т.е. отображается в гриде то, что надо, но понятное дело не работает сортировка, фильтр и нет выпадающего списка.  smile   

Одна тема одни вопрос. Смотрите Lookup они едины для всех и никаких отличий в работе при связки EhLib+FIB+ нет 


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.1613 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.