6 / 6 / 1
Регистрация: 31.03.2009
Сообщений: 54
MS Access

Поиск по базе при помощи компонента AdoQuery

12.05.2010, 13:57. Показов 20570. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дрброго времени суток. Есть вопрос, как организовать поиск по базе Access при помощи компонента ADOQuery. То есть нужно кнопка поиск рядом TBedit при вводе в который и нажатию кнопки поиск, результат поиска будет подсвечиваться в сетке?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.05.2010, 13:57
Ответы с готовыми решениями:

Поиск в ADoquery, Delphi, поиск в базе данных
Доброго времени суток многоуважаемые пользователи данного сайта! Есть очень глупая проблема, с которой я, к сожалению, справиться не...

Поиск по базе Access через ADOQuery
Доброго времени суток. В общем, у меня в проекте идёт подключение базы данных Access. На форме использую ADOConnection, DataSource и...

Динамический поиск по базе данных, с использованием ADOQuery и DBGrid
Есть на форме DBGrid и Edit, так вот, когда мы вводим в Edit символы, тут же начинается поиск и в DBGrid-е отображаются результаты. Т. е....

15
50 / 49 / 16
Регистрация: 12.03.2009
Сообщений: 133
12.05.2010, 16:11
у ADOQuery есть свойство Filter тип string в котором можно задать условие например поле с названием Field1='Один'. В итоге после перевода свойства filtered := true в dataset-е остануться только запсиси удовлетворяющие этому условию.

Delphi
1
2
3
4
5
6
7
8
9
10
  ADOQuery.active := false;
  ADOQuery.SQL.Add((*тут любой SQL запрос из например выбрать все записи из таблицы 
с именем Table*)'select * from Table');
  ADOQuery.active := true;
  //далле необходимо сделать фильтр который будет набираться в Edit1
  Edit1.text := 'Field1='+#39+'Один'+#39; (* если поле Field1 типа стринг, то параметр значения 
  поля которое нужно выбрать должно быть взято в кавычки. В данном случа #39=' *)
  ADOQuery.Filter := Edit1.text; 
  ADOQuery.Filtered := true;
  //после этого в датасете ADOQuery остануться только записи удовлетворяющие фильтру
Добавлено через 17 минут
можно посмотреть еще и тут
1
151 / 151 / 3
Регистрация: 05.05.2010
Сообщений: 570
12.05.2010, 19:36
_zz_, не очень удачный выбор для организации поиска.
Применимо для ADOTable, но использовать в совокупности с запросом - изврат (сорри, но по другому не могу сказать)
Delphi
1
2
3
4
ADOQuery1.Sql.Clear;
ADOQuery1.Sql.Add('SELECT * FROM TableName WHERE FindField = :FindValue');
ADOQuery1.Parameters.ParamByName('FindValue').Value := Edit1.Text;
ADOQuery1.Open;
Основное преимущество: скорость выполнения будет гораздо выше, так как клиенту уже отфильтрованный набор данных передается из БД. А это потенциально минимизация сетевого трафика, меньше нагрузка на клиента и т.д. и т.п.
Еще одно мнение. Свойство Active в потомках DataSet давно уже пора только для чтения сделать.
2
Техник
 Аватар для DenProx
318 / 176 / 27
Регистрация: 09.10.2009
Сообщений: 3,109
13.05.2010, 11:53
Demon008, вам обязательно нужно, чтоб запись выделялась? или нужен любой способ поиска?
1
6 / 6 / 1
Регистрация: 31.03.2009
Сообщений: 54
13.05.2010, 16:10  [ТС]
да, очень надо.

Добавлено через 6 минут
Пасиб за советы буду пробовать.
0
Техник
 Аватар для DenProx
318 / 176 / 27
Регистрация: 09.10.2009
Сообщений: 3,109
13.05.2010, 17:47
Demon008, если что можно еще так:
Delphi
1
2
3
4
5
6
adoquery.active := False;
adoquery.sql.clear;
adoquery.sql.add('SELECT *');
adoquery.sql.add('FROM tablename');
adoquery.sql.add('WHERE LIKE = '+#39+edit.text+'%'+#39);
adoquery.active := true;
как то так вроди бы))
1
151 / 151 / 3
Регистрация: 05.05.2010
Сообщений: 570
13.05.2010, 20:04
Цитата Сообщение от DenProx Посмотреть сообщение
adoquery.sql.add('WHERE LIKE = '+#39+edit.text+'%'+#39);
= - лишний элемент. Плюс имени поля не указано.
Delphi
1
2
3
4
...
ADOQuery.Sql.Add('WHERE FindField LIKE '+#39+Edit.Text+'%'+#39);
ADOQuery.Open;
...
1
14.05.2010, 08:15

Не по теме:

harmless, точно, чувствую что то не так))) просто писал здесь не проверял) немножно запямятовал :)

1
1 / 1 / 0
Регистрация: 14.04.2010
Сообщений: 20
18.05.2010, 12:36
Вот может пригодится. только надо в BDE Administrator Выбрать файлик в архиве Nokia.db
Вложения
Тип файла: rar Задача v1.1.rar (275.1 Кб, 500 просмотров)
1
6 / 6 / 6
Регистрация: 30.04.2012
Сообщений: 216
07.06.2014, 15:55
В реальном своем проекте столкнулся со следующей проблемой: не выход найти человека по времени его рождения, если он родился между 0 и 9-ю часами включительно. Состряпал небольшой пример, в примере есть двое людей, которые родились между 0 и 9-ю часами и между 10-ю и 23-ю часами Взгляните и посоветуйте что следует подправить в поиске?
Вложения
Тип файла: zip Primer.zip (535.6 Кб, 86 просмотров)
0
1 / 1 / 2
Регистрация: 09.12.2012
Сообщений: 58
07.06.2014, 16:18
Как вариант, можете воспользоваться библиотекой EhLib и тамошним DBGrid-ом. У него есть встроенная функция поиска, достаточна не плохая как таковой.
И ко всему прочему, если всё же реализовывать своими силами поиск, то Вам ещё понадобится получать название столбца, для которого необходимо выполнить поиск. Реализовывал это недавно, но в последствии отказался, ввиду уже изобретённого велосипеда в EhLibe-е.
Вот код:
Если в поле поиска очистили - возвращаю полную таблицу, иначе делаю выборку с введёнными символами.
Процедурка забита в Edit.KeyUp.
tmpSelIndex получаю когда пользователь кликает на ячейке в гриде
Delphi
1
2
3
4
5
6
7
8
9
10
if SearchKlientEdit.Text='' then begin
DataM.qryKlient.SQL.Clear;
DataM.qryKlient.SQL.Add(stdKlient);
DataM.qryKlient.Open;
end else begin
DataM.qryKlient.SQL.Clear;
DataM.qryKlient.SQL.Add('Select * from tblKlient WHERE ' + tmpSelIndex + ' LIKE :pText');
DataM.qryKlient.Parameters.ParamByName('pText').Value:=SearchKlientEdit.Text+'%';
DataM.qryKlient.Open;
end;
0
0 / 0 / 0
Регистрация: 29.06.2015
Сообщений: 27
06.12.2015, 12:22
Все что здесь предложено это различные варианты фильтров, а нужен поиск с выделением удовлетворяющей поиску записи, как это реализовать?
0
5989 / 4564 / 1096
Регистрация: 29.08.2013
Сообщений: 28,207
Записей в блоге: 3
06.12.2015, 12:42
kirillofficial, расскажите же нам что такое ПОИСК
как оно физически выглядит?
0
2 / 2 / 1
Регистрация: 25.11.2014
Сообщений: 25
06.12.2015, 13:11
https://www.youtube.com/watch?v=FeNlT4gtCg0 Вот здесь подробно описывается процедура поиска. То что вам нужно.
0
1 / 1 / 0
Регистрация: 29.11.2015
Сообщений: 7
07.12.2015, 20:27
Delphi
1
2
3
4
5
6
7
Поиск   (Аdoquery)
procedure TForm1.Edit1Change(Sender: TObject);
begin
Adoquery1.SQL.Clear ;
Adoquery1.SQL.Add('Select * from Имя таблица);
Adoquery1.SQL.Add('Where Фамилия like '''+'%'+'''+'''+edit1.text+'''+'''+'%'+'''');
Adoquery1.Active :=true;
1
0 / 0 / 0
Регистрация: 29.06.2015
Сообщений: 27
23.12.2015, 19:12
В просьбе сказано "подсвечиваться в сетке" я думаю что речь идет о текущей записи в таблице номер которой возвращается "RecNo".
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.12.2015, 19:12
Помогаю со студенческими работами здесь

Ввод данных в БД MS Access при помощи компонента DataGridView
Доброго времени суток! Подскажите, каким образом, при помощи компонента DataGridView вносить изменения в базу?

При помощи компонента Image создать приложение с нестандартной формой
При помощи компонента Image создать приложение с нестандартной формой. Написать код, который будет позволять перемещать форму за любую ее...

Можно ли открывать таблицы Access при помощи компонента OpenDialog?
можно ли открывать таблицы access при помощи компонента openDialog?

При помощи какого компонента можно вывести трехмерный график по заданным точкам
Подскажите пожалуйста при помощи чего можно вывести трехмерный график по заданным точкам в c#?

Линк на документ в другой базе при помощи формул
Здравствуйте. Может и простой вопрос но в книгах и в форуме ответ не нашел. Как можно сделать ссылку в документе на документ в другой...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

Новые блоги и статьи
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru