Russian Qt Forum
Ноябрь 23, 2024, 15:40 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [Решено]Тормоза ODBC + данные с удаленного сервера  (Прочитано 2848 раз)
CMorgan
Гость
« : Октябрь 01, 2013, 14:10 »

Добрый день.
Есть удаленный сервак: MS SQL Server 2008
Мой клиент на QT 4.7.4, подключение к БД через ODBC

В процессе работы есть задача заполнить комбик значениями из справочника ( всего порядка 1200 значений) заполнение идет так:
Код:
void ComboQuery::setQuery( const QString &query )
{
    _combo->clear();
    _queryStr = query;
_maxLenght = 0;

    _combo->setStyleSheet( "background: yellow" );

    for( int i = 0; i < _emptyRows; ++i)
        _combo->addItem( "" );
    
if( _query.exec( _queryStr ) )
        while( _query.next() )
        {
            QString txt = _query.value( _showCol ).toString().trimmed();
            QFontMetrics fMetrics = _combo->fontMetrics();
            int width = fMetrics.width( txt );
            if( _maxLenght <  width )
                _maxLenght = width;
            _combo->addItem( txt );
        }
    else
        QMessageBox::critical( 0, tr( "Ошибка запроса к базе" ), tr( "Не удалось заполнить комбик" ) );
}

Трабла в том что на каждый _query.next() оно долбится за данными на удаленный сервак, что в результате выливается в 3х минутное ожидание заполнения комбика. Как бы заставить его получить результат select-а сразу целиком и раздербанить его уже на клиенте? ( Этот же запрос из под менеджмент студии выполняется за 1сек )
« Последнее редактирование: Октябрь 02, 2013, 17:02 от CMorgan » Записан
VPS
Гость
« Ответ #1 : Октябрь 01, 2013, 15:24 »

Попробуйте вот это.
Записан
CMorgan
Гость
« Ответ #2 : Октябрь 02, 2013, 17:03 »

Спасибо. Именно то, что нужно.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.049 секунд. Запросов: 21.