Продолжаем работу с базами данных. На этот раз, хотел бы рассмотреть фильтрацию данных в БД. Вообще, хотелось бы поговорить, для чего она предназначена, а также способы фильтрации данных, другими словами поиска данных в БД, с использованием технологии 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. Исходники выкладывать не буду, так как тут итак, думаю, все понятно.
Если Вы хотите, чтобы Ваша квартира, либо же Ваш собственный дом выглядел еще лучше, то в этом Вам помогут подвесные потолки Екатеринбург, которые сделают Ваш дом еще более ярче, а самое главное уютней. Данные подвесные потолки делают только самые лучшие специалисты, а самое главное из качественных материалов, так что они прослужат Вам долго. Но кроме этого Вы экономите свое драгоценное время при заказе и установке данных потолков.
Похожие записи
Метки: Access, Ado, ADoconnection, AdoQuery, MS Access, sql, БД, поиск, фильтрация
так как тут итак, дума, все понятно. Андрей исправь слова дума на думаю. А то напишут что много ошибок.
Интересный урок, а про конвертацию (ADO DBGridEh) Access в Excel расскажешь?
да, постараюсь в ближайшее время
Locate — это никакая не фильтрация, а поиск.
А название статьи — фильтрация данных.
Если говорить о фильтрации — то есть ещё способ:
событие OnFilterRecord.
В случае фильтрации, скажем, по вычисляемому полю, без него и не обойдёшься. Но в нём свои минусы — например, непонятно как считать количество отфильтрованных записей.
я объеденил и поиск и фильтрацию, так как фильтрация — тот же самый поиск по условию
procedure TForm1.Button1Click(Sender: TObject);
begin
ADOTable1.Filtered:=True;
ADOTable1.Filter:=ComboBox1.text+Edit1.text;
end;
почему неработает ?
что у тебя в Combobox и Edit?
в Combobox поля в Edit критерий поиска , както так)
ну покажите что в итоге будет, как там у Вас? name=Андрей, покажите что у Вас там именно получается
можна тибе на емайл отправить програму посмотриш код ?)
я на отправлял)
ок сегодня вечером посмотрю, ща ухожу просто
отправил Вам на email
спс
Здраствуйте, не могу разобраться как применить параметры к инструкцие «Like». Ошибка:ненайден параметр. может, подскажите или дадите ссылочку на стороний ресурс.
Заранее благодарю.
Вы возможно не правильно проставляете количество кавычек, либо же знак процентов, покажите полностью Ваш запрос
DMU.DM.AQ1.SQL.Clear;
DMU.DM.AQ1.SQL.Add(‘SELECT * FROM [order] WHERE adrees like »%’+':pcr’+»%» ‘);
DMU.DM.AQ1.Parameters.ParamByName(‘pcr’).Value:=edit1.Text;
DMU.DM.AQ1.ExecSQL;
Что это за кавычки такие в запросе? — », и зачем через параметр? можно сразу Edit1.text
‘SELECT * FROM order WHERE adrees like %»’+Edit1.text+»’%’
И что за СУБД у Вас?
Здравствуйте. можете привести простой пример по сортировке по возрастанию и убыванию? может вы видео уроки запищите? уверен народ будет с удовольствием смотреть.
Order BY вот вам и сортировка по возрастанию а добавите DESC будет по убыванияю
помогите пожалуйста почему при запросе:
‘SELECT * FROM pacientybase WHERE ФИО LIKE »%Edit3.Text%»’
выдает пустое поле?
‘%’+Edit3.Text+’%’ попробуйте так
можите подсказать как можно связать две таблицы через button в Ado?
Очень щчунь надо прошу вас!!!!!!!!!!!!
каким образом Вам надо связать? Про связанные таблицы можно почитать тут https://zaokomtek.ru/?p=1271
По фильтрации данных, вот еще неплохая статья http://devel.comeze.com/index.php?action=filter
Большое спасибо, Андрей!
Отличные лекции! Очень все доступно и проиллюстрировано.
В Дельфи давно, но с БД второй день, и благодаря Вам почти все написано.
незачто, я стараюсь
https://www.youtube.com/watch?v=tIehvjS3oXo&list=SPzTKGcAZiYWI6v7mYiFR-rOtKJ_Bq5LuA&index=8 — фильтрация записей в базе данных Delphi