-
samalex2504 (13.04.11 12:26) [0]Уважаемые знатоки!!!
Есть один грид и другой. Нужно при перемещении по первому фильтровать другой.
Хотел сделать фильтрацию на 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;
Что-то не работает. Что не так? -
samalex2504 (13.04.11 12:28) [1]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;
-
Виталий Панасенко (13.04.11 12:55) [2]для этого есть такая херня, называется связь Мастер-Деталь..
-
samalex2504 (13.04.11 13:35) [3]Там на втором IBQuery уже есть запрос с кучей параметров и выводятся определенные фильтром записи. Но я хотел добавить к этому режиму еще один. Можно ли включить связь Мастер-Деталь если есть куча параметров помимо ключа.
-
samalex2504 (13.04.11 13:57) [4]Проверил
Установил -
(DBGridEh2.DataSource.DataSet as TIBQuery).DataSource:=DBGridEh1.DataSource;
При этом в DBGridEh1.DataSource.DataSet ищутся все параметры из 2. -
Виталий Панасенко (13.04.11 14:10) [5]Мастер-Деталь связывается по ключу.. иного не может быть.. можно ПОТОМ отфильтровать деталь по другим параметрам..но, например, если это накладная(документ), то есть Мастер - шапка(дата, номер, от кого, кому и т.д.) и Деталь - строки накладной(документа).. но Деталь имеет лишь ОДНУ связь - ИД Мастера..А уже что можно творить с деталью...это другой вопрос
-
> [0] samalex2504 (13.04.11 12:26)
В IBX Filter вроде не реализовано. Фильтровать можно только через событие onFilter.
Но все таки лучше прислушаться к
> [2] Виталий Панасенко (13.04.11 12:55) -
> 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. -
Anatoly Podgoretsky © (15.04.11 15:36) [8]> samalex2504 (13.04.2011 12:26:00) [0]
Вроде бы классический фильтр не работает по дизайну.