powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / ComboBox из таблицы
13 сообщений из 13, страница 1 из 1
ComboBox из таблицы
    #32933279
BigBob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть ComboBox, который я заполняю записями из таблицы. У таблицы всего два поля: Nik (текст, который виден в ComboBox-е) и Id (ключ, который используется для связи с другими таблицаими). Просытм select-ом открываю Recordset, бегу по нему и заполняю ComboBox двумя командами: AddString() и SetItemData(). Вроде жил и не тужил, всё замечательно работало, пока количество записей в таблице не подобралось к 2000. ComboBox заполняется секунд пять. Задержка очень злит пользователей. Подскажите, как побороть? Какие варианты кто использует? Пишу на VC 6.0, MFC. Заранее спасибо за любые советы, предложения и ссылки.
...
Рейтинг: 0 / 0
ComboBox из таблицы
    #32933657
Snow Man
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А выбор из 2000 не злит пользователей?
По моему нужно выбирать иерархически, например вместо Combo простое поле, кнопка "Выбор" по нажатии окно с двумя и более таблицами и каскадный выбор.
...
Рейтинг: 0 / 0
ComboBox из таблицы
    #32934052
BigBob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да это названия улиц. Какую там иерархию придумаешь?
...
Рейтинг: 0 / 0
ComboBox из таблицы
    #32934308
zuzu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BigBobДа это названия улиц. Какую там иерархию придумаешь?
по 1 букве
...
Рейтинг: 0 / 0
ComboBox из таблицы
    #32934506
BigBob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Типа на OnChange() повеситься и подгружать улицы, начинающиеся с нужной буквы?
...
Рейтинг: 0 / 0
ComboBox из таблицы
    #32934507
BigBob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Типа на OnChange() повеситься и подгружать улицы, начинающиеся с нужной буквы?
...
Рейтинг: 0 / 0
ComboBox из таблицы
    #32934537
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ладно уж, пожалею тебя.
Магическое заклинание называется CB_INITSTORAGE.
...
Рейтинг: 0 / 0
ComboBox из таблицы
    #32934564
BigBob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Обижаешь ;) Попробовал я конечно вызывать функцию InitStorage() перед тем как заполнять ComboBox. Выигрышь по скорости заполнения есть, но совсем копеечный ;(
...
Рейтинг: 0 / 0
ComboBox из таблицы
    #32934607
SnowMan2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На старте программы заглоти его в память. Теже 5 сек на старте не так ощутимы.
...
Рейтинг: 0 / 0
ComboBox из таблицы
    #32934806
BigBob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Основное время тратится именно на заполнение ComboBox-а. Тоесть recodset открывается практически мгновенно. 90% времени тратится именно на цикл:
Код: plaintext
1.
2.
3.
4.
5.
6.
while(!rs->IsEOF()) {
 rs->GetFieldValue( 0 , Id);
 rs->GetFieldValue( 1 , Str)
 Index = pCombo->AddString(Str);
 pCombo->SetDataItem(Index, Id);
 rs.MoveNextt
}
Поэтому заполнение ComboBox-а из памяти а не из recordset-а врядли поможет ;(
...
Рейтинг: 0 / 0
ComboBox из таблицы
    #32934933
SnowMan2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разбей этот цикл на два
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
n= 0 ;
while(!rs->IsEOF()) {
 rs->GetFieldValue( 0 , В массив);
 rs->GetFieldValue( 1 , В массив);
 rs.MoveNextt ???
 n++
}

for (i= 0 ; i < n; i++) {
 Index = pCombo->AddString(Из массива);
 pCombo->SetDataItem(Index, Из массива);
} 

И посмотри какой больше времени сжигает.
...
Рейтинг: 0 / 0
ComboBox из таблицы
    #32935982
Alex_VC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня была подобная прблема. Решил следующим образом (может и культяписто): имеется поле (Edit), в котором вводится некоторый контекст (ну, там, первые буквы, к примеру), далее нажимается "волшебная" кнопка (можно и клавишу какую-нибудь подключить) по которой выводится список значений, начинающихся с введенного контекста. Пользователь выбирает нужное значение из этого списка (список уже не такой большой). Список можно сделать тем же ComboBox'ом...
...
Рейтинг: 0 / 0
ComboBox из таблицы
    #32937221
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BigBobОбижаешь ;) Попробовал я конечно вызывать функцию InitStorage() перед тем как заполнять ComboBox. Выигрышь по скорости заполнения есть, но совсем копеечный ;(

Знаешь , там еще параметры всякие есть ... Значит так вот и вызывал.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / ComboBox из таблицы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]