Обычно, когда отчет отображается, все данные извлекаются, а SSRS отображает отчет, который вызывает задержку. Если производительность здесь является ключом, вы можете использовать хранимую процедуру для извлечения 50 строк за раз, вместо того, чтобы передавать все значения непосредственно в SSRS - здесь вы не можете использовать собственные кнопки следующей/предыдущей страницы.
Обходной задачей является создание пользовательских ссылок для возврата к самому отчету с добавленными параметрами, указывающими начальную строку индекса.
Создайте хранимую процедуру, которая принимает в качестве параметра, который определяет начальную строку из таблицы:
CREATE PROCEDURE dbo.usp_GetData
@RowNumber BIGINT
AS
BEGIN
DECLARE @FirstRow BIGINT
DECLARE @LastRow BIGINT
SET @FirstRow = @RowNumber
SET @LastRow = @RowNumber + 50
;WITH CTE AS
(
SELECT *,
ROW_NUMBER() OVER (ORDER BY num) AS RowNumber
FROM dbo.TestTable
)
SELECT *
FROM CTE
WHERE RowNumber >= @FirstRow
AND RowNumber < @LastRow
END
GO
Создать хранимую процедуру, которая извлекает общее количество строк из таблицы:
CREATE PROCEDURE dbo.usp_GetTotalRows
AS
BEGIN
SELECT COUNT(*) "TotalRows"
FROM dbo.TestTable
END
GO
Создать отчета и добавьте два набора данных, используя две хранимые процедуры.
Параметр @RowNumber
должен автоматически сгенерироваться. Вы можете установить значение по умолчанию 1, чтобы начать отчет из строки 1.
Создайте две «пользовательские» кнопки в отчете (фактически просто ссылайтесь на один и тот же отчет). Вы можете использовать текстовые поля для кнопок «Предыдущая/следующая страница».
Для текстового поля «Предыдущая кнопка» - Свойства> Действие> Перейти к отчету> Укажите отчет (выберите название своего отчета). Добавьте параметр и установите выражение: =Parameters!RowNumber.Value-50
Для текстового поля «Следующая кнопка» - Свойства> Действие> Перейти к отчету> Укажите отчет (выберите имя своего имени отчета). Добавить параметр и установить выражение: =Parameters!RowNumber.Value+50
Вы также можете изменить параметры видимости для кнопок (например, кнопки «Предыдущая страница», когда Parameters!RowNumber.Value = 1
скрывается, или скрывает кнопку «Next Page», когда Parameters!RowNumber.Value + 50 >= DataSetName!TotalRows.Value
)
Если вы не читали [это] (https://technet.microsoft.com/en-us/library/bb522806 (v = sql.105) .aspx), это может помочь вам –