问个RDLC报表的问题,为什么报错。

zl194 2010-01-11 04:05:42
我做了一个类,是打开rdlc报表的类。

//repname 是报表的名称,其他是一些取数的参数。
private void cOpenRep(string auid, string pici, DataSet dataSet,string repname) //打开报表
{
this.reportViewer1.LocalReport.ReportEmbeddedResource = repname;
this.reportViewer1.LocalReport.DataSources.Clear();

this.reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("myds", dataSet.Tables[0]));
ClassMyData.DbSystem db = new ClassMyData.DbSystem();
switch (repname)
{
case "c_report.bd2.rdlc":
ReportParameter rp = new ReportParameter("pici", pici);
this.reportViewer1.LocalReport.SetParameters(new ReportParameter[] { rp });
break;
case "c_report.bd3.rdlc":
ReportParameter rp1 = new ReportParameter("cdate", Convert.ToDateTime(db.GetValue("SELECT cvalue1 FROM tb_canshu WHERE cpici='" + _pici + "' AND bd_autoid=17")).ToShortDateString());
ReportParameter rp2 = new ReportParameter("beizhu", db.GetValue("SELECT cvalue2 FROM tb_canshu WHERE cpici='" + _pici + "' AND bd_autoid=25"));
this.reportViewer1.LocalReport.SetParameters(new ReportParameter[] { rp1, rp2 });
break;
default:
break;
}
this.reportViewer1.RefreshReport();//显示报表

}


在第一次打开报表时,没有问题,打开c_report.bd2.rdlc或c_report.bd3.rdlc都没问题。但是先打开一个带参数的文件,如c_report.bd2.rdlc后,再打开c_report.bd3.rdlc 就会提示使用未定义的参数pici,其实pici是bd2的参数,我现在打开的是bd3.相反的当我先打开bd3没有问题,再打开bd2时,旧体诗cdate没有定义,但bd2我并没定义这个参数,这个参数是bd3的。
帮我想想是怎么回事。
...全文
149 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zl194 2010-01-11
  • 打赏
  • 举报
回复
不是switch问题,换成if也不行。
zl194 2010-01-11
  • 打赏
  • 举报
回复
我感觉是不是switch的问题,换个方法吧。
zl194 2010-01-11
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 mbh0210 的回复:]
引用楼主 zl194 的回复:
在第一次打开报表时,没有问题,打开c_report.bd2.rdlc或c_report.bd3.rdlc都没问题。但是先打开一个带参数的文件,如c_report.bd2.rdlc后,再打开c_report.bd3.rdlc 就会提示使用未定义的参数pici,其实pici是bd2的参数,我现在打开的是bd3.相反的当我先打开bd3没有问题,再打开bd2时,旧体诗cdate没有定义,但bd2我并没定义这个参数,这个参数是bd3的。
帮我想想是怎么回事。



查看你增加参数的地方,看看那里的逻辑,
[/Quote]

就是在CASE里增加的。
mbh0210 2010-01-11
  • 打赏
  • 举报
回复
[Quote=引用楼主 zl194 的回复:]
在第一次打开报表时,没有问题,打开c_report.bd2.rdlc或c_report.bd3.rdlc都没问题。但是先打开一个带参数的文件,如c_report.bd2.rdlc后,再打开c_report.bd3.rdlc 就会提示使用未定义的参数pici,其实pici是bd2的参数,我现在打开的是bd3.相反的当我先打开bd3没有问题,再打开bd2时,旧体诗cdate没有定义,但bd2我并没定义这个参数,这个参数是bd3的。
帮我想想是怎么回事。

[/Quote]

查看你增加参数的地方,看看那里的逻辑,
zl194 2010-01-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 xray2005 的回复:]
试试,加一句代码,把参数清除了。试试。如

this.reportViewer1.LocalReport.Parameters.Clear();//就是先清除参数试试,具体是不是Clear()方法不我就太清楚。可能不是这个方法吧。
this.reportViewer1.LocalReport.DataSources.Clear();

[/Quote]

我也是这么想的,但是找不到清除的方法,我再看看。
xray2005 2010-01-11
  • 打赏
  • 举报
回复
试试,加一句代码,把参数清除了。试试。如

this.reportViewer1.LocalReport.Parameters.Clear();//就是先清除参数试试,具体是不是Clear()方法不我就太清楚。可能不是这个方法吧。
this.reportViewer1.LocalReport.DataSources.Clear();
zl194 2010-01-11
  • 打赏
  • 举报
回复
高手在哪里。

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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