![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Фильтрация в 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;где домен FIELD1 - обязательно присутствует в наборе данных qrMaster.
qrDetail.ParamCheck := false;
qrDetail.SQL.Text := 'SELECT T1.ID, T1..... FROM MY_TABLE T1 WHERE (T1.SOME_FIELD = ?FIELD1)';
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;