Форум: "Базы";
Текущий архив: 2003.09.29;
Скачать: [xml.tar.bz2];
Вниз
ADOQuery и Select Найти похожие ветки
← →
Max_ (2003-09-09 13:01) [0]Пишу Select, который возвращает 7000-12000 записей. ADOQuery со свойством CursorLocation=clUseClient пересылает сразу все записи на клиента, если CursorLocation=clUseServer- то Grid"a использовать невозможно! Можно ли реализовать что- то вроде BDE, что б пересылало несразу же, а только при нажатие Last, пакетами? Пытался применять CacheSize-не пашет! :(
← →
sniknik (2003-09-09 13:17) [1]> если CursorLocation=clUseServer- то Grid"a использовать невозможно!
возможно, + клиентдатасет.
> Можно ли реализовать что- то вроде BDE, что б пересылало несразу же, а только при нажатие Last, пакетами?
можно лутше, асинхронное получение пакета. (первые записи видно сразу, можно работать, до конца качается в фоне)
> Пытался применять CacheSize-не пашет! :(
ну ещебы, когда включаеш скорость еще не едеш это только часть процесса. (машинное)
← →
Max_ (2003-09-09 13:25) [2]клиентдатасет??? Этот дружище отпадает безоговорочно и по скорости Fetch"a, и по дрю причинам!
> ну ещебы, когда включаеш скорость еще не едеш это только
> часть процесса. (машинное)
ХОРОШО, А как включить зажигание?
← →
sniknik (2003-09-09 13:59) [3]> клиентдатасет??? Этот дружище отпадает безоговорочно и по скорости Fetch"a, и по дрю причинам!
ну надеюсь они важные эти "дрю причины", потому как Fetch это не причина вовсе.
> ХОРОШО, А как включить зажигание?
ADODataSet1.ExecuteOptions:= eoAsyncFetch;
← →
Max_ (2003-09-09 16:47) [4]ADODataSet1.ExecuteOptions:= [eoAsyncFetch];
ADODataSet1.CacheSize:=20;
всё равно Fetch"ит всё сразу!!!
← →
sniknik (2003-09-09 17:08) [5]не все, ты просто не успеваеш заметить.
поставь на Fetch прогрес у датасета.
procedure TForm1.ADODataSet1FetchProgress(DataSet: TCustomADODataSet;
Progress, MaxProgress: Integer; var EventStatus: TEventStatus);
begin
Label1.Caption:= IntToStr(MaxProgress);
end;
и возьми таблицу посолиднее, тысячь на 150 гдето, тогда увидиш. (12 у меня пролетает гдето за 0,35сек, за это время ничего нельзя успеть увидеть)
← →
Max_ (2003-09-10 14:02) [6]Хорошо, а как остановить Fetch в нужном месте, а потом продолжить?
← →
sniknik (2003-09-10 14:21) [7]а это извиняюсь, зачем? занять ресурсы сервера, сбить нормальную работу, и под эту фишку вчинить иск мелкософту?
или хочеш подгнать по тормозам к серверному курсору? ну так им и пользуйся, закачка но локаль по мере обращения (но ресурсы SQL server-а не занимаются).
не устраивает пиши в микрософт пусть свой софт под тебя подладят.
← →
Max_ (2003-09-10 14:43) [8]:) :) Ну это затем, что б когда человек запускал Select с результатом на 30000 записей или просто написал select * from my_table, с целью посмотреть что там за таблица и что в ней хранится, что б ему показало только 30 записей (про это и был мой первый вопрос), а потом он вправе делать всё что угодно: дальше слать данные или отказаться! Ведь не справедливо качать ему всё сразу, пока он довольный седит и изучает структуру таблицы! Я ж не могу просить, что для просмотра таблицы обязательно введите rownum<20! :)
> ну так им и пользуйся, закачка но локаль по мере обращения
>
А как им пользоваться и неуже ли нет метода, который останавливал бы Fetch?
← →
sniknik (2003-09-10 15:16) [9]> что б ему показало только 30 записей
SELECT TOP 30 * FROM Table
без всяких запарок.
хочеш дальше, новый запрос, 30 записей повтора никто не запетит.
> Ведь не справедливо качать ему всё сразу
жизнь вообще несправедливая штука. и почему бы не закачать пока он там херней страдает? комп простаивает! так будет гораздо быстрее.
> пока он довольный седит и изучает структуру таблицы!
структуру(?) можно получить и не открывая таблицу.
>> ну так им и пользуйся, закачка но локаль по мере обращения
> А как им пользоваться и неуже ли нет метода, который останавливал бы Fetch?
остановить это значит подвесить sql server на середине операции. думаеш это правильно? сделай cansel, вроде останавливает, (прием, сервер подозреваю все одно в пустоту все зальет, потому как не успеет заметить) но только это его остановит, т.е. чтобы продолжить придется начать заново.
а пользоватся просто, просто ставиш серверный курсор и докачка сама идет, по мере обращения к записям, но только не с операции на SQL сервере (она уже выполнилась) а с серверного курсора где твой рекордсет лежит и SQL сервер не занимает.
> 30 записей (про это и был мой первый вопрос),
трудно его было понять, там даже цифра 30 не фигурирует. ;)
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.09.29;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.015 c