|
0 / 0 / 0
Регистрация: 16.11.2011
Сообщений: 18
|
|
Поиск по ходу ввода данных (ADO)19.01.2012, 12:27. Показов 3795. Ответов 5
Метки нет (Все метки)
Добрый день. Необходимо осуществить поиск по полю БД (в моем случае Access, поле - ФИО) с использование ADO таким образом, чтоб поиск осуществлялся по уже набранным символам и в выпадающем списке выходил результат поиска (в идеале с подсветкой символов которые совпали), т.е. поиск выполнялся после ввода каждого следующего символа. Подскажите плз, в какую сторону копать. Заранее благодарен.
0
|
|
| 19.01.2012, 12:27 | |
|
Ответы с готовыми решениями:
5
Поиск в базе данных группа радиокнопок, 1 поле ввода, 1 кнопка Поиск в БД (ADO) |
|
569 / 292 / 12
Регистрация: 28.01.2011
Сообщений: 1,326
|
|
| 19.01.2012, 13:04 | |
|
в сторону like (запрос или фильтр).
Или в сторону lookup, locate (поиск в датасете).
0
|
|
|
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
|
||||||
| 19.01.2012, 13:41 | ||||||
|
Для начала определиться с контролами, куда вводятся "символы" - то ли это грид, то ли TEdit. Определив нужный контрол, создаем для него обработчик нужного события:
1) TEdit Событие OnChange - после каждого изменения содержимого выполняется Locate для набора данных Пример:
У грида нет события OnChange как у эдита. Поэтому можно взять то, что есть, а именно событие OnKeyPress. Дальше - сложнее. Дело в том, КАК ПОКАЗЫВАТЬ то, что ввел пользователь - ведь в активной ячейке имеется некоторая информация, которую нельзя менять ! Поэтому имеется несколько вариантов: а) Как в 1С - каждый введенный символ добавляется к предыдущему в хвост, полученный образец "накладывается" на колонку (поле) следующим образом - сначала выполняется поиск все тем же Locate и, если находится запись, то цветом выделяется часть ячейки, совпавшая с образцом. Однако реализация этого способа самостоятельно нетривиальна для новичка (надо работать напрямую с TInplaceEdit) б) Встраиваемый в грид TEdit. Поверху грида рисуется и встраивается точно в активную ячейку TEdit, для которого все пишется также, как и для эдита в 1). Показ Эдита делается во время нажатия клавиши с символом или спец.функции (например Ctrl+F), а прятание - при "уходе" из самого эдита в) Модальная формочка (ИМХО, самый универсальный способ), в которой можно предусмотреть несколько вариантов поискового сервиса - от поиска первой до поиска всех похожих и размещения найденных в отдельный список, по которому возможна навигация. Добавлено через 5 минут Для варианта с эдитом (самом простого). Чтобы сделать так, как в офисе (т.е. давать выбирать из ранее набранных в сеансе образцов) - просто заменить TEdit на TComboBox. В его обработчике OnChange перед началом поиска добавить поиск введенного образца в списке комбобокса и, если его там нет, то добавлять. Все ![]() Добавлено через 4 минуты Важный момент ! Чтобы предотвратить срабатывание OnChange когда это не нужно (например при начальном заполнении эдита или бокса) надо добавить в обработчик еще и это: if not TWinControl(Sender).Focused then exit; Т.е. "срабатывать" событие должно только в том случае, когда содержимое меняется именно пользователем - а это бывает только если фокус в контроле
1
|
||||||
|
0 / 0 / 0
Регистрация: 16.11.2011
Сообщений: 18
|
|
| 20.01.2012, 09:09 [ТС] | |
|
Как бы задумка такая:
Ввод будет осуществляться во что-нить с выпадающим списком (ComboBox, DBLookupComboBox, DBComboBox) этот комбобокс будет заполняться данными из определенного поля таблицы, соответственно фильтр (наверно так более коректно) будет накладываться на данные из этого же поля и обновлять данные комбобокса
0
|
|
|
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
|
|
| 20.01.2012, 11:01 | |
|
DB-aware нельзя
0
|
|
|
0 / 0 / 0
Регистрация: 16.11.2011
Сообщений: 18
|
|
| 20.01.2012, 15:14 [ТС] | |
|
0
|
|
| 20.01.2012, 15:14 | |
|
Помогаю со студенческими работами здесь
6
Поиск в ADO Реализовать повтор ввода данных в программу или отказ от ввода
Реализовать контроль ошибок ввода данных в поле, предназначенное для ввода времени Расширенный поиск в ADO Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2.
Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
|
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
|
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
|
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2.
Данный документ берёт данные из другого нетипового документа. . .
|
|
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
|
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: реализовать программный контроль на предмет проведения документа. . .
|
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача:
1. Реализовать контроль заполнения реквизита. . .
|
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение:
DISM / Online / Add-Capability / CapabilityName:WMIC~~~~
Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
|