Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.58/100: Рейтинг темы: голосов - 100, средняя оценка - 4.58
6 / 6 / 1
Регистрация: 31.03.2009
Сообщений: 54
MS Access

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

12.05.2010, 13:57. Показов 20530. Ответов 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
5967 / 4543 / 1094
Регистрация: 29.08.2013
Сообщений: 28,155
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru