it-swarm.com.ru

Отчет SSRS не отображает данные

Я только что создал отчет SQL Server 2005 SSRS, и данные не отображаются на панели предварительного просмотра.

Набор данных корректно заполняется из хранимой процедуры параметром String. Я могу выполнить это в области данных. При запуске отчета на панели предварительного просмотра отображается правильное количество строк, но содержимое ячеек не содержит никаких данных.

Missing Data

Исходный набор данных основан на хранимой процедуре с переданным параметром String в SQL Server 2005, который возвращает содержимое временной таблицы. Затем набор данных сопоставляет поля с местными жителями. Я могу выполнить это правильно в представлении данных.

Хранимая процедура 

ALTER PROCEDURE spWebReportStage25BuildReview
    @BuildNumber as nvarchar(50)

Схема временной таблицы

CREATE TABLE #tmpModelZones
(
    BuildID bigint NOT NULL,
    BuildNo nvarchar(50) NOT NULL,
    ModelID int NOT NULL,
    ModelName nvarchar(50) NOT NULL,
    ZoneID int NOT NULL,
    ZoneName nvarchar(50) NOT NULL,
    SortOrder int NOT NULL,
    Created bit DEFAULT 0 NOT NULL,
    Closed bit DEFAULT 0 NOT NULL,
    PRIMARY KEY (BuildID, ZoneID)
)

Набор данных SSRS

enter image description here

Отображение набора данных SSRS

enter image description here

Параметр набора данных SSRS enter image description here

Выполнение набора данных с параметром

enter image description here

В отображаемой таблице нет дополнительной группировки, фильтров или агрегации. Это просто плоский стол

12
Phil Murray

При использовании временных таблиц SSRS не может получить метаданные. Таким образом, существует два способа сообщить SSRS имена столбцов:

  1. Добавить SET FMTONLY ON. Это позволит получить метаданные, но не будет отображать данные. 

  2. Перейдите на вкладку «ДАННЫЕ», щелкните «Общий» конструктор запросов и нажмите «Обновить поля». Появится диалоговое окно для указания значения параметра. Когда мы запускаем запрос в конструкторе запросов, SSRS получает схему и данные из хранимой процедуры. Теперь данные будут доступны на панели предварительного просмотра.

8
praveen

Никогда не видел этого раньше. Тем не менее, SSRS иногда может быть немного "выключен", поэтому вот список вещей, которые можно попробовать. Боюсь, что большинство из них типа «Вы пытались выключить и снова включить?».

  • Удалите .data файлы, связанные с отчетом.
  • Дублируйте/создайте резервную копию отчета и попробуйте добавить набор данных в новом простом табликсе, чтобы увидеть, показывает ли это данные.
  • Проверьте свойство hidden. Не забывайте, что (по какой-то глупой причине) это не (как и в любом другом вменяемом продукте) поле Visible Y/N, а поле Hidden Y/N.
  • Дважды проверьте цвет и размер шрифта и т.д.
  • Запустите отчет на своем сервере отчетов (в отличие от предварительного просмотра), чтобы проверить, работает ли он.
  • Используйте некоторые временные текстовые поля, чтобы показать фактические значения ваших параметров, чтобы проверить, точно ли они совпадают с тем, когда вы запускаете тестовый набор данных.
  • Проверьте выделенный код (xml в rdl) на наличие непредвиденных фильтров, скрытых свойств, выражений и т.д. В таблице. Даже если вы не можете «прочитать» RDL, с подсветкой синтаксиса вы сможете просмотреть его и извлечь много информации об этом.
  • Проверьте ExecutionLog2 и другие элементы ведения журнала, чтобы увидеть, сколько строк возвращается в прогонах отчетов.

Кроме того, это поможет, если вы обновите/отредактируете свой вопрос с дополнительной информацией:

  • Какие группировки есть у табликса?
  • Каковы фильтры для табликса, групп строк и групп столбцов?
  • Какова общая структура набора данных и его результаты?
  • Как параметры структурированы и используются?
