0
votes

Using Visual Studio 2010 and Crystal Reports 13.0.

For the report, there is a prompt for the user to input a value. Then the report is generated with no problems.

If the user leaves the report.aspx page and comes back to run another report, the prompt does not show and the last report run is still there with the original value from the user.

Searching around for a solution, the only two found did not work:

 //After the report loads
 CrystalReportSource1.ReportDocument.ParameterFields.Clear();

Error:

You cannot add, remove or modify parameter fields using this method. Please modify the report directly.

Modify the report directly:

Right click the body of your Crystal Report then goto:

Design -> Default Settings.. ->Reporting

Check the checkbox

Discard Saved Data When Loading Reports.

This did not work. The previous report still populates.

So, I now ask for a little insight on how to fix this problem.

As always, any suggestions are welcome.

Thanks

EDIT:

Here is the code behind for the report page. Many reports use this page....

            CrystalReportSource1.Report.FileName = "reports\\" + fileName + ".rpt";

            //CrystalReportSource1.Report.Parameters.Clear();
            //CrystalReportSource1.Report = null;
            //CrystalReportSource1.Report.Refresh();

            if (!string.IsNullOrEmpty(Request.QueryString["item"]))
            {
                String Item = Request.QueryString["item"];
                CrystalDecisions.Web.Parameter temp = new CrystalDecisions.Web.Parameter();
                temp.Name = "Item";
                temp.DefaultValue = Item;
                CrystalReportSource1.Report.Parameters.Add(temp);
            }

            SqlConnectionStringBuilder settings = new SqlConnectionStringBuilder(MyConnectionString);

            _crReportDocument = CrystalReportSource1.ReportDocument;
            _crConnectionInfo.ServerName = settings.DataSource;
            _crConnectionInfo.DatabaseName = settings.InitialCatalog;
            _crConnectionInfo.UserID = settings.UserID;
            _crConnectionInfo.Password = settings.Password;

            //Get the table information from the report
            _crDatabase = _crReportDocument.Database;
            _crTables = _crDatabase.Tables;

            //Loop through all tables in the report and apply the
            //connection information for each table.
            for (int i = 0; i < _crTables.Count; i++)
            {
                _crTable = _crTables[i];
                _crTableLogOnInfo = _crTable.LogOnInfo;
                _crTableLogOnInfo.ConnectionInfo = _crConnectionInfo;
                _crTable.ApplyLogOnInfo(_crTableLogOnInfo);
            }
2

2 Answers

0
votes

You can try using this in your Page_Unload event.

Report.Close();
Report.Dispose();

That should get rid of the report when the page is unloaded and you will start fresh when the user comes back to the page. There is a good example in this post here.

0
votes

I found the solution!!!! -------- NOT

Add this line before all the code in my question above:

 CrystalReportViewer1.ParameterFieldInfo.Clear();

Then load the file name and so forth.......