我写过这个程序:
alter proc rel_geralAC (@emite int, @mes char, @ano varchar(4) )as
select Total_Mun = COUNT(xMunIni),xMunIni ,
UF = MAX(UFIni) ,Valor_Total = SUM(CAST(vTPrest AS MONEY) )
from CTRC where EMITENTE= @emite and
MONTH(emissaodata)=@mes and status = 'A'
and YEAR (EMISSAODATA)= CONVERT (int,@ano)
group by xMunIni order by UF,xMunIni
这个proc返回一个非空的表,我用它创建一个数据集来填充C#中的rdlc报告 数据集返回信息
我在报告数据中声明了参数
这是reportviewer的代码:
ReportParameter[] p = new ReportParameter[3];
p[0] = new ReportParameter("emite",EEmit.ToString());
p[1] = new ReportParameter("mes", emes.ToString());
p[2] = new ReportParameter("ano", eano.ToString());
reportViewer1.LocalReport.SetParameters(p);
this.rel_geralACTableAdapter.Fill(this.ifdcontroladoria3DataSet.rel_geralAC,EEmit,emes,eano);
this.reportViewer1.RefreshReport();
为什么报告没有显示任何内容?感谢。
我删除了数据集并再次构建,创建了3个参数,如文本,如果我选择整数,查询不起作用,报表参数只接受字符串,但参数可能是
文本,boolen,日期/时间,整型,浮点型。
答案 0 :(得分:2)
//你错过了一行:
reportViewer1.LocalReport.SetParameters(new ReportParameter[] { p });
//由于您要将参数添加到参数数组中,因此可以将参数数组放在//参数集类中。
//我通常会
ReportParameter rp = new ReportParameter("ParameterName", "yourtextvalue.text", false);
//repeat again (rp2, rp3, rp4 etc...)
//然后调用最后一个语句
reportViewer1.LocalReport.SetParameters(new ReportParameter[] { rp, rp2, rp3, rp4 });
答案 1 :(得分:0)
您必须为“定义所有参数”添加“false”,例如:
p[0] = new ReportParameter("emite",EEmit.ToString(),false);