寫了個存儲過程,要求接收一個日期參數,然後在報表中顯示出來,但是不知怎樣傳參數?private void FReport2_Load(object sender, EventArgs e)
{
ReportDocument RD = new ReportDocument(); RD.Load(Application.StartupPath + "\\CrystalReport5.rpt");
RD.SetDataSource(client.getDataSet(str5));
crystalReportViewer1.ReportSource = RD;
crystalReportViewer1.Show();
}
注:str5的值是:exe test '2009-05-25'client.getDataSet(str5)); //得到結果集
{
ReportDocument RD = new ReportDocument(); RD.Load(Application.StartupPath + "\\CrystalReport5.rpt");
RD.SetDataSource(client.getDataSet(str5));
crystalReportViewer1.ReportSource = RD;
crystalReportViewer1.Show();
}
注:str5的值是:exe test '2009-05-25'client.getDataSet(str5)); //得到結果集
//构造参数
SqlParameter[] sqlParameter = {
new SqlParameter("@Staff_Code",SqlDbType.NVarChar),
new SqlParameter("@Staff_Name",SqlDbType.NVarChar),
new SqlParameter("@Staff_Password",SqlDbType.NVarChar),
new SqlParameter("@Dept_Id",SqlDbType.Int),
new SqlParameter("@Dept_Leader",SqlDbType.Int),
new SqlParameter("@Re",SqlDbType.NVarChar),
new SqlParameter("@Create_Time",SqlDbType.DateTime),
new SqlParameter("@Creater",SqlDbType.NVarChar),
new SqlParameter("@Flag",SqlDbType.Int),
new SqlParameter("@Staff_Id",SqlDbType.Int), }; //为参数传值
int i = 0;
sqlParameter[i++].Value = info.Staff_Code;
sqlParameter[i++].Value = info.Staff_Name;
sqlParameter[i++].Value = info.Staff_Password;
sqlParameter[i++].Value = info.Dept_Id;
sqlParameter[i++].Value = info.Dept_Leader;
sqlParameter[i++].Value = info.Re;
sqlParameter[i++].Value = info.Create_Time;
sqlParameter[i++].Value = info.Creater;
sqlParameter[i++].Value = info.Flag;
sqlParameter[i++].Value = info.Staff_Id;
给水晶报表传参数是这样
this.CrystalReportSource1.ReportDocument.SetParameterValue("参数名", "参数值");
我们假设你的代码,已经可以正常运行,并且报表能展现了,只是缺个“日期參數”在报表中实际展现出来。在你现有报表的基础上,增加一个参数,假设叫x1,string型
代码中增加一行private void FReport2_Load(object sender, EventArgs e)
{
ReportDocument RD = new ReportDocument(); RD.Load(Application.StartupPath + "\\CrystalReport5.rpt");
RD.SetDataSource(client.getDataSet(str5));
RD.SetParameterValue("x1", "2009-05-05");
crystalReportViewer1.ReportSource = RD;
crystalReportViewer1.Show();
}
public DataSet getDataSet(SqlCommand command)
{
aa = new SQL_Manager();
aa.conn.Open();
adapter = aa.getAdapter(command);
ds = new DataSet();
adapter.Fill(ds);//這報錯
return ds;
}運行報錯:程序 'test' 預期使用未提供的參數 '@year_current'。private void FReport2_Load(object sender, EventArgs e)
{
ReportDocument RD = new ReportDocument(); RD.Load(Application.StartupPath + "\\CrystalReport5.rpt");
RD.SetDataSource(client.getDataSet(str5));
RD.SetParameterValue("@year_current", "2009-05-05");
crystalReportViewer1.ReportSource = RD;
crystalReportViewer1.Show();
}
http://www.cnblogs.com/tiu/archive/2006/10/16/530647.aspx
這個怎麽辦啊?
你先要看一下你的存储过程为什么不能返回数据集,不要管水晶报表部分。你自己封装好的
aa = new SQL_Manager();
aa.conn.Open();
adapter = aa.getAdapter(command); 这个部分,是不是有问题?