• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

  • Автор темы Alert
  • Дата начала
Статус
Закрыто для дальнейших ответов.
A

Alert

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

p.s. Без SQL.
 
@

@rtem

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

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

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

Гдето так.

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

Alert

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

Alert

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

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

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

Alert

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

@rtem

Вот процедура кнопки, которая реализует фильтр (свойство Filter) накладных в БД (вариант работает без SQL).
Код:
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. Должно работать.
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!