|
|
|
Supreme 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 поле выбрать из этой таблицы только нужную страницу и отдать ее клиенту)
|
|
|
|
|
Forum 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
может быть получится.
|
|
|
|
|
Supreme 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
или еще один запрос, например, на изменение таблицы - все перестает работать, с какими бы параметрами не открывал рекордсет
|
|
|
|
|
Forum Guru
      
участник
Last Login: 21.04.2006 16:58
Сообщ.: 51,
Visits: 573
|
|
Извини, не могу проверить, так как друзья мне сервер уронили, а восстановить его полностью я не успел, в частности не восстановил SQL server.
Но есть идея.
Может все-таки сначала определить параметры рекордсета, а потом заполнить его, через command.execute а не вызывать все в одной строке.
|
|
|
|