Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Быстрый поиск в базах данных Builder6, "Алфавитный поиск" 
V
    Опции темы
mirra88
Дата 20.7.2011, 17:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 8.8.2010

Репутация: нет
Всего: нет



Кто-нибудь знает как в Builder6, в базах данных реализуется быстрый поиск (набираю "А" появляются все записи на эту букву, и т. д.)? Что-то я не нашла в Builder6 подобного элемента..
PM MAIL   Вверх
Данкинг
Дата 20.7.2011, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Думаю, кроме как выборкой запросом - никак.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
artsb
Дата 20.7.2011, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



Либо запросом. Либо выбрать всё и использовать фильтр.


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
kin
Дата 21.7.2011, 20:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 204
Регистрация: 9.5.2008

Репутация: 1
Всего: 6



Делаешь нужный индекс, в обработчике событий клавиатуры используешь методы Seek или Location объекта DataSet (за точность именования не ручаюсь (давно это было...), но суть, думаю, понятна)  по левому краю ключа...
PM MAIL   Вверх
XPyCT
Дата 26.7.2011, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 24.8.2007
Где: Moldova

Репутация: 10
Всего: 10



Когда то реализовал нечто подобное для MSSQL сервер 2005

Код

  void cSearch()
   {
          AnsiString textEdit;
      textEdit = Edit9->Text;

      AdoQueryBase->Close();
      AdoQueryBase->SQL->Clear();
      AdoQueryBase->SQL->Text = "Select *from dbo.tbl_base where Name like '%"+textEdit+"%' or AccountSerial like '%"+textEdit+"%' or Account like '"+textEdit+"%' ";
      AdoQueryBase->Open();
   }


на событие Едита  "Edit9" -  OnChange()  вызываете данную функцию  

Код

//---------------------------------------------------------------------------
void __fastcall TServerForm::Edit9Change(TObject *Sender)
{
cSearch();
}
//---------------------------------------------------------------------------

как то так 
PM MAIL Skype   Вверх
mirra88
Дата 28.7.2011, 19:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 8.8.2010

Репутация: нет
Всего: нет



Всем спасибо за помощь. Код XPyCTа мне помог, всё работает, но медленно. Я хотела проверить не будет ли быстрее метод фильтрации, но возникла вот такая проблема. Вот так вот работает:
Код

AnsiString textEdit = Edit1->Text;
 Form1->ADOQuery1->Filter="(Name1=' "+textEdit+" ')";

Но мне надо, чтобы вывелось не только то, что введено в текстовое поле, а всё, что начинается с введённого. Но вот так уже выводит пустую таблицу:
Код

AnsiString textEdit = Edit1->Text;
 Form1->ADOQuery1->Filter="(Name1=' "+textEdit+*+" ')";

С этой * у меня ни с какими сочетаниями кавычек не получается! Хотя теоретически я понимаю, что проблема должна решаться как-то просто. Помогите, пожалуйста 

Это сообщение отредактировал(а) mirra88 - 28.7.2011, 19:26
PM MAIL   Вверх
artsb
Дата 28.7.2011, 20:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



Код

Form1->ADOQuery1->Filter = "(Name1 LIKE '%"+ Edit1->Text + "%')";

% - аналог *. Значит любое количество любых символов.


Цитата(mirra88 @  28.7.2011,  19:17 Найти цитируемый пост)
но медленно. Я хотела проверить не будет ли быстрее метод фильтрации, но возникла вот такая проблема

Естественно, медленно. Каждый раз выполнять запрос это дорогого стоит. Поэтому я вам про фильтр сразу и сказал. Он работает мгновенно.

Добавлено @ 20:09
Кстати, забыл сказать вам нужно обязательно проверять содержимое Edit'а на наличие символа < ' >. Это служебный символ. Его нужно экранировать. Для этого нужно записать два символа подряд.

Это сообщение отредактировал(а) artsb - 28.7.2011, 20:09


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
mirra88
Дата 29.7.2011, 05:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 8.8.2010

Репутация: нет
Всего: нет



Большущее спасибо! С таким фильтром всё действительно работает быстро и без проблем!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0778 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.