Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Пробблема при открытии ADO рекордсета / 11 сообщений из 11, страница 1 из 1
24.03.2004, 18:20
    #32455576
Nektov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пробблема при открытии ADO рекордсета
Привет,
у меня такая проблема:
говорю
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
    Set rsDocument = New ADODB.Recordset
    With rsDocument
        .CursorType = adOpenDynamic
        .CursorLocation = adUseServer
        .LockType = adLockBatchOptimistic
        .Source =  "{Call spDocumentS}" 
        .ActiveConnection = Cnn
        .Open
    End With
    rsDocument.MoveLast


Когда запускаю, выдает мне ошибку:
Rowset does not support fetching backward
в какой настройке ошибки или чего я не сделал?
...
Рейтинг: 0 / 0
24.03.2004, 18:42
    #32455606
Processor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пробблема при открытии ADO рекордсета
Я чтой-то незнаком с таким форматом:
Код: plaintext
1.
        .Source =  "{Call spDocumentS}" 
Где об этом можно почитать?
...
Рейтинг: 0 / 0
24.03.2004, 18:43
    #32455610
Magnus23
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пробблема при открытии ADO рекордсета
При серверном курсоре нельзя использовать пакеное обновление. Используй клиентский или обновляй по однй записи.

http://support.microsoft.com/default.aspx?scid=kb;EN-US;188857

Magnus
...
Рейтинг: 0 / 0
24.03.2004, 19:15
    #32455668
Nektov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пробблема при открытии ADO рекордсета
Понял, спасибо.
Нужно было тип курсора перевести на клиентский.
А это не означает, что все данные будут переданы в клиентское приложение. И не уменьшит ли это производительности приложения?

по поводу
Код: plaintext
.source =  "{call DocumentS}" 

это строка ТSQL, в которой я говорю выполнить ХП SQLServer
...
Рейтинг: 0 / 0
24.03.2004, 19:22
    #32455675
Magnus23
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пробблема при открытии ADO рекордсета
А это не означает, что все данные будут переданы в клиентское приложение. И не уменьшит ли это производительности приложения?

К сожалению именно это и означает.
Все данные будут пересланы клиенту. Падение производительности незаметно на небольших обьемах данных. Хотя, это все завист также от сети, количества коннектов, мощности железа и еще тысячи факторов.

В принципе, если тебе просто нужно выполнить хранимку(а судя по твоим опасениям это так и есть), то рекордсет не нужен, ее можно запускать и через connection.Execute.



Magnus
...
Рейтинг: 0 / 0
24.03.2004, 19:28
    #32455684
Nektov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пробблема при открытии ADO рекордсета
Хранимая процедура как раз и возвращает Рекордсет, дело в том, что когда решил писать это приложение на VB, то зная его особенность в "неоптимальной" работе с данными, решил, что все операции будут делаться сервером. Это продиктовано тем, что база будет расти как минимум на 3000 записей в день в основной таблице, так что вопрос производительности является одним ключевых.
...
Рейтинг: 0 / 0
24.03.2004, 19:33
    #32455688
Nektov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пробблема при открытии ADO рекордсета
конечно на крайняк можно сделать, чтобы она периодически отправляла в архив записи, но так хотелось поменьше гемороя.
Кстати, есть статьи про Железо, колличество подключений а так же еще тысячи факторов и производительность?
...
Рейтинг: 0 / 0
24.03.2004, 19:50
    #32455710
Magnus23
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пробблема при открытии ADO рекордсета
Так ты хочешь выбрать даные но чтобы они при этом остались на сервере и можно было перемещаться по ним?
Тогда можно открыть курсор руками. В хранимке. Поработать с ним а потом закрыть.

Код: plaintext
Open MyCursor cursor for.....

см. BOL

При нормальной не загруженной сетке, передача 20000 записей будет не особо заметна(пару секунд задержки, в зависимости от.....).

На счет статей, не знаю, искать надо.

Magnus
...
Рейтинг: 0 / 0
24.03.2004, 20:16
    #32455734
Nektov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пробблема при открытии ADO рекордсета
а можно ли получить управление этип ХП-шным курсором через VB?
...
Рейтинг: 0 / 0
24.03.2004, 21:05
    #32455770
Magnus23
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пробблема при открытии ADO рекордсета
Конечно можно. Курсор собственно не ограничен процедурой. В ней ты его открыаваешь и он остается висеть на серваке(мы кстати говорим о сиквеле?).
Пока не сделаешь ему Deallocate.

И естественно фетчить из него записи ты можешь в любое время, просто выпоняя SQl запросы.

Код: plaintext
Fetch next from MyCursor...


Почитай в BOL о работе с курсорами. Но помни одну вещь - курсоры это одна из самых медленных вещей которые существуют в сиквел сервере. Так что тут как говорится, будем посмотреть.
Тоже зависит от многих вещей, например от типа курсора. Fast Forward довольно быстрый но также поддерживает перемещение только вперед.
Тебе же, как я понял нужен более свободный а значит более медленный курсор.
Также помни что, курсор висящий в памяти сиквела, нехило жрет ресурсы.

Magnus
...
Рейтинг: 0 / 0
24.03.2004, 22:17
    #32455823
Nektov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пробблема при открытии ADO рекордсета
Спасибо большое.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Пробблема при открытии ADO рекордсета / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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