【问题标题】:CrystalDecisions.Shared.CrystalReportsException:Load report failed. The document has not openedCrystalDecisions.Shared.CrystalReportsException:加载报告失败。文件未打开
【发布时间】:2020-02-19 06:04:45
【问题描述】:

我有方法,我正在使用水晶决策报告,它会抛出一个内部异常。我该如何解决这个问题?我见过类似的话题,但我的并没有真正解决类似的问题,因为我试图做同样的事情。请参阅下面的逻辑和屏幕截图以获取更多详细信息。换句话说,我的加载方法没有打开。

// Controller
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult AdvertReport(FormCollection fc)
{
    DataSet ds = obIlReports.Generate_AdvertDetailsReport();
    ds.Tables[0].TableName = "Tbl_TrainingAcademy";

    if(ds.Tables[0].Rows.Count > 0)
    {
        ReportClass rptH = new ReportClass();
        rptH.FileName = Server.MapPath("~/Reports/AdvertReport.rpt");
        rptH.Load(); // The document do not open error is thrown here.
        rptH.SetDataSource(ds.Tables[0]);
        Response.Buffer = false;
        Response.ClearContent();
        Response.ClearHeaders();


        Stream stream = rptH.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat);
        stream.Seek(0, SeekOrigin.Begin);
        return File(stream, "application/pdf", "AdvertReport.pdf");
    }
    return View();
}
// Ilreport here with store procedure.
public class ReportsMaster : IlReports
{
    public DataSet Generate_AdvertDetailsReport()
    {
        using(SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["eNtsaOnlineRegistrationDB"].ToString()))
        {
            con.Open();
            DataSet ds = new DataSet();

            // Handling Exception
            try
            {
                SqlCommand cmd = new SqlCommand("dbo.GetAdvertReport", con);
                cmd.CommandType = CommandType.StoredProcedure;
                SqlDataAdapter da = new SqlDataAdapter();
                da.SelectCommand = cmd;
                da.Fill(ds);

                if(ds.Tables.Count > 0)
                {
                    return ds;
                }
                else
                {
                    return ds = null;
                }

            }
            catch(Exception )
            {
                throw;
            }
            finally
            {
                ds.Dispose();
            }
        }
    }
}
// ConnectionString
<connectionStrings>
    <add name="eNtsaOnlineRegistrationDB" connectionString="Data Source=GcobaniM-L\SQLEXPRESS; DataBase=eNtsaOnlineRegistrationDB; Integrated Security=True" providerName="System.Data.SqlClient" />
</connectionStrings>

【问题讨论】:

  • 抛出了什么错误?请edit您的问题包含它
  • 在这里我似乎有点明白为什么,现在正忙着尝试使用 Crystalreport 修复以完全安装在我的目标 IDE 上。我还注意到我没有将指向我的正确表的数据源映射到存储过程来运行原因,所以现在我得到了装配的 conflix 错误。

标签: c# sql-server asp.net-mvc


【解决方案1】:
  1. 我遇到的问题很简单,我创建的报告文件没有像为 Microsoft Visual Studio 安装水晶报告那样的扩展报告。以下是 Windows 的兼容性链接。

https://www.sap.com/cmp/td/sap-crystal-reports-visual-studio-trial.html?trial=%2F%2Fwww.sap.com%2Fregistration%2Ftrial.9a4afb3b-7eaa-42af-98ce-abeae5deb784.html

  1. 安装此软件后,Visual Studio 将具有 Reporting。请参阅我的屏幕截图以获取想法或线索。

  2. 确保在软件完成之前关闭您的 VS。

  3. 然后您创建报告并根据您的项目应用程序给出其路径。

  4. 如果您遇到如下异常;

Could not load file or assembly CrystalDecisions.CrystalReports.Engine

  1. 按照论坛中提到的步骤操作,您的应用程序应该可以正常工作,如果不能排除故障。

【讨论】:

    猜你喜欢
    • 2020-03-18
    • 1970-01-01
    • 2010-11-14
    • 2013-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-23
    • 1970-01-01
    相关资源
    最近更新 更多