Многостраничный вывод рекордсета (с хранимыми проц.)
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



Многостраничный вывод рекордсета (с хранимыми... Expand / Collapse
Автор
Сообщение
24.12.2000 19:12
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 27.11.2003 15:03
Сообщ.: 145, Visits: 1 640
Может сможете мне ответить на такой, простой с виду, вопрос (но на
который я так пока ответа и не нашел)
Как сделать на ASP многостраничный вывод рекордсета, если использовать
хранимые процедуры?

Поясню.

Дело в том, что если рекордсет открывается путем вызова не самой
тривиальной хранимой процедуры, например, содержащей такой код:

IF @param1 = 1
SELECT * FROM myTable
ELSE
SELECT * FROM myTable WHERE myField=@param1

то такие свойства рекордсета как .RecordCount .AbcolutePage
не работают. Как в этом случае организовать постраничный вывод (типичная для WEB задача)?

(я, в принципе, знаю одно решение, но мне кажется оно очень уж не красивым: создать временную таблицу - кинуть в нее рекордсет, отсортированным так как, тебе надо, а потом используя добавочное
IDENTITY поле выбрать из этой таблицы только нужную страницу и отдать ее клиенту)
Сообщ. #702593
24.12.2000 20:08
Forum Guru

Forum GuruForum GuruForum GuruForum GuruForum GuruForum GuruForum GuruForum Guru

участник
Last Login: 21.04.2006 16:58
Сообщ.: 51, Visits: 573
мне кажется, что рекордсет он всегда рекордсет, как его не формируй, и проблема в его параметрах.
Например, если он открывается с параметрами по умолчанию (ReadOnly, ForwardOnly)то RecordCount=-1. Ну и остальное тоже не очень хорошо.
Кстати, если ты создаешь рекордсет через Execute,
myrs=mycommand.execute то он создается именно с параметрами по умолчанию, если параметры не определены заранее.

Попробуй открыть так:

myrs.CursorType=1(открывать как KeySet)
myrs.PageSize=10
myrs.AbsolutePage=1
myrs=mycommand.execute

может быть получится.
Сообщ. #702595
24.12.2000 20:24
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 27.11.2003 15:03
Сообщ.: 145, Visits: 1 640
Я уже перепробовал, как мне кажется, все варианты открытия рекордсета - ничего не получается.

Элементарный пример:
TextSQL = "MySTORED"
Set RS=Server.CreateObject("ADODB.Recordset")
RS.Open cmdSQL, Conn, 1, 1

если в MySTORED процедуре написать код:
SELECT * FROM MyTable
все отлично работает

если же в MySTORED добавить, например IF, ELSE
или еще один запрос, например, на изменение таблицы - все перестает работать, с какими бы параметрами не открывал рекордсет
Сообщ. #702596
25.12.2000 17:16
Forum Guru

Forum GuruForum GuruForum GuruForum GuruForum GuruForum GuruForum GuruForum Guru

участник
Last Login: 21.04.2006 16:58
Сообщ.: 51, Visits: 573
Извини, не могу проверить, так как друзья мне сервер уронили, а восстановить его полностью я не успел, в частности не восстановил SQL server.

Но есть идея.

Может все-таки сначала определить параметры рекордсета, а потом заполнить его, через command.execute а не вызывать все в одной строке.
Сообщ. #702601
« пред. тема | след. тема »


Эту тему читают Expand / Collapse
Посетители: 0 (0 гостей, 0 участников, 0 скрыт.участников)
Сейчас нет участников, просматривающих тему.
Модераторы: Alexey, boombastik, bazile, pl, Alexey Spirin

Время GMT +3:00, Сейчас 1:30