水晶报表的推入模式 总是提示参数错误,下面是代码,其中dataset可以得到,那位前辈指点一下啊!!!急~~~
CRReceiptSumrpt=newCRReceiptSum();//生成水晶报表对象CrystalReportViewer1.ReportSourceID=rpt.R...
CRReceiptSum rpt = new CRReceiptSum();//生成水晶报表对象
CrystalReportViewer1.ReportSourceID = rpt.ResourceName;//设置CrystalReportViewer的数据源
String path = Request.PhysicalApplicationPath +"CRReceiptSum.rpt";
rpt.Load(path);
rpt.SetDataSource(dataset.Tables[0]);
ParameterFields paramFields = new ParameterFields();
ParameterField pfReceiptID = new ParameterField();
ParameterField pfMakeReceiptTime = new ParameterField();
ParameterDiscreteValue discreteVal1 = new ParameterDiscreteValue();
ParameterDiscreteValue discreteVal2 = new ParameterDiscreteValue();
pfReceiptID.ParameterFieldName = "订单编号";
pfMakeReceiptTime.ParameterFieldName = "名称";
discreteVal1.Value = dataset.Tables[0].Rows[0]["ReceiptID"].ToString();
discreteVal2.Value=dataset.Tables[0].Rows[0]["MakeReceiptTime"].ToString();
pfReceiptID.CurrentValues.Add(discreteVal1);
pfMakeReceiptTime.CurrentValues.Add(discreteVal2);
paramFields.Add(pfReceiptID);
paramFields.Add(pfMakeReceiptTime);
CrystalReportViewer1.ReportSource = rpt;
this.CrystalReportViewer1.ParameterFieldInfo = paramFields;
this.CrystalReportViewer1.RefreshReport(); 展开
CrystalReportViewer1.ReportSourceID = rpt.ResourceName;//设置CrystalReportViewer的数据源
String path = Request.PhysicalApplicationPath +"CRReceiptSum.rpt";
rpt.Load(path);
rpt.SetDataSource(dataset.Tables[0]);
ParameterFields paramFields = new ParameterFields();
ParameterField pfReceiptID = new ParameterField();
ParameterField pfMakeReceiptTime = new ParameterField();
ParameterDiscreteValue discreteVal1 = new ParameterDiscreteValue();
ParameterDiscreteValue discreteVal2 = new ParameterDiscreteValue();
pfReceiptID.ParameterFieldName = "订单编号";
pfMakeReceiptTime.ParameterFieldName = "名称";
discreteVal1.Value = dataset.Tables[0].Rows[0]["ReceiptID"].ToString();
discreteVal2.Value=dataset.Tables[0].Rows[0]["MakeReceiptTime"].ToString();
pfReceiptID.CurrentValues.Add(discreteVal1);
pfMakeReceiptTime.CurrentValues.Add(discreteVal2);
paramFields.Add(pfReceiptID);
paramFields.Add(pfMakeReceiptTime);
CrystalReportViewer1.ReportSource = rpt;
this.CrystalReportViewer1.ParameterFieldInfo = paramFields;
this.CrystalReportViewer1.RefreshReport(); 展开
展开全部
是不是你传入的参数类型与dataset中字段的类型匹配,在dataset 中应该传入number类型的被你
ToString ()了。做报表中常出现这样的错误。。好好检查检查。应该不是大难题
ToString ()了。做报表中常出现这样的错误。。好好检查检查。应该不是大难题
追问
可是dataset是可以得到数据库里的数据的,这个我单独拿出来试了呀,没有问题的。dataset也没有传递什么参数啊,重新检查了一下,运行后还是提示参数错误。我这是第一次用水晶报表,在网上查来查去还是没有搞定,大哥再看看,帮帮忙啊!~~
追答
是传入RPT文件里的参数要检查一下,你的报表rpt,通过 paramFields.Add(pfReceiptID);
paramFields.Add(pfMakeReceiptTime) 传入参数给RPT。那么你要检查一下,在RPT文件里,你的参数的序列是不是也对应了,第一个参数是pfReceiptID,第二个pfMakeReceiptTime
并且你的pfReceiptID 是string,也就是说,你在RPT报表里也必须设置为String。
关于第二个pfMakeReceiptTime 同理,如果报表里设定为time类型的话,就错了,
还有一点就是,rtp报表里的参数要和你传入的参数匹配。不能prt里有3个参数,而你才传入2个。这样也会报类似的错。。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询