Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / CursorLocation = clUseServer и clUseClient / 4 сообщений из 4, страница 1 из 1
13.10.2003, 12:11
    #32291082
ZrenBy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CursorLocation = clUseServer и clUseClient
Здравствуйте.
Кто-нибудь разбирался с реализацией в TADO...
CursorLocation = clUseServer и clUseClient ?

Что происходит.

Вариант 1.1

Код: plaintext
1.
2.
3.
4.
TADODataSet
  CacheSize      =  1 
  CursorLocation = clUseServer
  CursorType     = ctOpenForwardOnly
  LockType       = ltReadOnly


Выполняем
Код: plaintext
select top  100000  UID from table


ProgressBar шустренько бежит
В Profiler наблюдаем эту же строку

Вариант 1.2

Теперь меняем
Код: plaintext
CursorLocation = clUseClient


В Profiler наблюдаем эту же строку
ProgressBar шустренько начинает и по экспоненциальному закону
загибается. Минуты две ждал кончины, потом прикончил, чтоб не мучился.

А теперь попробует поработать напрямую с ADO`шным рекордсетом

Вариант 2.1

Код: plaintext
1.
2.
3.
4.
FRecordSet  := CreateComObject(CLASS_Recordset) as _Recordset
  FRecordSet.CacheSize      := 1 
  FRecordSet.CursorLocation := adUseServer
  FRecordSet.CursorType     := adOpenForwardOnly
  FRecordSet.LockType       := adLockReadOnly


Выполняем
Код: plaintext
select top  100000  UID from table


В Profiler наблюдаем то, что положено -
Код: plaintext
sp_cursoropen + sp_cursorfetch


Вариант 2.2

Теперь меняем
Код: plaintext
FRecordSet.CursorLocation := adUseClient


ProgressBar шустренько бежит
В Profiler наблюдаем эту же строку

Итак.
Уважаемый Cat2 уже высказывался о том, что компоненты TADO...
в любом случае используют clUseClient, независимо от того, что указано.
Т.е. вариант 1.1 эквивалентен варианту 2.2. С вариантом 2.1 тоже все
понятно. НО ЧТО тогда делает вариант 1.2 ??? А ???
...
Рейтинг: 0 / 0
13.10.2003, 12:43
    #32291142
Mik Prokoshin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CursorLocation = clUseServer и clUseClient
А с каким провайдером Вы имеете дело ?\r
MS OLE DB Provider for MS SQL совершенно корректно обрабатывает UseServer (на сервер шлются sp_cursoropen + sp_cursorfetch) и UseClient - с сервера забираются все записи запроса. Через обычные ADO компоненты. Delphi 7. Примеры можно увидеть здесь
...
Рейтинг: 0 / 0
13.10.2003, 13:39
    #32291210
ZrenBy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CursorLocation = clUseServer и clUseClient
>>А с каким провайдером Вы имеете дело ?
>>MS OLE DB Provider for MS SQL совершенно корректно обрабатывает UseServer

Тот же

>>(на сервер шлются sp_cursoropen + sp_cursorfetch) и UseClient - с сервера
>>забираются все записи запроса. Через обычные ADO компоненты. Delphi 7.


Хм. Использую обычные ADO компоненты. Delphi 6.

Может в этом дело (в шестерке) ?
sp_cursoropen + sp_cursorfetch так и не смог
получить. Поигрался еще с TADOConnection. У него тоже стоит clUseServer

>>Примеры можно увидеть здесь
Угу

Но все-таки меня больше интересует вариант 1.2. (чисто спортивный интерес)
...
Рейтинг: 0 / 0
13.10.2003, 15:40
    #32291420
Mik Prokoshin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CursorLocation = clUseServer и clUseClient
Из свежайшего - пример здесь. И попробуйте ctStatic или ctKeyset. Я просто с OpenForwardOnly не пробовал.
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / CursorLocation = clUseServer и clUseClient / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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