Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.59/68: Рейтинг темы: голосов - 68, средняя оценка - 4.59
3 / 3 / 0
Регистрация: 30.03.2010
Сообщений: 60

Инкрементный поиск в DBGrid

16.04.2010, 08:04. Показов 14734. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Люди, подскажите пожалуйста, если кто знает, как сделать быстрый поиск в DBGrid, чтоб при наборе букв с клавиатуры сразу находилась нужная запись и устанавливался курсор на нее!
1
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.04.2010, 08:04
Ответы с готовыми решениями:

Перемещение по GRID (инкрементный поиск)
Есть ли стандартные средства, позволяющие , например, в Gride или COMBOBOX при наборе символов перемещаться на соответствующую запись, ...

Инкрементный патч
Здравствуйте, у меня версия ядра 3.2.68-1 решил применить инкрементный патч с сайта kernel.org версии 4.1.1.2 ввожу команду patch -p1 -i...

Инкрементный бэкап с tar
День добрый сотоварищи!) Попробовал делать инкрементный бэкап с tar на debian, но что-то у меня не заладилось (до этого пробовал...

30
Техник
 Аватар для DenProx
318 / 176 / 27
Регистрация: 09.10.2009
Сообщений: 3,109
16.04.2010, 08:25
Лисёныш, юзай SQL или если без него, то Locate, или Lockup ...
1
3 / 3 / 0
Регистрация: 30.03.2010
Сообщений: 60
16.04.2010, 08:35  [ТС]
все сделала правда по другому)))

Добавлено через 1 минуту
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
procedure TForm6.Edit1Change(Sender: TObject);
begin
with DataModule2.ADOQuery4 do
     begin
        Close;
        active:=false;
       SQL.Clear;
SQL.Add('SELECT * FROM obl ') ;
SQL.Add('WHERE name LIKE '+  #39+ '%' + Edit1.Text + '%' + #39);
Open;
        active:=true;
        if RecordCount = 0 then ShowMessage('Такой записи нет');
end;
ТОЛЬКО ВОТ ПОДТАРМАЖИВАЕТ НЕМНОГО!!КАК СДЕЛАТЬ ЧТОБ ПОБЫСТРЕЕ ДУМАЛ???
1
Техник
 Аватар для DenProx
318 / 176 / 27
Регистрация: 09.10.2009
Сообщений: 3,109
16.04.2010, 08:37
Лисёныш, покажите хоть результат) другим может пригодится)

Добавлено через 1 минуту
пардон, пока писал уже....)
1
3 / 3 / 0
Регистрация: 30.03.2010
Сообщений: 60
16.04.2010, 08:43  [ТС]
И еще чувствителен к регистру!подскажите что надо в код добавить???
0
Техник
 Аватар для DenProx
