Фильтрация записей

Тема в разделе "Delphi - Базы данных", создана пользователем Alert, 3 мар 2007.

Статус темы:
Закрыта.
  1. Alert

    Alert Гость

    Есть 3 компонента TDataSource, TTable, TDBGrid. Надо чтобы в TDBGrid выводились только те записи у которых поле "id" = false.
    Каким образом можно этого достич ?

    p.s. Без SQL.
     
  2. @rtem

    @rtem Гость

    Сделай SQL-запрос. Ну т. е. добавь компонент и в свойстве напиши запрос на выборку с условием id = "false".

    Можно закинуть на кнопку обработку запроса(тогда в свойствах компонента SQL напиши select * from укажи таблицы).
    а в обработчике кнопки пиши:

    select * from ......таблицы..... where ( условие выбора ).

    Гдето так.

    Есть еще возможность фильтрации, тогда SQL не нужен. Честно не точно помню. Посмотрю и напишу обязательно.
     
  3. Alert

    Alert Гость

    Спасибо за ответ, но нужно без SQL.
     
  4. Alert

    Alert Гость

    фууф после часового тыканья по свойствам наконецто получилось :rolleyes:
    Надо было в TDataSource в св-ве Filter написать id='false' и св-ву Filtered присвоить знач. True.
    Всё заработало.

    А с SQL х3 почему, но не получается.
    - создал TQuery
    - связал с DataSource
    - в св-ве SQL написал: SELECT * FROM Personal WHERE id="False";
    - св-во Active=true

    И в гриде ничего не отфильтровалось.
     
  5. Alert

    Alert Гость

    ой ошибся чуток.
    св-ва Filter и Filtered у TTable а не у TDataScource
     
  6. @rtem

    @rtem Гость

    Вот процедура кнопки, которая реализует фильтр (свойство Filter) накладных в БД (вариант работает без SQL).
    Код (Text):
    procedure TfmFNakls.sbFilterClick(Sender: TObject);
    begin
    if edFilter.Text <> ' ' then        // проверка текстового поля на пустоту
    with DM.Nakls do            // DM - это модуль данных, Nakls - это таблица для которой работает фильтр
    begin
    Filter := edFilter.Text;            // edFilter.Text - текстовое поле куда записывается условие фильтрации
    Filtered := true;           // в Edit записывается условие фильтрации по любому полю таблицы
    end                 // например NSum=1400 фильтр отберет все накладные на сумму 1400
    end;
    Можно использовать и другие поля таблицы для фильтрации, но в условии записывать их реальные имена, а не отбражаемых на форме.

    В Вашем случае вместо строки Filter := edFilter.Text; запишите свое условеи ( Filter := 'Id=false'; Filtered := true; ).
    Edit не нужен ( if тоже ). Если нет модуля данных то просто with Имя таблицы do. Должно работать.
     
  7. @rtem

    @rtem Гость

    Условие надо брать в скобки. where (......).
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей