ponumber と receiveno の 2 つのパラメータを持つレポートがあります。パラメータ値が URL 経由で渡される C# ページからレポートを呼び出そうとしています。レポートを呼び出すと、「パラメーターが正しくありません」というエラーが表示されますが、その理由がわかりません。オンラインで見つけたものに基づいてさまざまなコード変更を行いました。最初は Report Viewer がパラメーターがないと言っていたため、このアプローチの方が優れているように見えますが、機能しません。
私のコード:
string ponumber = Request.QueryString["ponumber"].ToString();
string receiptno = Request.QueryString["receiptno"].ToString();
// Put Away Report
CrystalReportSource CrystalReportSource1 = new CrystalReportSource();
CrystalReportViewer CrystalReportViewer1 = new CrystalReportViewer();
ParameterFields paramFields1 = new ParameterFields();
ParameterFields paramFields2 = new ParameterFields();
ParameterField paramField1 = new ParameterField();
ParameterField paramField2 = new ParameterField();
ParameterDiscreteValue paramDiscreteValue1 = new ParameterDiscreteValue();
ParameterDiscreteValue paramDiscreteValue2 = new ParameterDiscreteValue();
paramField1.Name = "@ponumber";
paramDiscreteValue1.Value = ponumber;
paramField1.CurrentValues.Add(paramDiscreteValue1);
paramField1.HasCurrentValue = true;
paramFields1.Add(paramField1);
paramField2.Name = "@receiptno";
paramDiscreteValue2 = new ParameterDiscreteValue(); // <-- This line is added
paramDiscreteValue2.Value = receiptno;
paramField2.CurrentValues.Add(paramDiscreteValue2);
paramField2.HasCurrentValue = true;
paramFields2.Add(paramField2);
CrystalReportViewer1.ParameterFieldInfo = paramFields1;
CrystalReportViewer1.ParameterFieldInfo = paramFields2;
TableLogOnInfo logOnInfo = new TableLogOnInfo();
logOnInfo.ConnectionInfo.ServerName = ConfigurationManager.AppSettings["WarehouseReportServerName"];
logOnInfo.ConnectionInfo.DatabaseName = ConfigurationManager.AppSettings["WarehouseReportDatabaseName"];
logOnInfo.ConnectionInfo.UserID = ConfigurationManager.AppSettings["WarehouseReportUserID"];
logOnInfo.ConnectionInfo.Password = ConfigurationManager.AppSettings["WarehouseReportPassword"];
TableLogOnInfos infos = new TableLogOnInfos();
infos.Add(logOnInfo);
CrystalReportViewer1.LogOnInfo = infos;
maindiv.Controls.Add(CrystalReportSource1);
maindiv.Controls.Add(CrystalReportViewer1);
CrystalReportViewer1.ReportSource = CrystalReportSource1;
CrystalReportViewer1.EnableParameterPrompt = false;
CrystalReportSource1.Report.FileName = "Report3.rpt";
CrystalReportSource1.EnableCaching = false;
CrystalReportViewer1.DataBind();