318 / 176 / 27
Регистрация: 09.10.2009
Сообщений: 3,109
16.04.2010, 08:57
Лисёныш, по идеи вроди бы все правельно...
вот для примера код, здесь регистр не чувствителен...
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
begin
ADOQuery1.Active := False;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT *');
ADOQuery1.SQL.Add('FROM tblOrderBy');
if (Length(Edit1.Text) > 0) or
   (Length(Edit2.Text) > 0) then
     begin
       ADOQuery1.SQL.Add('WHERE Stend_ID LIKE' + #39 + Edit1.Text + '%' + #39 +' AND ');
       ADOQuery1.SQL.Add('Block_ID LIKE' + #39 + Edit2.Text + '%' + #39);
       ADOQuery1.Active := True;
     end
   else
     begin
       ADOQuery1.Active := True;
       ADOQuery1.First;
     end;
1
2 / 2 / 0
Регистрация: 18.05.2010
Сообщений: 11
18.05.2010, 23:04
Помогите мне пожалуйста, у меня фактически такая же таблица (ADOQuery, ADOConnection,ADOTABLE,DATASource, DBGrid), вставил в событие onchange в edit1 код, который Лисёныш написал(а). Компилирую, запускаю - все работает, но при вводе текста в edit1 таблица не изменяется, и вообще не реагирует
1
Техник
 Аватар для DenProx
318 / 176 / 27
Регистрация: 09.10.2009
Сообщений: 3,109
19.05.2010, 07:10
NuRsAk, код в студию... или пример
1
151 / 151 / 3
Регистрация: 05.05.2010
Сообщений: 570
19.05.2010, 07:23
В процессе наполнения БД данными тормоза все сильнее будут. Лучше Locate задействовать.
Цитата Сообщение от Лисёныш Посмотреть сообщение
with DataModule2.ADOQuery4 do
begin
Close;
active:=false;
SQL.Clear;
active:=false - лишнее, т.к. Close уже установит. И вообще, если не ошибаюсь, то при изменения св-ва SQL набор сам закрывается.
1
 Аватар для Андрей Борисови
714 / 402 / 33
Регистрация: 04.10.2009
Сообщений: 1,686
19.05.2010, 07:27
TMS пакет 5.0.
Есть славный [DB]StringGrid. В нем есть FindFooter. Пользуюсь. Нравится.
1
2 / 2 / 0
Регистрация: 18.05.2010
Сообщений: 11
19.05.2010, 11:30
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
procedure TForm1.Edit1Change(Sender: TObject);
begin
ADOQuery1.Active := False;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT *');
ADOQuery1.SQL.Add('FROM Учет');
if (Length(Edit1.Text) > 0) or
   (Length(Edit2.Text) > 0) then
     begin
       ADOQuery1.SQL.Add('WHERE Наименование LIKE' + #39 + Edit1.Text + '%' + #39 +' AND ');
       ADOQuery1.SQL.Add('Наименование LIKE' + #39 + Edit2.Text + '%' + #39);
       ADOQuery1.Active := True;
     end
   else
     begin
       ADOQuery1.Active := True;
       ADOQuery1.First;
     end;
end;
 
end.
Миниатюры
Инкрементный поиск в DBGrid  
0
6 / 6 / 1
Регистрация: 31.03.2009
Сообщений: 54
20.05.2010, 08:39
У меня есть вопрос, как можно подсветить результат поиска?
0
Техник
 Аватар для DenProx
318 / 176 / 27
Регистрация: 09.10.2009
Сообщений: 3,109
20.05.2010, 08:43
Demon008, выставь настройки грида чтобы запись выделялаь, и она автоматически будет всегда выделена... Options - RowSelect, AlwaysShowSelect = True вродибы, и Editing = False
0
2 / 2 / 0
Регистрация: 18.05.2010
Сообщений: 11
20.05.2010, 12:30
А как быть мне? У меня прога по прежнему не реагирует, когда я в edit ввожу текст для поиска
0
 Аватар для Андрей Борисови
714 / 402 / 33
Регистрация: 04.10.2009
Сообщений: 1,686
20.05.2010, 13:22
а вы реакцию (OnChange) прописали?
1
2 / 2 / 0
Регистрация: 18.05.2010
Сообщений: 11
20.05.2010, 13:26
Да, делал на onchange, и на кнопке пробовал (онкликом), хз где косяк, перерыл прогу всю
0
 Аватар для Андрей Борисови
714 / 402 / 33
Регистрация: 04.10.2009
Сообщений: 1,686
20.05.2010, 13:38
киньте прогу тогда чтоли..

Добавлено через 14 секунд
с базой...
2
2 / 2 / 0
Регистрация: 18.05.2010
Сообщений: 11
20.05.2010, 13:41
Ок, если получится сделать - пожалуйста объясните в чем моя ошибка.
Вложения
Тип файла: rar uchet-acs.rar (410.5 Кб, 80 просмотров)
1
 Аватар для Андрей Борисови
714 / 402 / 33
Регистрация: 04.10.2009
Сообщений: 1,686
20.05.2010, 14:19
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
begin
if form1.ADOTable1.RecordCount=0 then exit;
if (form1.Edit1.Text='') and (form1.Edit2.Text='') then exit;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT *');
ADOQuery1.SQL.Add('FROM Учет');
if (Length(Edit1.Text) > 0) or
   (Length(Edit2.Text) > 0) then
     begin
       ADOQuery1.SQL.Add('WHERE Наименование LIKE' + #39 + Edit1.Text + '%' + #39 +' AND ');
       ADOQuery1.SQL.Add('Наименование LIKE' + #39 + Edit2.Text + '%' + #39);
       ADOQuery1.Active := True;
       if form1.ADOQuery1.RecordCount>0 then
          form1.ADOTable1.Locate('Наименование', form1.ADOQuery1['Наименование'],[]);
     end
   else
     begin
       ADOQuery1.Active := True;
       ADOQuery1.First;
     end;
end;
И сделайте вы выделение строки)
Название: 000.jpg
Просмотров: 581

Размер: 52.8 Кб
2
6 / 6 / 1
Регистрация: 31.03.2009
Сообщений: 54
20.05.2010, 14:21
Цитата Сообщение от NuRsAk Посмотреть сообщение
Ок, если получится сделать - пожалуйста объясните в чем моя ошибка.
Выложите тогда как делали, у мня такая же проблема
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.05.2010, 14:21
Помогаю со студенческими работами здесь

Инкрементный вывод результатов деления в цикле
Нужно сделать инкрементный вывод результатов деления в цикле. Например 44:11=4 и нужно чтобы к делимому и делителю каждый раз...

Как реализовать полный, дифференциальный и инкрементный бекапы?
Кто может написать как реализовать: 1)Full backup 2)Differential backup 3)Incremental backup

Поиск в DBGrid
помогите люди добрые, мне необходимо чтобы поля DBGrid отображались в DBComboBox. я осуществляю поиск по таблице и необходимо чтобы все...

Поиск по DBGrid
Объясните пожалуйста суть поиска по DBGrid. Где не посмотрю одни #,%,Like. Например человек ввел в Edit Фамилию из поля с таким же...

Поиск по DBGrid
Доброго времени суток. Имеется база данных Access через ADO. На форме DBGrid, два Edita и Combobox. Осуществляю поиск по DBGrid. Однако...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru