水晶报表参数问题,请大家帮忙看看,谢谢!

jhpu2000 2005-01-23 07:27:25
我在设计时用了参数,暂且说有两个吧,一个姓名【name】,一个编号【number】,我是想通过主窗体得textBox编辑框输入值来打印信息,有个【预览】和【打印】两个按钮。crystalReportViewer1在另外得一个窗体里,通过调用来传参数。我得代码是这样的:

//声明变量
ReportForm rptForm = new ReportForm();

private rptGYQZPage2 crReportDocument2 = new rptGYQZPage2();
private ParameterFields crParameterFields2;
private ParameterField crParameterField2;
private ParameterValues crParameterValues2;
private ParameterDiscreteValue crParameterDiscreteValue2;

//获取参数值
private void Value2ReportPage2()
{

rptForm.crystalReportViewer1.ReportSource = crReportDocument2;
crParameterFields2 = rptForm.crystalReportViewer1.ParameterFieldInfo;

crParameterField2 = crParameterFields2["G_FWGYQRen"];
crParameterValues2 = crParameterField2.CurrentValues;
crParameterDiscreteValue2 = new ParameterDiscreteValue();
crParameterDiscreteValue2.Value = txtName1.Text.Trim();
crParameterValues2.Add(crParameterDiscreteValue2);

crParameterField2 = crParameterFields2["G_FWSYQZCZRen"];
crParameterValues2 = crParameterField2.CurrentValues;
crParameterDiscreteValue2 = new ParameterDiscreteValue();
crParameterDiscreteValue2.Value = txtName2.Text.Trim();
crParameterValues2.Add(crParameterDiscreteValue2);
}

//预览
private void btnPage2Preview_Click(object sender, System.EventArgs e)
{
Value2ReportPage2();

rptForm.Show();
}

//直接打印
private void btnPage2Print_Click(object sender, System.EventArgs e)
{
Value2ReportPage2();

rptForm2.crystalReportViewer1.PrintReport();
}

问题是:
1)单击【预览】,没问题,参数值也是对的,但是,若此时退出,再单击【打印】按钮,则会报告出错,出错信息是这样的:【未处理的"System.ArgumentOutOfRangeException"类型的异常出现再system.windows.forms.dll中 其他信息:指定的参数已超出有效的范围】

2)单击【打印】,没有问题,出现打印设置对话框,若此时取消,退出,再次单击【打印】,还是对的,没有问题,打印的内容也是对的。但是若取消打印后单击【预览】按钮,则又会出现同样的瓦那体,出错信息描述如上

3)单击【预览】按钮,没问题,放弃退出后若单击【打印】按钮,则也会出现如上错误信息

初步判断可能是参数是Add的,只有两个参数,退出后再Add,所以超界,但是我不晓得怎么解决。请大家帮帮忙,谢谢啦!(不知道我的问题我说清楚了没有,麻烦大家了)
...全文
150 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
ZC747 2005-01-24
  • 打赏
  • 举报
回复
我是这么做的,供你参考:
ParameterFields ParamFields = new ParameterFields();

ParameterField ParameterFieldA = new ParameterField();
ParameterDiscreteValue ParameterDiscreteValueA = new ParameterDiscreteValue();
ParameterFieldA.ParameterFieldName = "A"; //参数name(已经设计在报表内了)
ParameterDiscreteValueA.Value = " "; //参数value
ParameterFieldA.CurrentValues.Add(ParameterDiscreteValueA);

ParamFields.Add(ParameterFieldA);
crystalReportViewer.ParameterFieldInfo = ParamFields;
jhpu2000 2005-01-23
  • 打赏
  • 举报
回复
不好意思,参数写错了,应该是["name"]和["number"]

4,818

社区成员

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

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