У меня есть отчет SQL Reporting Services 2005, который включает таблицу на первой странице. У меня достаточно места на первой странице, чтобы показать первые 5 предметов из списка. Если есть более 5 элементов, я хочу, чтобы список продолжался до другой таблицы на второй странице отчета.
Я также хочу, чтобы в таблицах было фиксированное количество строк. Например, таблица на первой странице всегда показывает 5 строк, даже если в списке нет элементов. Это позволяет границе все еще быть видимой, чтобы макет страницы не перепутался.
Любые мысли о том, как лучше всего это сделать?
Я думаю, что это лучше всего сделать в Query/Stored Proc, который возвращает данные, а не в SSRS.
Вы можете сделать что-то вроде этого
SELECT TOP 5 FROM
(
SELECT Top 5 *
FROM DummyOrBlankDataFillerView
UNION
SELECT TOP 5 *, Row_Number() over (order by YourColumns) as OrderByClause
FROM ActualQueryThatBringsBackRecords
)
ORDER BY OrderByClause
OrderByClause упорядочивается вашими столбцами и будет иметь (1,2,3,4,5) и DummyOrBlankDataFillerView
должен иметь возвращаемый столбец, который имеет значения в том же столбце, что и (6, 7, 8, 9, 10).
Затем между order by
и `top 5 'вы должны иметь то, что вам нужно отобразить.
Я не думаю, что есть простой способ сделать это. AFAIK, SSRS вам не помогут. Вы можете изменить логику запроса так, чтобы она выгружала набор результатов с количеством строк 'dummy', если фактическое количество возвращенных строк равно < 5. Однако это кажется беспорядочным решением.
Вам нужно объединить несколько пустых данных, если их нет.
Добавьте вычисленную строку в набор данных, называемый rowcount, например
=rownumber("datasetname")
Затем отфильтруйте первую таблицу для rowcount < 6
Вероятно, не совсем тот ответ, который вы ищете, но вы можете ограничить запрос или источник данных, первая таблица привязана к 5 элементам или тому подобное. Затем вторая таблица будет привязана к запросу или источнику данных только с остальными элементами.
Я не думаю, что в отчете есть способ сделать это с помощью свойства или чего-то подобного.