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

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

Фильтрация в TIBQuery [D7, FB 2.1]


samalex2504 ©   (2011-04-13 12:26:00) 

Уважаемые знатоки!!!
Есть один грид и другой. Нужно при перемещении по первому фильтровать другой.
Хотел сделать фильтрацию на IBQuery.


with (DBGridEh2.DataSource.DataSet as TIBQuery) do
begin
   Filtered:=False;
   Filter:='ID_PROJECT_PLAN = '+(DBGridEh1.DataSource.DataSet as TIBQuery).FieldByName('ID_PROJECT_PLAN').AsString;
   ShowMessage((DBGridEh1.DataSource.DataSet as TIBQuery).SQL.Text);
TIBQuery).Filter);
   Filtered:=True;
end;

Что-то не работает. Что не так?


Anatoly Podgoretsky   (2011-04-15 15:36:00) [1]

> samalex2504  (13.04.2011 12:26:00)  [0]

Вроде бы классический фильтр не работает по дизайну.


PEAKTOP   (2011-04-13 21:38:00) [2]

> samalex2504   (13.04.11 12:26)
>
> Уважаемые знатоки!!!
> Есть один грид и другой. Нужно при перемещении по первому
> фильтровать другой.
> Хотел сделать фильтрацию на IBQuery.


Все не так !

Во-первых, какая на фиг фильтрация ? Причем здесь вообще фильтрация ? Это - всего лишь связка "Master->Detail".

Во вторых, пример:
trMain :TIBTransaction - транзакция,в рамках которой работают наборы данных
qrMaster :TIBQuery; - Главный запрос
DSqrMaster :TDataSource; - поставщик данных для элементов управления главного запроса
qrDetail: TIBQuery; - детальный запрос
DSqrDetail :TDataSource; - поставщик данных для элементов управления детального запроса

Для нормального отображения детального запроса в зависимости от значения текущей записи главного запроса необходимо:
qrDetail.DataSource := DSqrMaster;
qrDetail.ParamCheck := false;
qrDetail.SQL.Text := 'SELECT T1.ID, T1.....  FROM MY_TABLE T1 WHERE (T1.SOME_FIELD = ?FIELD1)';
где домен FIELD1 - обязательно присутствует в наборе данных qrMaster.


Sergey13   (2011-04-13 14:18:00) [3]

> [0] samalex2504   (13.04.11 12:26)

В IBX Filter вроде не реализовано. Фильтровать можно только через событие onFilter.
Но все таки лучше прислушаться к
> [2] Виталий Панасенко   (13.04.11 12:55)


Виталий Панасенко   (2011-04-13 14:10:00) [4]

Мастер-Деталь связывается по ключу.. иного не может быть.. можно ПОТОМ отфильтровать деталь по другим параметрам..но, например, если это накладная(документ), то есть Мастер - шапка(дата, номер, от кого, кому и т.д.) и Деталь - строки накладной(документа).. но Деталь имеет лишь ОДНУ связь - ИД Мастера..А уже что можно творить с деталью...это другой вопрос


samalex2504   (2011-04-13 13:57:00) [5]

Проверил
Установил -
(DBGridEh2.DataSource.DataSet as TIBQuery).DataSource:=DBGridEh1.DataSource;
При этом в DBGridEh1.DataSource.DataSet ищутся все параметры из 2.


samalex2504   (2011-04-13 13:35:00) [6]

Там на втором IBQuery уже есть запрос с кучей параметров и выводятся определенные фильтром записи. Но я хотел добавить к этому режиму еще один. Можно ли включить связь Мастер-Деталь если есть куча параметров помимо ключа.


Виталий Панасенко   (2011-04-13 12:55:00) [7]

для этого есть такая херня, называется связь Мастер-Деталь..


samalex2504   (2011-04-13 12:28:00) [8]

ShowMessage - лишнее


with (DBGridEh2.DataSource.DataSet as TIBQuery) do
begin
  Filtered:=False;
  Filter:='ID_PROJECT_PLAN = '+(DBGridEh1.DataSource.DataSet as TIBQuery).FieldByName('ID_PROJECT_PLAN').AsString;
  Filtered:=True;
end;


Наверх

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