Работа с ADO в Delphi. Часть 7. Фильтрация данных

4 минуты на чтение

Продолжаем работу с базами данных. На этот раз, хотел бы рассмотреть фильтрацию данных в БД. Вообще, хотелось бы поговорить, для чего она предназначена, а также способы фильтрации данных, другими словами поиска данных в БД, с использованием технологии ADO.

Как, я уже говорил, на мой взгляд, фильтрация данных – это, грубо говоря, поиск данных. Но фильтрация данных проходит гораздо быстрее, чем обычный поиск по всей БД, с перебором каждой записи.
Давайте в этой статье и рассмотрим, как быстро можно осуществлять поиск данных, даже если БД имеет большой объем.
Ну, как я уже говорил, это фильтрация данных, кроме этого можно поиск организовать с помощью sql-запросов и с помощью функции Locate. Не забываем, что сейчас мы разговариваем про технологию ADO.

Давайте вернемся к нашему проекту, на форме у меня следующие компоненты:

  • TADOConnection
  • TADOQuery
  • TDBGrid
  • TButton
  • TDataSource

Создадим в MS Access произвольную базу данных и таблицу в ней. У меня она получилась, следующей структуры:

Теперь необходимо сделать подключение к нашей БД, как это делать, мы рассматривали в данной статье, а также необходимо связать между собой компоненты. Для этого, выделяем компонент TADOQuery и в свойстве Connection, выбираем компонент TADOConenction. Далее, выделяем компонент TDataSource и в свойстве выбираем компонент TADOQuery. Затем, выделяем компонент TDBGrid и в свойстве DataSet выбираем компонент TDataSource. Все подключение к нашей БД настроено, теперь приступаем к поиску данных.

Первый способ

Фильтрация данных

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

procedure TForm1.Button1Click(Sender: TObject);
begin
   ADOQuery1.Filtered:=True;
   ADOQuery1.Filter:='names='+'''Andrey''';
end;

В данном свойстве, указывается поле, которое необходимо фильтровать и условия отбора. Работает достаточно быстро, при большом количестве записей. Не забываем, что его необходимо еще и активировать Filtered:=True

Второй способ

С помощью SQL-запросов

Ну, тут, я много ничего не буду говорить, так как мы много рассматривали подобных примеров, просто выбираем записи, по определенному условию, например:

procedure TForm1.Button2Click(Sender: TObject);
begin
   ADOQuery1.SQL.Clear;
   ADOQuery1.SQL.Add('SELECT * FROM Test WHERE names=''Andrey''');
   ADOQuery1.Active:=True;
end;

Тут будут найдены записи, которые полностью удовлетворяют условию, а чтобы были найдены записи, по начальному совпадению, то необходимо использовать LIKE, например:

procedure TForm1.Button2Click(Sender: TObject);
begin
   ADOQuery1.SQL.Clear;
   ADOQuery1.SQL.Add('SELECT * FROM Test WHERE names LIKE ''%Andr%''');
   ADOQuery1.Active:=True;
end;

Данным способом, будут выбраны все записи, которые начинаются на Andr.

Третий способ

С помощью функции Locate

Есть также, замечательная функция, которая позволяет также находить записи по неполному совпадению, например:

procedure TForm1.Button3Click(Sender: TObject);
begin
   if ADOQuery1.Locate('names','Andr',[loCaseInsensitive,loPartialKey])=True then
    begin
     ShowMessage('True');
    end;
end;

Ну вот такая небольшая заметка, по поиску данных в БД, с использованием ADO. Исходники выкладывать не буду, так как тут итак, думаю, все понятно.

Facebook Vk Ok LinkedIn Telegram

Похожие записи:

Всем здравствуйте, в этой статье я хотел бы снова обратить внимание на Базы данных, а в частности работа с Базами данных по технологии ADO. Когда пользователь создает приложение на Delphi, работающего с СУБД, к которой присоединяется по технологии ADO, то к фа...
Всем привет, и вот мой первый урок, думаю урок полезный, так как работа с базами данных в Delphi очень важно, а тем более Access на мой взгляд самая легкая база данных, с которой можно работать в Delphi. В этой статье я расскажу Вам как эту самую Базу данных A...
Ну вот не долго думая, подошла вторая часть по работе с ADO в DELPHI на примере БД — MS Excel. В данной статье мы рассмотрим добавление и редактирование данных, так как с удалением тут возникли проблемы, в связи с тем, что данный драйвер не поддерживает удален...