C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Как в DBLookupCombobox быстро отображать записи?
creater
  Отправлено: 09.07.2004, 19:34


Станционный диспетчер

Группа: Участник
Сообщений: 120



Задача такая: есть записи в поле Name, необходимо с помощью DBLookupCombobox отображать допустим только всех Ивановых, т.е. Иванов Иван, Иванов Петр и т.д.

Использую компонент DBLookupComboboxEh1.
На событие OnDropDown вешаю следующее:

читаю из ini файла Иванова, затем делаю
IBTable1->Filter = "NAME like '%" + "Иванов" + "%'";
IBTable1->Refresh();

Проблема состоит в том, что при открытии списка с именами в DBLookupComboboxEh1, перед открытием списка наблюдается значительная пауза.

Как ускорить вывод записей в DBLookupComboboxEh1...?

Заранее большое спасибо!
AVC
Отправлено: 12.07.2004, 08:06


Ветеран

Группа: Модератор
Сообщений: 1583



Filter всегда работет медленне чем Select ... Where. Если база позволяет — напишите запрос параметром
Admin
Отправлено: 12.07.2004, 16:24


Владимир

Группа: Администратор
Сообщений: 1190



1/ Проиндексируйте таблицу по полю Name, если этого еще не сделали.

2/ Попробуйте вместо
IBTable1->Refresh();
поставить
IBTable1->Filtered = false;
IBTable1->Filtered = true;
возможно ускорится, а возможно и нет.
creater
Отправлено: 15.07.2004, 04:53


Станционный диспетчер

Группа: Участник
Сообщений: 120



Здравствуйте.
Попробовал использовать IBDataSet, но почему-то в списке у DBLookupComboboxEh1 ничего не отображается.

На событие OnDropDown вешаю следующее:
CODE

IBDataSet1->DisableControls();
IBDataSet1->Close();
IBDataSet1->ParamByName("IN_NAME")->AsString = user_org;
IBDataSet1->Open();
IBDataSet1->EnableControls();


У IBDataSet1 в свойстве SelectSQL, прописано,

select
NAME,
NIKNAME
from Table1
where
NAME LIKE :IN_NAME and
NIKNAME LIKE :IN_NIKNAME

У DBLookupComboboxEh1 в ListField стоит NIKNAME, в KeyField стоит NIKNAME.


Относительно предыдущих сообщений, поле NIKNAME проиндексировано.

Подскажите, что может быть не так?
olegenty
Отправлено: 15.07.2004, 14:57


Ветеран

Группа: Модератор
Сообщений: 2412



Тема закрылась (в результате переписки по почте). Сошлись на мнении, что автор топика, как он часто делает, приступил к реализации, не разобравшись до конца в мат. части предмета. Ныне всё корректно выпадает куда надо и откуда надо.
creater
Отправлено: 16.07.2004, 10:52


Станционный диспетчер

Группа: Участник
Сообщений: 120



QUOTE (olegenty @ 15/07/2004, 15:59)
Тема закрылась (в результате переписки по почте). Сошлись на мнении, что автор топика, как он часто делает, приступил к реализации, не разобравшись до конца в мат. части предмета. Ныне всё корректно выпадает куда надо и откуда надо.

;-)

Вернуться в Работа с базами данных в C++Builder