powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / отображение (постраничное)
4 сообщений из 4, страница 1 из 1
отображение (постраничное)
    #32016890
dbRat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дамы, Господа, здрасте...

Поделитесь, пожалуйста, мыслями.
Нужно организовать постраничное отображение данных, типа сначала 1-100 записи, потом 101-200 и т.д. Все, что здесь обсуждалось по поводу нумерации строк запроса я прочел Как-то не очень хочется всю таблицу копировать в # только для того, чтобы пронумеровать записи. Вариант с отдельным полем для номера не подходит, так как заранее не известно, какой вариант сортировки предпочтет клиент... Может кто-то эту проблему принципиально иначе решал?

спасибо.
...
Рейтинг: 0 / 0
отображение (постраничное)
    #32016892
Фотография Garya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скрипт не тестировал, набираю на ходу, поэтому могу ошибиться. Но это не главное - главное идея. Размер порции записей = 100 записей. В таблице SomeTable есть ключевое поле типа int - идентификатор записи ID. Записи могут идти с дырками в нумерации. Требуется выбрать 5-ю порцию записей.
declare @PageNumber int
declare @StartRec int
set @PageNumber=5 -- Нужно выбрать 5-ю порцию
set @LastRec=0 -- Идентификатор последней записи предыдущей порции записей
while @PageNumber>1
begin
set @PageNumber=@PageNumber-1
set @LastRec=(select max(ID) from (select top 100 ID from SomeTable where ID>@LastRec order by ID) SubQ)
end
/* Теперь в @LastRec находится идентификатор записи, предшествующий первой записи порции, которая должна быть выведена на клиент.
Возвращаем порцию: */
select top 100 * from SomeTable where ID>@LastRec order by ID

Отсортировать по нужным полям ADODB.Recordset можно и на клиенте (кстати, работает гораздо быстрее, нежели при каждом щелчке по заголовку поля посылать новый запрос на сервер).
...
Рейтинг: 0 / 0
отображение (постраничное)
    #32016896
olegusan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Эта проблема красиво решается через такие свойства рекордсета, как PageSize и AbsolutePage.

Когда все заработает, поиграйтесь со значением свойства CursorLocation.
Посмотрите, где будет лучше производительность курсора, на сервере или на клиенте.
...
Рейтинг: 0 / 0
отображение (постраничное)
    #32016980
dbRat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Огромное спасибо ответившим!

Идея Garya отличная, но все же остается непонятка с сортировкой (мне нужно не отсортировать страницу, а выбрать страницу из отсортированного множества). А с сортировкой самой страницы нет никаких проблем. Использование особых фич рекордсета не приветствуется в данном проекте, поэтому это отпадает.


Еще раз всем большое спасибо
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / отображение (постраничное)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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