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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.03.2012, 07:09   #1
yaapelsinko
Пользователь
 
Регистрация: 15.01.2012
Сообщений: 67
По умолчанию Открытие в ADOQuery/DBGrid очень большого датасета

Открываю я view с сервера MSSQL, который отдаёт весьма большой набор данных (весь справочник ОКАТО). Когда я открываю его в ADOQuery (очень простой запрос, просто возвращающий всё как таблицу) в качестве списка подстановки в DBLookupComboBox - это занимает несколько секунд, что ещё более-менее, подстановка происходит, всё путём.

Затем, используя другой ADOQuery, с точно таким же простым запросом "селект всё фром вьюв", я открываю этот набор данных как справочник, выводя данные в DBGrid. И вот тут-то программа зависает. Ну, я так понимаю, не зависает на самом деле, а просто очень долго обдумывает.

Вопрос - что надо сделать, чтобы компоненты для работы с БД не сходили с ума от очень больших наборов данных?
yaapelsinko вне форума Ответить с цитированием
Старый 29.03.2012, 07:41   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
что надо сделать, чтобы компоненты для работы с БД не сходили с ума от очень больших наборов данных
Не загружать очень большие объемы данных. Думаете пользователю серьёзно нужен грид с десятками тысяч строк? Плюс запрос похоже из View, на формирование которого серверу тоже время нужно
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 29.03.2012, 08:01   #3
yaapelsinko
Пользователь
 
Регистрация: 15.01.2012
Сообщений: 67
По умолчанию

Формирование вьюва происходит за приемлемое время. И уж сколько он выдаст, столько выдаст.
Как-то можно контроллировать, сколько там компонент в себя загрузит данных? Есть же вон во всяких программах для работы с СУБД постраничный просмотр, или загрузка только части набора, и подгрузка по мере прокрутки.
yaapelsinko вне форума Ответить с цитированием
Старый 29.03.2012, 10:01   #4
rdama
Форумчанин
 
Аватар для rdama
 
Регистрация: 25.07.2009
Сообщений: 533
По умолчанию

Ну так флаг вам в руки грузите набор фрагментами. Что в инетах инфы мало?
Маразм крепчал. Еноты пели...
R-style Dataknowlege Access Member Account (RDAMA)
rdama вне форума Ответить с цитированием
Старый 29.03.2012, 10:12   #5
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Код:
dataset.DisableControls;
try
dataset.open;
finally
dataset.enablecontrols;
end;
программа — запись алгоритма на языке понятном транслятору
evg_m на форуме Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Загрузка ОЧЕНЬ большого текста Dima DDM Общие вопросы Delphi 16 12.08.2011 00:33
Импорт в эксел очень большого файла txt danika24 Microsoft Office Excel 10 20.07.2011 16:34
ADOQuery и несколько DBGrid Leiph БД в Delphi 3 02.07.2010 16:57
Открытие нужного документа из большого списка ruslaniljasevich Microsoft Office Word 2 17.06.2010 15:16
DBGRID + ADOQuery - сортировка Dux БД в Delphi 4 15.06.2009 13:45