Конференция "Базы" » Фильтрация в TIBQuery [D7, FB 2.1]
 
  • 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]
    Мастер-Деталь связывается по ключу.. иного не может быть.. можно ПОТОМ отфильтровать деталь по другим параметрам..но, например, если это накладная(документ), то есть Мастер - шапка(дата, номер, от кого, кому и т.д.) и Деталь - строки накладной(документа).. но Деталь имеет лишь ОДНУ связь - ИД Мастера..А уже что можно творить с деталью...это другой вопрос
  • Sergey13 © (13.04.11 14:18) [6]
    > [0] samalex2504   (13.04.11 12:26)

    В IBX Filter вроде не реализовано. Фильтровать можно только через событие onFilter.
    Но все таки лучше прислушаться к
    > [2] Виталий Панасенко   (13.04.11 12:55)
  • PEAKTOP © (13.04.11 21:38) [7]
    > 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]

    Вроде бы классический фильтр не работает по дизайну.
 
Конференция "Базы" » Фильтрация в TIBQuery [D7, FB 2.1]
Есть новые Нет новых   [134431   +15][b:0][p:0.001]