nina4ever Ответов: 1

Как передать параметр в отчет RDLC с динамически созданным набором данных в качестве источника данных


В моем приложении Windows Forms я хочу создать отчет. я создал файл .rdlc и назначил ему "фиктивный" набор данных в качестве источника данных только для того, чтобы получить схему, как описано здесь :

http://blogs.msdn.com/b/sqlforum/archive/2011/04/28/sql-reporting-services-ssrs-bind-dynamic-dataset-to-your-local-report-with-reportviewer.aspx[^]

я хочу динамически изменять источник данных моего отчета в коде. я нашел много примеров, таких как следующие:


private DataTable getData()
{
    DataSet dss = new DataSet();
    string sql = "";
    sql = "SELECT ID, CLIENT_ID, AGENT_ID FROM TBLMAILDELETED";
    OdbcDataAdapter da = new OdbcDataAdapter(sql, conn);
    da.Fill(dss);
    DataTable dt = dss.Tables[0];
    return dt;
}

private void runRptViewer()
{
    this.ReportViewer1.Reset();
    this.ReportViewer1.LocalReport.ReportPath = Server.MapPath("Report.rdlc");
    ReportDataSource rds = new ReportDataSource("dsNewDataSet_Table", getData());
    this.ReportViewer1.LocalReport.DataSources.Clear();
    this.ReportViewer1.LocalReport.DataSources.Add(rds);
    this.ReportViewer1.DataBind();
    this.ReportViewer1.LocalReport.Refresh();
}



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

1 - Должен ли я добавить его в код в качестве параметра в моем DataAdapter, и тогда мой запрос будет иметь предложение where, которое использует этот параметр для фильтрации результатов ?
2 - должен ли я создать ReportParameter и добавить его в свой файл .rdlc? если да, то как это изменит код? и как это должно повлиять на мой запрос DataAdapter?

заранее спасибо

1 Ответов

Рейтинг:
2

Member 13727912

U должны использовать .параметры rdlc, чтобы отфильтровать данные из набора данных


используя setparameters для добавления параметров в отчет, например

ReportViewer ReportViewer1 = GetReportViewer();
ReportParameter[] parameters = новый ReportParameter[1];
параметры[0] = новый параметр отчета("поиск", имя);
ReportViewer1.LocalReport.SetParameters(параметры);

таким образом, вы можете фильтровать данные из набора данных.
экс:
в текстовое поле я ввожу данные и это значение можно взять и передать в качестве параметра а в фильтре написать как :
значение оператора выражения
=Поля!имя пользователя.Значение типа ="*" & параметры!Поиск.Стоимость усилителя; "*"