Crystal Reports数据库登录失败

时间:2017-04-27 19:35:53

标签: asp.net crystal-reports

在我看来,Crystal Reports不应该尝试连接到数据库,因为我将数据传递给报表。针对违规错误返回的消息是数据库登录失败。

myReport..SetDataSource(ds.Tables(0))

我在制作中收到了以下错误。每次运行报告时都会发生这种情况,但错误经常发生。

消息:数据库登录失败。 来源:分析服务器 堆栈跟踪:在CrystalDecisions.ReportAppServer.Controllers.ReportSourceClass.Export(ExportOptions pExportOptions,RequestContext pRequestContext)    在CrystalDecisions.ReportSource.EromReportSourceBase.ExportToStream(ExportRequestContext reqContext)

2 个答案:

答案 0 :(得分:0)

我遇到了完全相同的问题。使用push方法(虽然我将数据传递给报告而不是运行时数据库拉取方法)来显示水晶报告,但即使这样Crystal Report也没有出现在Crystal Report Viewer中,这个令人讨厌的“数据库登录失败”错误即将到来。该报告在Visual Studio中显示正常,但在运行IIS部署的Web应用程序时,在查看器中显示为空。

我一直认为在Crystal Report Web查看器中生成Crystal Report的应用程序需要PC Admin用户凭据才能在我们的Web服务器上的IIS中部署。 (IIS - >我的网络应用程序 - >高级设置 - >设置物理路径凭据...但这不是必需的,每当用户密码发生更改时,我必须再次手动设置密码以使Crystal报告显示在我的网络应用程序中查看器 - 这是一个手动工作我一直遵循,直到我得到解决方案!!进一步阅读)

想出这个数据库登录错误实际上是因为我只是将整个数据集设置为Crystal Report主报表的数据源,而忘记为报表中的子报表单独设置数据源。 Crystal Report也会查找它:)

因此,那些在您的水晶报告中有子报告的人,您应该将数据源分别设置为与主报告分开的所有子报告。瞧,为我解决了这个问题!我再次喜欢水晶报道:)

如果水晶报告中也有子报告,则这是设置数据源的错误方法 -


Dim myReportDataset as New Dataset 
Dim rptCrystalReport As New MyCrystalReport 
//Fetch data from DB as datatables and set to the dataset
...
//Process your dataset and dataset tables here
....
//Setting Datasource to report 
rptCrystalReport.SetDataSource(myReportDataset)

正确的方法如下


Dim myReportDataset as New Dataset 
Dim rptCrystalReport As New MyCrystalReport
//Fetch data from DB as datatables and set to the dataset
...
//Process your dataset and dataset tables here
....
//Setting Datasource to report
rptCrystalReport.SetDataSource(myReportDataset)
rptCrystalReport.Subreport.Item("sub_report1").SetDataSource(myReportDataset.Tables("Sub_Report1_Datatable"))
rptCrystalReport.Subreport.Item("sub_report2").SetDataSource(myReportDataset.Tables("Sub_Report2_Datatable"))
如果它解决了你的问题,请将我的回复标记为答案:)

答案 1 :(得分:0)

步骤1右键单击报表数据库->设置数据源位置>单击更新按钮OLE DB提供程序->选择SQL Server Native Client 11.0->输入数据库凭据+数据库选择->已完成->再次单击更新按钮。 / p>

确保在IIS中-服务器应具有 成功发布文件夹后,仅部署到IIS中,不包括任何报告文件夹。

已安装SQL Server Native Client 11.0 相同版本的Crystal Report 代码:

        ReportDocument rpt = new ReportStatement();
        TableLogOnInfos crtableLogoninfos = new TableLogOnInfos();
        TableLogOnInfo crtableLogoninfo = new TableLogOnInfo();
        ConnectionInfo crConnectionInfo = new ConnectionInfo();
        Tables CrTables;
        rConnectionInfo.ServerName = "10.10.50.243";
        crConnectionInfo.DatabaseName = "StudentDB";
        crConnectionInfo.UserID = "DBAdmin";
        crConnectionInfo.Password = "abc@123";
        CrTables = rpt.Database.Tables;
        foreach (CrystalDecisions.CrystalReports.Engine.Table CrTable in CrTables)
        {
            crtableLogoninfo = CrTable.LogOnInfo;
            crtableLogoninfo.ConnectionInfo = crConnectionInfo;
            crtableLogoninfo.ConnectionInfo.IntegratedSecurity = false;
            CrTable.ApplyLogOnInfo(crtableLogoninfo);
        }
        rpt.SetDatabaseLogon("DBAdmin", "abc@123", "192.168.10.243", "StudentDB");
        rpt.SetDataSource(ds);
        rpt.Refresh();