Как указать параметры для SP и отчета? - PullRequest
0 голосов
/ 11 августа 2010

Я думаю, что у меня есть фундаментальное недоразумение, касающееся отчета служб отчетов SQL Server, который я пытаюсь запустить локально в приложении WinForms (в конечном итоге это будет в приложении WPF, но это позже),Я не пишу много отчетов, и когда бы то ни было в прошлом, я использовал Crystal Reports.Но мы пытаемся уйти от Crystal.

В любом случае, в отчете, с которым я работаю, используется хранимая процедура в SQL Server.Этот SP принимает 2 параметра.Я также хочу передать некоторые параметры в сам отчет, такие как заголовок и т. Д. Прошло много времени с тех пор, как я делал это с Crystal, но мне кажется, что я настроил параметры для отчета Crystal., чтобы принять параметры как для SP, так и для отчета, а затем в конструкторе Crystal назначить, какой параметр идет куда.Итак, я попытался сделать то же самое с моим новым отчетом .RDLC, но это не работает.Когда отчет отображается в элементе управления ReportViewer в форме, он говорит:

«В параметре« ClientNumber »отсутствует значение.»

ClientNumber является одним из параметров SP.И этот адаптер таблицы, кажется, поставляет его в методе Fill.Итак, я ошибаюсь, как это работает.Итак, как мне присвоить значения параметрам отчета?

1 Ответ

1 голос
/ 16 августа 2010

в отчетах rdlc вы должны запускать sp с помощью поставщика данных, такого как SqlCommand, затем вы должны создать именованный набор данных, после чего вы можете заполнить набор данных возвращенными данными SqlCommand.см. ниже:

private void PrintBankReport(ReportDataSource rds)
{
    rds.Name = Constants.Accounting.ClientReportDataSourceName.BankReportDS1;
    rds.Value = ((BankReportDataSet)Session[Faraconesh.Portal.Common.Constants.Accounting.Session.BankReport]).ReportDetail;
    ReportViewerControl.LocalReport.DataSources.Add(rds);
    ReportDataSource rds2 = new ReportDataSource();
    rds2.Name = Constants.Accounting.ClientReportDataSourceName.BankReportDS2;
    rds2.Value = ((BankReportDataSet)Session[Faraconesh.Portal.Common.Constants.Accounting.Session.BankReport]).ReportItem;
    ReportViewerControl.LocalReport.DataSources.Add(rds2);
}

но в отчетах rdl (отчет сервера) вы можете передать sp в отчет в качестве источника данных, и в отчете можно автоматически указать параметры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...