水晶报表,"参数不正确"
string[] fieldArray;
ParameterFields pfs = new ParameterFields();
fieldArray = DynamicPrint.fieldStr.Split( ', ');
SqlConnection con = DBT.CreateConnection();
con.Open();
SqlDataAdapter sda = new SqlDataAdapter( "select " + DynamicPrint.fieldStr + " from _Test ", con);
DataSet ds = new DataSet();
sda.Fill(ds, "_Test ");
CrystalReport3 cr = new CrystalReport3();
for (int i = 0; i < fieldArray.Length; i++)
{
ParameterField pf = new ParameterField();
pf.Name = "t " + Convert.ToString(i + 1);
ParameterDiscreteValue pdv = new ParameterDiscreteValue();
pdv.Value = fieldArray[i];
pf.CurrentValues.Add(pdv);
pfs.Add(pf);
string myStr = " ";
myStr = "tt " + Convert.ToString(i + 1);
cr.DataDefinition.FormulaFields[myStr].Text = "{_Test. " + fieldArray[i] + "} ";
}
crystalReportViewer1.ParameterFieldInfo = pfs;
cr.SetDataSource(ds.Tables[ "_Test "]);
crystalReportViewer1.ReportSource = cr;
[解决办法]
你的選行環境是怎么樣的,錯誤信息是什么,要不別人怎么幫你去查呀.
[解决办法]
如下代码是正确的代码,这里使用的是调用rpt文件,rpt连接sp,传递parameters,就可以了。
this.reportDocument1.FileName = frmMain.getAppPath() + "\\report\\SalesQuotation.rpt ";
ParameterField paramPrinter = new ParameterField();
paramPrinter.ParameterFieldName = "@specnum ParameterDiscreteValue paramValue = new ParameterDiscreteValue();
paramValue.Value = "QI-800-L-A0002 "; //this.specnum;
paramPrinter.CurrentValues.Add(paramValue);
ParameterFields ParamFields = new ParameterFields();
ParamFields.Add(paramPrinter);
crystalReportViewer1.ParameterFieldInfo = ParamFields;
this.crystalReportViewer1.ReportSource = reportDocument1;
this.crystalReportViewer1.Show();
[解决办法]
因为报表的参数和程序传进去的参数不一致
请仔细检查比对