Передача параметров в подотчеты в RDLC в VS 2010 - PullRequest
2 голосов
/ 26 октября 2010

В настоящее время я работаю над сайтом отчетности в VS 2010, используя ASP.Net 4.0 и дизайнер RDLC 2010 года. Отчет, который я создаю, похож на отчет Master-detail, но я пытаюсь сделать это с помощью вложенных таблиц.

Моя проблема в том, что я пытаюсь передать значение поля из основного отчета в дополнительный отчет. Настройка таблицы выглядит примерно так:

2 таблицы

Первая таблица: [RecordID, Name, Date,] Вторая таблица: [RecordID, Description, DueDate]

Я хочу сделать такую ​​таблицу:

-------------------
|  Name  |  Date  |
------------------------------------
   |  Description1 |  DueDate      |
------------------------------------
   |  Description2 |  DueDate      |
------------------------------------
| Name2 | Date2 |
-----------------

С записями для Описание и DueDate bieng части подотчета.

Когда я пытаюсь передать RecordID в подотчет как параметр, который я должен вручную определить в XML подотчета, потому что я не могу найти где-нибудь в интерфейсе конструктора, который позволил бы мне добавить параметры отчета в Файлы RDLC, я получаю сообщение об ошибке из основного отчета, в котором говорится:

An error occurred during local report processing.
Value cannot be null. Parameter name: value 

Так что, похоже, происходит ошибка до того, как он достигнет точки загрузки подотчета.

Я получаю данные, отправленные в основной отчет, просто отлично, и если я удаляю параметр из подотчета, данные поступают. Но если я добавлю параметр, отчет выдаст ошибку.

У кого-нибудь есть идеи о том, что может быть причиной этого?

Ответы [ 3 ]

10 голосов
/ 01 декабря 2010

Я на самом деле в конечном итоге выяснить это.

Если вы используете Visual Studio 2010, вам нужно зайти в файл определения отчета и убедиться, что открыто окно Данные отчета .

Если вы не можете найти его, перейдите в «Просмотр» и нажмите «Данные отчета».

Открыв окно, щелкните правой кнопкой мыши папку Параметры и добавьте туда параметр.

В окне объявления параметров убедитесь, что вы выбрали Разрешить пустое значение и Разрешить пустое значение , если это текстовый тип. Это должно остановить эту ошибку.

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

1 голос
/ 06 января 2012

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

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

Public Sub SubreportProcessingEventHandler(ByVal sender As Object, ByVal e As SubreportProcessingEventArgs)
   'e.Parameters.Item(0) is the report parameter defined in Sub-report
    ObjectDataSource2.SelectParameters("Param1") = New Parameter("Param1", DbType.Int32, e.Parameters.Item(0).Values(0))         
     ObjectDataSource2.SelectParameters("Param2") = New Parameter("Param2", DbType.String, e.Parameters.Item(1).Values(0))
    e.DataSources.Add(New ReportDataSource("SubReportDataSourceName", ObjectDataSource2))
End Sub
0 голосов
/ 22 декабря 2011

Я только что натолкнулся на то же самое, конвертируя отчет из VS2005. Во всяком случае, еще одна вещь, которую я обнаружил, заключается в том, что параметр должен быть установлен в двух местах ...

Во-первых, в версии подотчета вы должны указать параметры, которые вы ожидаете получить, и соответствующий тип.

Кроме того, из ОСНОВНОГО отчета, если вы щелкнете правой кнопкой мыши на вложенном отчете свойства, появится раздел для «Параметры», который вы хотите передать В подчиненный отчет. Это будет основано на любой записи в основном отчете, которая будет управлять подотчетом.

Просто хотел передать это как разъяснение другим, которые могут столкнуться или просто учатся обращаться с подотчетами в VS2010.

...