0

ASP.NET Web フォーム アプリケーション内にローカル .rdlc レポートを作成しました。

ReportViewer コントロールを使用してレポートをロードしたいと考えています。データベースのストアド プロシージャを使用して Report DataSet のデータを取得しています。ストアド プロシージャには、テーブルから 1 つのデータ行を返すためのパラメーターが必要です。レポートがデータをロードできるように、プログラムでこのパラメーターをストアド プロシージャに渡すことができるようにしたいと考えています。

どうすればこれを達成できますか?

4

2 に答える 2

2

ASPX の reportViewer

<rsweb:ReportViewer ID="ReportViewer1" runat="server" SizeToReportContent="True">
</rsweb:ReportViewer>

データセットの取得方法

private DataTable GetSPResult()
{
    DataTable ResultsTable = new DataTable();

    SqlConnection conn = new SqlConnection(ConfigurationManager
      .ConnectionStrings["connectionString"].ConnectionString);

    try
    {
        SqlCommand cmd = new SqlCommand("yourStorePorcedure", conn);
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.AddWithValue("@id", 1);
        SqlDataAdapter adapter = new SqlDataAdapter(cmd);
        adapter.Fill(ResultsTable);
    }

    catch (Exception ex)
    {
        Response.Write(ex.ToString());
    }
    finally
    {
        if (conn != null)
        {
            conn.Close();
        }
    }

    return ResultsTable;
}

結果を reportviewer にバインドする

DataTable dt = GetSPResult();
ReportViewer1.Visible = true;
ReportViewer1.LocalReport.ReportPath = "Report1.rdlc";
ReportViewer1.LocalReport.DataSources.Clear();
ReportViewer1.LocalReport.DataSources.Add(new ReportDataSource("DataSet1", dt));
于 2013-09-14T06:33:16.960 に答える
0
 DataTable dtval = new DataTable();

// パラメータを追加

 SqlParameter[] param = new SqlParameter[5];
 if (!String.IsNullOrEmpty(ddlcust.SelectedValue))
 { param[0] = new SqlParameter("@custnam", ddlcust.SelectedValue); }
 else { param[0] = new SqlParameter("@custnam", DBNull.Value); }
 if (!string.IsNullOrEmpty(ddlproj.SelectedValue))
 { param[1] = new SqlParameter("@projid", Convert.ToInt32(ddlproj.SelectedValue)); }
 else { param[1] = new SqlParameter("@projid", DBNull.Value); }
 if (!string.IsNullOrEmpty(ddlvisittype.SelectedItem.Text))
 { param[2] = new SqlParameter("@vtype", ddlvisittype.SelectedItem.Text); }
 else { param[2] = new SqlParameter("@vtype", DBNull.Value); }
 param[3] = new SqlParameter("@frmdt", txtfrmdate.Text);
 param[4] = new SqlParameter("@todt", txttodate.Text);
 //Call storedprocedure with parameter
 dtval = objDal.Getvalue("[Usp_CRMRpt]", param);
 if (dtval != null && dtval.Rows.Count > 0)
 {

// レポートビューアにロード

 RptCrm.Visible = true;
 RptCrm.LocalReport.DataSources.Clear();
 ReportDataSource rds = new ReportDataSource("dsCrmrpt", dtval);
 RptCrm.LocalReport.ReportPath = "Report1.rdlc";
 RptCrm.LocalReport.DataSources.Add(rds);
 RptCrm.DataBind();
 RptCrm.LocalReport.Refresh();
 }
 else
 { RptCrm.Visible = false; }
于 2013-09-14T04:54:14.457 に答える