Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как открыть TADODataSet не полностью? [D7, MSSQL]


chis ©   (2004-09-14 11:27:00) 

Используется MSSQL2000. Хочется чтобы таблица, или запрос открывались по мере необходимости, а не вся целиком. Как это можно сделать ?
Я пробовал поменять CursorLocation на clUseServer тогда выборка идет замечательно так как надо, но скроллинг у грида кривой.


Ega23   (2004-09-14 13:30:00) [1]

Блин, а ты о пользователе подумал? Каково ему смотреть выборку хотя бы из 1000 записей? Оптимальный набор - не более 100 за раз.
Введи лучше систему фильтрации, там по имени, фамилии, по подразделениям каким-нибудь, датам и т.п. В результате можно ограничить выборку вплоть до одной записи, что гораздо удобнее, чем 10000.


chis   (2004-09-14 13:07:00) [2]

Нет, слишком большие таблицы, к тому-же статистику можно как раз запросами сформировать - оно быстрее будет.


Sergey13   (2004-09-14 12:42:00) [3]

Я тебе в [12] писал про футер ЕхЛиба. Это не твоя та самая причина? Может ты сразу статистику по открываемой таблице кажешь.


chis   (2004-09-14 12:38:00) [4]

IBExpert, Enterprise Manager... короче все что позволяет программеру передвигаться (лазить) по базе данных. Кстати и там и там для просмотра таблиц используется необходимый мне механизм - первоначально открывается только то что может показать грид, а при перемещении скроллинга вниз открываются последующие записи и соответсвенно "преображается" скроллинг.


Sergey13   (2004-09-14 12:33:00) [5]

А, на sql.ru ты тоже отметился.
>У меня программа типа базолаза
Расшифруй этот термин плиз.


Sergey13   (2004-09-14 12:29:00) [6]

2[13] chis   (14.09.04 12:24)
Ты меня запутываешь все больше. Это специально? 8-)
>например переместившись в конец набора записей
Какого набора? Подозреваю того, про который я писал в [12].

>открывать нужно таблицы, процедуры, представления
связанные что-ли? Ну дык и открывай когда надо. На афтерскрол главного НД повесь например (пере)открытие подчиненного. Или я не въезжаю в проблему?


chis   (2004-09-14 12:24:00) [7]

Открывать все мне надо только при необходимости (например переместившись в конец набора записей), открывать нужно таблицы, процедуры, представления, так-что как понимаешь запрос не всегда можно сделать.


Sergey13   (2004-09-14 12:19:00) [8]

2[11] chis   (14.09.04 12:09)
>Sergey 13 - так что там от забора?
Обедал я. А что забор? 8-)
Я такие вопросы всегда решаю так. Стараюсь добиться, что бы запрос (который в грид) возвращал как можно меньше. Мой критерий 100-150 записей максимум. После этого меня уже не особо волнует "докачка". Кстати эту "докачку" некоторые движки обеспечивают "автоматом", просто про это надо помнить и уметь пользоваться. Например, если в ЕхЛиб-гриде поставить в футер нечто вроде суммы или каунта, то пофиг все настройки - с сервера заберется сразу все.
А насчет когда открывать - тут уж ты хозяин-барин - когда надо тогда и открывай.


chis   (2004-09-14 12:09:00) [9]

Sergey 13 - так что там от забора?


sniknik   (2004-09-14 11:55:00) [10]

> }|{yk ©   (14.09.04 11:47) [7]
это и есть серверный курсор, только PartialLoad задается количеством строк в гриде (вернее любой последней запрошеной, если сделать last то все выкачает) при нажатии на pagedawn.
подозреваю что и поведение скрола там будет аналогичным (точно не скажу, не пользуюсь).


chis   (2004-09-14 11:51:00) [11]

В качестве грида используется EhLib


chis   (2004-09-14 11:50:00) [12]

Может быть подскажете как можно организовать что-то похожее на просмотр таблиц в Enterprise Managere. Там как раз то-что нужно, скроллинг показывает состояние уже открытых записей.


}|{yk   (2004-09-14 11:47:00) [13]

Возьми dxDBGrid, там есть свойство PartialLoad. Фетчит только первые 20 записей, а потом по мере прокрутки


chis   (2004-09-14 11:45:00) [14]

"Сколько открывато" - не годиться, открывать по мере необходимости, чтобы в случай чаво и сортировать и фильтровать можно было (так-что select top тоже не годиться).
Меня удовлетворило бы открытие курсора на стороне сервера, если бы был приемлемый скроллинг на гриде, хотя-бы на момент уже открытых записей.


sniknik   (2004-09-14 11:41:00) [15]

> Я пробовал поменять CursorLocation на clUseServer тогда выборка идет замечательно так как надо, но скроллинг у грида кривой.
одно из двух либо выборка по необходимости (с неизвестным количеством записей и "кривым" скролингом), либо полная выборка с точным знанием количества и номеров в рекордсете и "прямой" скрол (который именно по этим данным и работает).
выбирай.

Ega23 ©   (14.09.04 11:34) [3]
это тоже "конечная" выборка без "дозабора" ;), тут тоже будет "кривой" скрол. (не в прямом смысле, а в том что он будет по ограниченному числу записей, а нужно по всем, и по скролу не узнать есть ли что там дальше)


Sergey13   (2004-09-14 11:36:00) [16]

2[2] chis   (14.09.04 11:33)
Просто в той цитате 2 разных, никак не связанных между собой, вопроса. Когда открывать или сколько открывать?


Ega23   (2004-09-14 11:34:00) [17]

Select top 100 * from Table1


chis   (2004-09-14 11:33:00) [18]

Время терпит, так что можно от забора :)


Sergey13   (2004-09-14 11:30:00) [19]

>Хочется чтобы таблица, или запрос открывались по мере необходимости, а не вся целиком.
Так тебе от забора или до вечера? 8-)


Наверх

Титульная страница Поиск, карта сайта Написать письмо