11
Jeroen

У меня тоже была похожая проблема. В моем случае это даже произошло без каких-либо параметров или чего-либо еще, просто самый простой отчет, который вы можете себе представить. Он включал таблицу с одним полем, фильтры не использовались. Мне удалось просмотреть некоторые данные, но были показаны только те линии, которые не помещались в ячейку и, таким образом, заставляли увеличиваться высоту строки. 

Мое исправление для этой проблемы: изменение шрифта или размера шрифта от стандартного (размер 10, пользовательский интерфейс Segoe). Затем все данные были показаны. Изменение этого обратно на Segoe UI заставило данные снова исчезнуть. 

3
Stijn

У меня был случай, когда рабочий отчет перестал отображать данные. Я добавил еще одну таблицу без форматирования, связанную с тем же набором данных, и проверил, что запрос больше не возвращает данные при передаче параметров через SSRS. После исследования я заметил, что мой тестовый параметр для значения «якорной даты» был отформатирован как YYYY-MM-DD, и в моем обновленном запросе я делал предположения о порядке символов в параметре даты (для усечения до YYYY). -ММ за одно присоединение).

Я подозревал, что SSRS может передавать дату в другом формате (ММ/ДД/ГГ - моя текущая культурная установка для значений по умолчанию). Работая с этой догадкой, я изменил свою логику SQL для работы с любым форматом даты. - например, осталось (преобразовать (дата, @anchorDate, 20), 7)

Это решило мою проблему - предположения о формате, которые я проверял (с жестко заданными значениями для проверки запроса во время разработки), были неверными. SSRS также может передавать данные в локальных форматах - поэтому обязательно следите за подобными предположениями.

2
Dan from Bellevue WA

У меня такая же проблема. Вот что я нашел. Вот мой код:

    DECLARE @tblPigProblems TABLE (
    Id          INT IDENTITY, 
    PPId            INT, 
    GaugeColor      VARCHAR(25), 
    FullStartTime       VARCHAR(25), 
    PigSystem         VARCHAR(25)
    )

    IF (1 = 0)
    BEGIN
        SELECT * FROM @tblPigProblems
    END

    ...

    SELECT '@tblPigProblems'    [PigProblems],  
    @p_vchLine      [Line],         
    GaugeColor      [Product],
    FullStartTime       [Start Time],
    PigSystem       [Pig System]
FROM @tblPigProblems

Я использовал исходное «SELECT * FROM @tblPigProblems», чтобы убедиться, что если в коде были указаны какие-либо сообщения об ошибках перед последним оператором выбора, возвращающим набор данных, то SSRS смог определить поля из хранимой процедуры. Затем, когда были определены результаты, я назначил псевдоним для полей. Проблема заключалась в том, что псевдонимы для полей не совпадали с объявленными именами полей (то есть: объявленное поле «GaugeColor» не совпадало с псевдонимом «[Product]», который я предоставил в select, чтобы создать набор результатов. Я понял, что когда я обновил поля в разделе «Данные» отчета SSRS, а затем отобразил поля набора данных, он перечислил имена полей из объявления таблицы (т. е. «GaugeColor»). Когда я выполнил хранимую процедуру в наборе данных (нажмите на!), в результирующем наборе, указанном в SSRS, отображались псевдонимы полей (т. е. «Продукт»). Поскольку они не совпадали, в текстовом поле, для которого я назначил поле, ничего не отображалось (т. е.: "= Поля ! ColorGauge.Value "). Служба SSRS не уловила это несоответствие и позволила создать отчет, но не отображать значения. Исправление было простым, замените:

    IF (1 = 0)
    BEGIN
        SELECT * FROM @tblPigProblems
    END

с:

    IF (1 = 0)
    BEGIN
        SELECT '@tblPigProblems'    [PigProblems],  
        @p_vchLine      [Line],         
        GaugeColor      [Product],
        FullStartTime   [Start Time],
        PigSystem       [Pig System]
    FROM @tblPigProblems
    END

Дэн

2
Dan Goodell