Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.01.2011, 15:50   #1
Aleks_www
Пользователь
 
Регистрация: 26.08.2010
Сообщений: 39
По умолчанию Набор текста для поиска через DbGrid

Подскажите пожалуйста как осуществить набор текста для запроса в DbGrid. Например я щелкнул на ячейку в сетке где уже отображаются записи и начинаю набирать текст, который передается в запрос типа: select * from table where field like "некоторый текст", и по мере набора символов в этом же DbGrid должен отображаться результат запроса. Понятно что это надо делать в KeyPress сетки, но как передать в запрос данные которые вводятся с клавиатуры при фокусе на ячейке DbGrid?
Aleks_www вне форума Ответить с цитированием
Старый 20.01.2011, 16:16   #2
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

1. Запросы делаются не в DBGrid, а в БД.
2. Зачем печатать в самом Гриде? Вводи текст в edit и обрабатывай OnChange.
Код:
'select * from table where field like '+edit1,text+'%'
_SERGEYX_ вне форума Ответить с цитированием
Старый 20.01.2011, 20:05   #3
Aleks_www
Пользователь
 
Регистрация: 26.08.2010
Сообщений: 39
По умолчанию

Цитата:
Сообщение от _SERGEYX_ Посмотреть сообщение
1. Запросы делаются не в DBGrid, а в БД.
2. Зачем печатать в самом Гриде? Вводи текст в edit и обрабатывай OnChange.
Код:
'select * from table where field like '+edit1,text+'%'
Я ведь не писал что буду посылать запросы в грид). Конечно для этого существует и используется соответствующий DataSet. С edit мне не подходит вариант, хотя обычно использую его. Вы разве не работали в приложениях, где данные фильтруются непосредственно из сетки? Допустим когда нужно выбрать пользователя в открытой дополнительной форме (таких форм может быть с десяток и более), edit(ы) будут только время отнимать. Гораздо быстрее перемещать фокус по сетке в зависимости от того какой нужен столбец для поиска и получать нд при наборе первых нескольких символов. Я просто не могу найти способ передачи набранных символов в запрос в то время как фокус находится на не редактируемой сетке. Если подскажете как это осуществить буду очень рад)).
Aleks_www вне форума Ответить с цитированием
Старый 20.01.2011, 20:32   #4
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

а версия дельфи какая?
vovk вне форума Ответить с цитированием
Старый 20.01.2011, 20:45   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Я просто не могу найти способ передачи набранных символов в запрос в то время как фокус находится на не редактируемой сетке.
Если мне не изменяет память такое есть в DbGridEh из библиотеки EhLib. Может ее попробуешь?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.01.2011, 21:29   #6
Aleks_www
Пользователь
 
Регистрация: 26.08.2010
Сообщений: 39
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Если мне не изменяет память такое есть в DbGridEh из библиотеки EhLib. Может ее попробуешь?
У меня как раз EhLib. Там очень много всего хорошего но как в запрос вводимые символы передавать что то я не смог пока придумать.
Aleks_www вне форума Ответить с цитированием
Старый 20.01.2011, 21:30   #7
Aleks_www
Пользователь
 
Регистрация: 26.08.2010
Сообщений: 39
По умолчанию

Цитата:
Сообщение от vovk Посмотреть сообщение
а версия дельфи какая?
2010 Professional
Aleks_www вне форума Ответить с цитированием
Старый 20.01.2011, 22:01   #8
Surgeon
Форумчанин
 
Регистрация: 04.10.2007
Сообщений: 106
По умолчанию

Есть такой вариант:
ловим клик по сетке - определяем активный столбец
определяем его размеры и позицию
динамически создаем edit над первой строкой сетки
прицепляем процедуру к этому edit'у на нажатие ентера (подтверждение ввода)
на основе полученных данных (текст в едите) делаем запрос/заполняем параметры запроса

я сделал по другому:
над сеткой поставил панель со скроллом (т.к. при горизнтальном скроле сетки сбиваются координаты столбцов)
там динамически генерились то ли едиты, то ли лукапбоксы для каждого поля и чекбоксы (для вкл/выкл фильтрации по данному полю)
потом циклом обходились все элементы, проверялось что включено, какое значение задано, определялся тип поля ( подстановочное/вычисляемое/с данными) - генерился запрос
Все не так плохо, как вам кажется, на самом деле все гораздо хуже.
http://delphiworld.narod.ru/dw.html - 5000 статей!!! удобный поиск, оффлайн сборник, рекомендую всем
Surgeon вне форума Ответить с цитированием
Старый 20.01.2011, 22:25   #9
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

в DbgridEh всё фильтрация и поля дляфильтров, и сортировка по моему уже есть, просто почитайте хелп по компонентам Ehlib.
vovk вне форума Ответить с цитированием
Старый 21.01.2011, 08:34   #10
Aleks_www
Пользователь
 
Регистрация: 26.08.2010
Сообщений: 39
По умолчанию

Цитата:
Сообщение от vovk Посмотреть сообщение
в DbgridEh всё фильтрация и поля дляфильтров, и сортировка по моему уже есть, просто почитайте хелп по компонентам Ehlib.
Сортировка в DBGridEh по щелчку на заголовке столбца есть. Очень удобно что она быстро реализовывается и даже можно если не требуется особых вариантов сортировки запрос не писать. Про фильтрацию посмотрел в хелпе, она релизована как combobox под заголовком столбца, когда STFilter.Visible находится в True. Такой вариант подходит когда необходимо выбрать из предложенных критериев фильтрации но мне надо чтобы я мог искать в таблице.
Aleks_www вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Алгоритм поиска текста Рабина на Delphi 7 выходит ошибка Des Общие вопросы Delphi 14 15.05.2012 11:14
Интерфейс поиска и замены текста в richTextBox delias Общие вопросы .NET 4 29.10.2010 18:36
Макрос поиска текста на листе Movled Microsoft Office Excel 11 29.07.2010 11:59
Как сделать чтобы во время поиска по таблице не было видно перемещения по dbgrid? alxsev БД в Delphi 4 10.04.2009 19:03
программа поиска и замены+копирования текста 666dvg999 Общие вопросы C/C++ 4 05.10.2008 20:01