![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как открыть 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-)