Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / cxGrid + FetchAll + GridMode / 25 сообщений из 74, страница 1 из 3
13.05.2011, 17:37
    #37259809
AlexSmith
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cxGrid + FetchAll + GridMode
Есть табличка, которая содержит в себе 5млн. записей.
БД: MSSQL 2005

Cтавим на форму cxgrid1, создаем cxgrid1DBTableView, привязываем к нему DataSource.
К DataSource привязываем Query.

Делаем чтобы отображалось в cxGrid по 100 записей, cледующим образом:

Код: plaintext
1.
2.
3.
4.
5.
cxGrid1DBTableView1.DataController.DataModeController.GridMode := True;
cxGrid1DBTableView1.DataController.DataModeController.GridModeBufferCount :=  100 ;

MSQuery1.FetchAll := False;
MSQuery1.FetchRows :=  100 ;

Приложение запускаем, отображается 100 записей, как только делаешь

Код: plaintext
1.
MSQuery1.Close;

то понимаем,что Query пытается зафетчить все записи, которые только есть в ДатаСете и только после этого закрывается. (На это у него уходит порядка 1 минуты ).

Делал Free у Query, тоже самое, впадает в минутный ступор.

Как сделать так, чтобы при частичном просмотре, Close у процедуры отрабатывал моментально, а недогружал все данные, которые не отобразил?
...
Рейтинг: 0 / 0
14.05.2011, 08:14
    #37260394
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cxGrid + FetchAll + GridMode
AlexSmithКак сделать так, чтобы при частичном просмотре, Close у процедуры отрабатывал моментально, а недогружал все данные, которые не отобразил?пользоваться нормальным методом отбора данных -
Код: plaintext
1.
2.
select <fields>
  from <tables>
 where <conditions>
...
Рейтинг: 0 / 0
14.05.2011, 09:59
    #37260430
Ramin Hashimzade
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cxGrid + FetchAll + GridMode
че то не верится , у меня в таблице 9214722 записей все нормально.... но правда у меня оракле с ODAC , но и с МССГЛ тоже самое должен быть!!

покажы код.....
...
Рейтинг: 0 / 0
14.05.2011, 10:46
    #37260460
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cxGrid + FetchAll + GridMode
Ramin,

а ты where в запросе пишешь?
...
Рейтинг: 0 / 0
14.05.2011, 11:18
    #37260484
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cxGrid + FetchAll + GridMode
А зачем where, если человеку нужно отображать все записи порциями?

Возможно в момент закрытия у Вас выполняется какой-то код, про который вы забыли? А попробуйте отвязать грид от набора данных и переоткрыть запрос. Может это грид глючит?
...
Рейтинг: 0 / 0
14.05.2011, 14:58
    #37260667
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cxGrid + FetchAll + GridMode
X11А зачем where, если человеку нужно отображать все записи порциями?

Возможно в момент закрытия у Вас выполняется какой-то код, про который вы забыли? А попробуйте отвязать грид от набора данных и переоткрыть запрос. Может это грид глючит?просматривать 5 миллионов записей даже порциями, без фильтра и сортировки - бред сивой кобылы
...
Рейтинг: 0 / 0
14.05.2011, 18:31
    #37260800
iscrafm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cxGrid + FetchAll + GridMode
andreymxRamin,

а ты where в запросе пишешь?
интересно как это связано с вопросом ТС...
...
Рейтинг: 0 / 0
14.05.2011, 18:32
    #37260802
iscrafm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cxGrid + FetchAll + GridMode
andreymxX11А зачем where, если человеку нужно отображать все записи порциями?

Возможно в момент закрытия у Вас выполняется какой-то код, про который вы забыли? А попробуйте отвязать грид от набора данных и переоткрыть запрос. Может это грид глючит?просматривать 5 миллионов записей даже порциями, без фильтра и сортировки - бред сивой кобылы
...
Рейтинг: 0 / 0
16.05.2011, 12:28
    #37262406
схGrid
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cxGrid + FetchAll + GridMode
Q: TpFIBDataSet;
FetchAll - стоит False.

Код: plaintext
1.
2.
3.
 GridViewData.DataController.DataModeController.GridModeBufferCount :=  100 ;
 GridViewData.DataController.DataModeController.GridMode := true;
 Q.Open;

Смотрю SQL монитор тянутся все записи. Как сделать ограничение на 100 записей?
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
30.08.2018, 17:26
    #39695736
Леонов Юрий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cxGrid + FetchAll + GridMode
Если тема еще не закрыта, то хотелось бы оживить, поскольку проблема та же, только решения найти не удалось.

Есть компонент TOraQuery (ODAC), у которого FetchAll=False и FetchRows=300,
есть cxGrid, у cxGridDBTableView которого свойства GridMode=True и GridModeBufferCount=300.
В самом TOraQuery простой запрос по таблице, результатом выборки есть набор из 6 миллионов записей (к примеру).
При этих всех настройках набор открывается минут 5, хотя должен влет показать первые 300 записей.
Аналогично было реализовано на DOA-шных компонентах, все работало четко.

Студия 10.1 Berlin, ODAC версии 10.1.5, DevExpress версия 16.1.2
...
Рейтинг: 0 / 0
30.08.2018, 17:30
    #39695739
JayDi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cxGrid + FetchAll + GridMode
Леонов Юрий,

Можно проверить, чтобы в коде при открытии не было команды на переход к последней записи датасета (да и вообще стоит обратить внимание на любые манипуляции с датасетом, гридом, сортировками и т.п.).
...
Рейтинг: 0 / 0
31.08.2018, 08:03
    #39695935
Леонов Юрий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cxGrid + FetchAll + GridMode
JaDi,

Выполняется только <DataSet>.Open и он ждет пока не отфетчатся все записи. Только после этого начинает работать грид.
На самом датасете нет никаких дополнительных обработчиков событий.
...
Рейтинг: 0 / 0
31.08.2018, 09:51
    #39695985
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cxGrid + FetchAll + GridMode
Проверь открытие НД без привязки к сетке.
...
Рейтинг: 0 / 0
31.08.2018, 10:32
    #39696014
Леонов Юрий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cxGrid + FetchAll + GridMode
X11,

тоже самое. Никакой разницы((
...
Рейтинг: 0 / 0
31.08.2018, 10:35
    #39696016
zinpub
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cxGrid + FetchAll + GridMode
OraSession.DisconnectedMode не True случайно ?
...
Рейтинг: 0 / 0
31.08.2018, 10:52
    #39696023
Леонов Юрий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cxGrid + FetchAll + GridMode
zinpub,

нет, дефолтное значение стоит
...
Рейтинг: 0 / 0
31.08.2018, 11:06
    #39696047
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cxGrid + FetchAll + GridMode
Леонов ЮрийX11,

тоже самое. Никакой разницы((

Т.е. проблема не в сетке :)

Проверить и убедится, что к НД TOraQuery более ничего не подключено.
Можно даже новый кинуть на форму и проверить время открытия прямо в дизайне.
...
Рейтинг: 0 / 0
31.08.2018, 11:22
    #39696062
defecator
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cxGrid + FetchAll + GridMode
похоже, что OraQuery выполняет запрос полностью,
а потом будет всего лишь фетчить из курсора число записей, равное указанному размеру буфера
...
Рейтинг: 0 / 0
31.08.2018, 11:36
    #39696079
Леонов Юрий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cxGrid + FetchAll + GridMode
X11,

пробовал по разному. Для чистоты эксперимента создал новый проект, на форме только кнопка.
Жмакаем её, пытаемся выполнить запрос (сессия уже авторизирована). Результат отличается на доли секунд,
средний запрос на 400 тысяч записей выполняется около 10 секунд. Миллионники висят несколько минут.
...
Рейтинг: 0 / 0
31.08.2018, 11:37
    #39696081
Леонов Юрий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cxGrid + FetchAll + GridMode
defecatorпохоже, что OraQuery выполняет запрос полностью,
а потом будет всего лишь фетчить из курсора число записей, равное указанному размеру буфера

Так а я о чём... Почему он выполняет полностью, если FetchAll отключен?
...
Рейтинг: 0 / 0
31.08.2018, 11:43
    #39696088
AJi
AJi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cxGrid + FetchAll + GridMode
Леонов Юрий,
Зачем на клиенте такое количество записей?
Я понимаю, что это не относится к вашему вопросу, но все же...
...
Рейтинг: 0 / 0
31.08.2018, 11:46
    #39696094
JayDi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cxGrid + FetchAll + GridMode
Леонов Юрий,

потому что в самом оракловском запросе есть сортировка, которая должна выполнится до конца перед возвратом результата на клиент? Можно эту процедуру выполнить в каком-нибудь pl/sql developer'е и посмотреть, насколько быстро появляются первые результаты.
...
Рейтинг: 0 / 0
31.08.2018, 11:50
    #39696097
Леонов Юрий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cxGrid + FetchAll + GridMode
AJiЛеонов Юрий,
Зачем на клиенте такое количество записей?
Я понимаю, что это не относится к вашему вопросу, но все же...

Вот нужно)) Я сам не понимаю зачем, но нужно... Ну мое дело их вытянуть частями, а там пусть юзверь что хочет, то и делает с ними
...
Рейтинг: 0 / 0
31.08.2018, 11:53
    #39696101
AJi
AJi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cxGrid + FetchAll + GridMode
Леонов Юрий,

А вы не пробовали использовать другой Dataset? Может быть действительно дело в OraQuery, как уже писали выше? Попробуйте на каком-нибудь FireDac.
...
Рейтинг: 0 / 0
31.08.2018, 11:55
    #39696104
defecator
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cxGrid + FetchAll + GridMode
JaDiЛеонов Юрий,

потому что в самом оракловском запросе есть сортировка, которая должна выполнится до конца перед возвратом результата на клиент? Можно эту процедуру выполнить в каком-нибудь pl/sql developer'е и посмотреть, насколько быстро появляются первые результаты.
PL/SQL Developer использует компоненты DOA, а ТС утверждает, что они работают правильно
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / cxGrid + FetchAll + GridMode / 25 сообщений из 74, страница 1 из 3
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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