Ошибка SSRS 2008 R2? Все еще? Динамическое скрытие столбца или табликса и экспорт в CSV

Первоначально я думал, что это будет простая задача, но после нескольких часов исследований я прочитал, что может быть ошибка SSRS при экспорте скрытых полей в CSV, которая не делает это возможным?

Что я хочу сделать:

У меня есть отчет с несколькими столбцами (скажем, 50). У меня есть раскрывающийся список параметров для REPORT_VERSION, который позволяет пользователю выбрать «Стандартный» (все 50 столбцов) или «Экспресс» (только 10 столбцов). Мне удалось правильно отобразить 2 версии, но когда я экспортирую (экспресс-версию) в CSV, он показывает все столбцы (и/или табликсы), а не то, как выглядят результаты.

Я читал и пробовал:

  1. Если я создам 2 табликса и скрою один на основе значения параметра, экспорт в CSV по-прежнему будет отображать как видимый, так и скрытый табликс.

  2. Если я использую =IIF(Globals!RenderFormat.Name="CSV", True, False) - это не работает для вывода CSV

  3. Изменение DataElementOutput = NoOutput. Это скрывает столбцы или таблицу из вывода CSV, но это нельзя изменить динамически на основе значения параметра.

Можно ли это сделать в разделе "пользовательский код" через vbscript??

Многие из статей и тем, которые я прочитал, относятся к 2010-2012 годам, так что, надеюсь, теперь есть решение? Я действительно меньше здесь.

Помощь будет принята с благодарностью. Спасибо


person Jay    schedule 14.07.2015    source источник
comment
Не могли бы вы добавить все столбцы в одну матрицу и установить скрытое свойство столбца.   -  person Ross Bush    schedule 14.07.2015
comment
Я пробовал это, и я могу выдать отчет, чтобы выдать правильные результаты на основе версии - проблема, которую я не могу понять, заключается в ЭКСПОРТИРОВАНИИ отчета в CSV. Когда я пытаюсь это сделать, он игнорирует скрытые столбцы и отображает все столбцы, что противоречит всей цели. Я также пробовал использовать 2 разных табликса и скрывать одну из таблиц. То же самое. Он работает с результатами отчета, однако, когда я иду на экспорт в CSV, он показывает оба табликса, даже тот, который скрыт в результатах. Спасибо!   -  person Jay    schedule 14.07.2015
comment
Просто мысль, но будет ли это работать, если вы установите выражение столбцов Express на что-то вроде --› =IIF(Globals!RenderFormat.Name=CSV, ,qryMain!Fields.MyField.Value)   -  person Ross Bush    schedule 15.07.2015
comment
Привет, lrb. Я попробовал то, что вы предложили (например, =IIF(Globals!RenderFormat.Name=CSV, ,Fields!FIELD_TO_HIDE.Value), но я получил ошибку. Скрытое выражение, используемое в табликсе, вернуло недопустимый тип данных. В этом case FIELD_TO_HIDE было обычным полем varchar. Не уверен, что правильно сделал то, что вы предлагали. Спасибо за ответ!   -  person Jay    schedule 15.07.2015


Ответы (1)


Я смог заставить это работать в SSRS 2008 и 2012 на основе вашей попытки № 2. Я создал фиктивный отчет с запросом источника данных

SELECT 'value1' as col1, 'value2' as col2

Затем я добавил следующее выражение в Column Visibility to column2

=IIF(Globals!RenderFormat.Name="CSV", False, True)

Обратите внимание, что true и false в вашем образце меняются местами. При создании отчета столбец 2 был скрыт, но при экспорте в CSV столбец 2 присутствовал.

Чтобы включить ваш параметр в выражение видимости, вы можете сделать что-то вроде этого

=Switch(
    Globals!RenderFormat.Name="CSV", False,
    Parameters!REPORT_VERSION.Value = "Standard", False, 
    True, True
)

Это установит для скрытого свойства столбца значение false, если оно отображается в формате CSV, или если для параметра «REPORT_VERSION» установлено значение «Стандартный», в противном случае столбец будет скрыт. Это выражение необходимо добавить в параметр «Видимость столбца» каждого столбца, который вы хотите скрыть в «Экспресс-версии» отчета.

ИЗМЕНИТЬ

Хорошо, теперь я понимаю проблему и могу воспроизвести ее (у меня была отсталая концепция). Вы можете явно установить видимость столбца как скрытый, и он не будет отображаться в экспорте CSV. Однако, когда вы пытаетесь управлять этим с помощью выражения, экспорт CSV игнорирует этот параметр.

Экспорт на основе данных должен контролироваться свойством DataElementOutput. Если установить для этого параметра значение «NoOutput», этот элемент будет подавлен из вывода CSV. К сожалению, не похоже, что им можно управлять с помощью выражения. Похоже, у Microsoft нет никаких планов по изменению этого(https://connect.microsoft.com/SQLServer/feedback/details/431073/ssrs-programmatically-controlling-the-dataelementoutput-property)

Запрос подключения Microsoft намекает на создание двух табликсов и фильтрацию всех результатов для каждого из них на основе предоставленного параметра (например, «Экспресс» или «Стандартный»), дополнительно скрывая другой табликс на основе значения параметра. Я попробовал это, и это сработало наполовину. Хотя в другом табликсе не было результатов, он все равно экспортировал заголовки столбцов и одну пустую строку.

Теперь мне было бы любопытно узнать, какое хорошее решение было бы для этой проблемы.

person Shayne Ephraim    schedule 14.07.2015
comment
Привет Шейн! Я очень ценю ваши отзывы об этом. Тем не менее, я смог отобразить в результатах отчета стандартную или экспресс-версию (правильное количество столбцов) - с чем я борюсь, так это при экспорте в CSV экспресс-версию (которая показывает только 10 столбцов в результатах ), экспортируется со всеми столбцами. Я хочу, когда я выбираю стандартное отображение всех 50 столбцов и экспортирую все 50 столбцов. Когда я выбираю экспресс-отображение 10 столбцов и экспортирую только эти 10 столбцов... проблема заключается в экспорте в CSV. Это имеет больше смысла? Заранее спасибо, помощь очень ценится - person Jay; 14.07.2015
comment
Джей, я пытался найти решение, но не смог. Я предоставил более подробную информацию об этом в редактировании моего ответа. - person Shayne Ephraim; 15.07.2015
comment
Большое спасибо за продолжение. К сожалению, это именно то, что я обнаружил изначально. Свойство DataElementOutput не может быть динамическим (выражение с условием), а выражение RenderFormat игнорирует CSV... поэтому сделать это невозможным? Кажется, было бы довольно стандартно иметь возможность возвращать разные столбцы одного и того же набора данных на основе параметра, что, я думаю, возможно, если это не CSV. Я сбит с толку Microsoft, и я не могу понять, почему. Я ценю вашу помощь, я хочу, чтобы был ответ - person Jay; 15.07.2015