Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.09.29;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.016 c
3-96133
P0tia
2003-09-08 16:06
2003.09.29
Excel


8-96310
dimushkin
2003-05-30 09:46
2003.09.29
Как правильно убить TBitmap ?


1-96252
Dysan
2003-09-17 15:34
2003.09.29
Halt(1)


3-96153
Юлия
2003-09-07 19:02
2003.09.29
Вопрос по comboBox


1-96269
Niobe
2003-09-17 11:06
2003.09.29
Про Hint