水晶报表传参问题,在线等解

party620 2013-08-13 04:29:50
cs代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;

public partial class myCrpDataP : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

}

public DataTable GetSource()
{
using (SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=test;Integrated Security=True"))
{
string sql = "with testInfo as";
sql += "(select CONVERT(char(7),edate,20) as mm,ccode,YEAR(Edate) as 'years' from Emergency)";
sql += " select ccode,mm,cast(cast(100*count(*)/(select count(*) from emergency) as decimal(4,2)) as varchar)+'%' as radio ";
sql += "from testInfo where years=@years";
sql += " group by mm,ccode";

SqlCommand cmd = new SqlCommand(sql, con);
SqlDataAdapter myadapter =new SqlDataAdapter(sql, con);
DataSet ds = new DataSet();
myadapter.Fill(ds.Tables["Emercy"]);
return ds.Tables["Emercy"];

}

}
protected void btn1_Click(object sender, EventArgs e)
{
ParameterFields paramfields = new ParameterFields();
ParameterField years = new ParameterField();
years.Name = "years";
//声明参数值
ParameterDiscreteValue vYears = new ParameterDiscreteValue();
//给参数赋值
vYears.Value = ddl1.SelectedItem.Text;
//将该参数添加到参数字段中
paramfields.Add(years);

CryReportP.ParameterFieldInfo = paramfields; //将参数放入查看器控件中

ReportDocument mydocument = new ReportDocument();
mydocument.Load(Server.MapPath("CryReporPt.rpt")); //加载报表
DataTable dt = GetSource();
mydocument.SetDataSource(dt);
this.CryReportP.ReportSource = mydocument; //设置数据源
}
}


每次执行GetSource()方法时都出错,myadapter.Fill(ds.Tables["Emercy"]);提示值不能为空
帮我看下如何修改代码??
...全文
108 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
party620 2013-08-15
  • 打赏
  • 举报
回复
好吧,没人来
party620 2013-08-13
  • 打赏
  • 举报
回复
以上代码有错,请看一下代码 执行以下代码,会出现必须声明变量@years 我不明白的是我在btn单击事件里不是已经声明过啦,并已经覆过值啦,为什么还会出现未声明变量 什么原因,我又该如何修改?? 哦,更正之后的代码是

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;

public partial class myCrpDataP : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    public DataTable GetSource()
    {
        using (SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=test;Integrated Security=True"))
        {
            string sql = "with testInfo as";
            sql += "(select CONVERT(char(7),edate,20) as mm,ccode,YEAR(Edate) as 'years' from Emergency)";
            sql += " select ccode,mm,cast(cast(100*count(*)/(select count(*) from emergency) as decimal(4,2)) as varchar)+'%' as radio ";
            sql += "from testInfo where years=@years";
            sql += " group by mm,ccode";

            SqlCommand cmd = new SqlCommand(sql, con);
            SqlDataAdapter myadapter =new SqlDataAdapter(sql, con);
            DataSet ds = new DataSet();
            myadapter.Fill(ds, "testEme");
            return ds.Tables["testEme"];
            
        }
        
    }
    protected void btn1_Click(object sender, EventArgs e)
    {
        ParameterFields paramfields = new ParameterFields();
        ParameterField years = new ParameterField();
        years.Name = "years";
         //声明参数值
        ParameterDiscreteValue vYears = new ParameterDiscreteValue();
        //给参数赋值
        vYears.Value = ddl1.SelectedItem.Text;
        //将该参数添加到参数字段中
        paramfields.Add(years);

        CryReportP.ParameterFieldInfo = paramfields;  //将参数放入查看器控件中

        ReportDocument mydocument = new ReportDocument();
        mydocument.Load(Server.MapPath("CryReporPt.rpt"));  //加载报表
        DataTable dt = GetSource();
        mydocument.SetDataSource(dt);
        this.CryReportP.ReportSource = mydocument;   //设置数据源
    }
}

4,819

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 图表区
社区管理员
  • 图表区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