0

我是 Crystal Reports 世界的新手,我发现了各种关于在 VS 2010 中创建新 Crystal Report 的文章,但没有关于获取现有报表并使用它生成可以由用户。

这是我发现我试图作为开始使用的文章: ASP.NET MVC 中的 Crystal Reports

在我们的 ERP 系统中运行原始报告时,我运行了 SQL Profiler,并尝试将此查询用作我的数据源,但每次我加载报告文件时,它都会引发异常:

    Exception Details: System.Runtime.InteropServices.COMException: Database logon failed.

如果我通过代码进行调试,则 HasRecords

    '((CrystalDecisions.CrystalReports.Engine.ReportDocument)(rptH)).HasRecords' threw an exception of type 'CrystalDecisions.CrystalReports.Engine.LogOnException'

我还尝试添加 SetDatabaseLogin 方法,使用用户名和密码以及 DBO 访问数据库,但得到了相同的结果。

    rptH.SetDatabaseLogon("username", "password");

所以为了长篇大论,我想知道是否有人知道一篇好文章,或者可以给我一些万无一失的步骤来让报告在我的代码中工作,在那里我可以返回一个 PDF(即使我硬编码 SQL首先......我只是想看看它的工作)。

谢谢!

4

1 回答 1

0

这是我们在我工作的地方如何做的一个过于简化的版本......

protected void btnGetReport_Click(object sender, EventArgs e)
{
   System.Guid desiredGuid = System.Guid.NewGuid();
   desiredGuid = createReport();
   //open report in browser
   Response.Redirect(@"SecureReports\" + desiredGuid + ".pdf");
}

private System.Guid createReport()
{
    System.Guid desiredGuid = System.Guid.NewGuid();
    string workpath = "";
    ReportDocument reportDocument = new ReportDocument();

    workpath = @"c:\Reports\cr_myReport.rpt";

    reportDocument.FileName = workpath;
    reportDocument.SetDatabaseLogon("user", "pass", "SERVER\\sql", "database");
    reportDocument.SetParameterValue("@param", strParam);
//export CR to a pdf on the server
    reportDocument.ExportToDisk(ExportFormatType.PortableDocFormat, @"c:\SecureReports\" + desiredGuid + ".pdf");
//send location of pdf back to calling function
        return desiredGuid;
    }
于 2012-08-03T19:57:01.047 回答