Crystal Reports失败的数据库登录

时间:2010-05-11 16:28:18

标签: c# .net visual-studio-2008 crystal-reports reporting

在google上花了3到4个小时试图找到解决问题的方法后,我运气不好。

基本上,我们使用带有sql server后端的.NET应用程序的水晶报告,我们有许多客户端都有自己的服务器,所以我们的报告需要动态设置它们的连接。直到一周前,这个工作正常。但是几天前,客户报告他们正在获取报告的数据库登录提示(只有一个报告,其余的工作正常)。我们很难过,但我们设法在没有安装visual studio或sql server的上网本上重现它。最后,开发人员决定重现该报告,希望在该特定报告中这只是一个奇怪的问题。

不幸的是,今天的新客户也遇到了同样的问题,但这一次是他们所有的水晶报告 - 而且他们也在上网本上工作,所以我们真的很失落。

以下是我们的客户提供的屏幕截图 -

Screenshot http://img404.imageshack.us/img404/1375/loginf.png

以下是我用来在报告中设置连接信息的代码

                cI.ServerName = (string)builder["Data Source"];
                cI.DatabaseName = (string)builder["Initial Catalog"];
                cI.UserID = (string)builder["User ID"];
                cI.Password = (string)builder["Password"];

                foreach (IConnectionInfo info in cryRpt.DataSourceConnections)
                {
                    info.SetConnection(cI.ServerName, cI.DatabaseName, cI.UserID, cI.Password);
                }

                foreach (ReportDocument sub in cryRpt.Subreports)
                {
                    foreach (IConnectionInfo info in sub.DataSourceConnections)
                    {
                        info.SetConnection(cI.ServerName, cI.DatabaseName, cI.UserID, cI.Password);
                    }
                }

一如既往,任何帮助都非常感激。

3 个答案:

答案 0 :(得分:2)

问题可能是您设置身份验证信息的方式。您是否考虑过使用ReportDocument.SetDatabaseLogon方法?对报告中的每个唯一数据库连接调用一次。它将无需枚举报告中的所有表格,并且我记得,也需要枚举子报表的表格。

答案 1 :(得分:2)

解决方案发现,结果是客户端用于设置系统的连接构建器没有放入实例名称。相当令人困惑的.net应用程序正常工作。然而,经过整理的水晶报告现在可以完美运行。

感谢您输入Craig。

答案 2 :(得分:0)

寻找类似问题的解决方案让我想到了这个问题。我的问题/解决方案有点不同,但我猜其他人的问题会在这里结束,所以我会在这里发布我的解决方案。

如果您的用户在尝试预览报告时看到类似的内容:

Crystal Reports Viewer screen shot

然后在为报告设置SQL Server登录信息时,请确保包含服务名称。因此,例如,确保您提供Crystal“myserver \ myservice”而不仅仅是“myserver”。

我的程序只能使用“myserver”从SQL Server访问数据,但Crystal需要提供“myserver \ myservice”。