Crystal Report: Invalid index. (Exception from HRESULT: 0x8002000B (DISP_E_BADINDEX))

匿名 (未验证) 提交于 2019-12-03 01:58:03

问题:

I can not pass values to the report.

This is my code:

public void GLRPT()         {             try             {                  ReportClass rptH = new ReportClass();                 rptH.FileName = Server.MapPath("~/Rpts/G1.rpt");                 rptH.Load();                  string df = Session["fromdate"].ToString();                 string dt = Session["todate"].ToString();                 DateTime fromdate = DateTime.Parse(df);                 DateTime todate = DateTime.Parse(dt);                  rptH.SetParameterValue("?Date_From", fromdate);                 rptH.SetParameterValue("?Date_To", todate);                 rptH.ExportToHttpResponse(ExportFormatType.PortableDocFormat, System.Web.HttpContext.Current.Response, false, "GL");             }             catch (Exception ex)             {                 Response.Write(ex.Message);             }         }

I don't know why I see this error:
Invalid index. (Exception from HRESULT: 0x8002000B (DISP_E_BADINDEX))

回答1:

We should pass the parameter value like this:

rptH.SetParameterValue("Date_From", fromdate); //correct

NOT

rptH.SetParameterValue("?Date_From", fromdate); //incorrect

Then we we must give database access to the report because without login to database the report will not be opened. and here is the code:

ReportDocument rptH = new ReportDocument(); TableLogOnInfos crtableLogoninfos = new TableLogOnInfos(); TableLogOnInfo crtableLogoninfo = new TableLogOnInfo(); ConnectionInfo crConnectionInfo = new ConnectionInfo(); Tables CrTables;  rptH.Load(Server.MapPath("~/Rpts/G1.rpt"));  string df = Session["fromdate"].ToString(); string dt = Session["todate"].ToString(); DateTime fromdate = DateTime.Parse(df); DateTime todate = DateTime.Parse(dt);  rptH.SetParameterValue("Date_From", fromdate); rptH.SetParameterValue("Date_To", todate);  crConnectionInfo.ServerName = "YOUR SERVER NAME"; crConnectionInfo.DatabaseName = "YOUR DATABASE NAME"; crConnectionInfo.UserID = "YOUR DATABASE USERNAME"; crConnectionInfo.Password = "YOUR DATABASE PASSWORD";  CrTables = rptH.Database.Tables; foreach (CrystalDecisions.CrystalReports.Engine.Table CrTable in CrTables) {     crtableLogoninfo = CrTable.LogOnInfo;     crtableLogoninfo.ConnectionInfo = crConnectionInfo;     CrTable.ApplyLogOnInfo(crtableLogoninfo); }  rptH.ExportToHttpResponse(ExportFormatType.PortableDocFormat, System.Web.HttpContext.Current.Response, false, "GL");

We must call the parameter's name without any additional character such as @ or ?, just only the parameter's name itself.



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!