2010-05-11 66 views
5

在谷歌上花费了3到4小时,试图找到解决我的问题的方法后,我没有多少运气。水晶报表数据库登录失败

基本上,我们用我们的.NET应用程序的Crystal Reports与SQL服务器后端,我们有很多客户,每个都有自己的服务器,因此我们的报道需要有自己的连接动态地设置。直到一个星期前,这工作得很好。然而,几天前,一位客户报告他们正在获取数据库登录提示以获得报告(只有一份报告,其余的工作正常)。我们很难过,但我们设法在没有安装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); 
        } 
       } 

一如既往的代码,非常感谢任何帮助。

回答

2

发现的解决方案,它变成了连接生成器,使用的客户建立自己的系统并没有把实例名,而是容易混淆的.NET应用程序工作正常与它这样的。然而,现在这种排序的水晶报告现在可以完美地工作。

感谢您的输入Craig。

+0

我正面临一个类似的问题,你能告诉你连接建设者在这里和你的代码中是什么意思吗?谢谢 – 2015-08-09 08:09:59

2

也许问题是,您将身份验证信息的方式。你有没有考虑使用ReportDocument.SetDatabaseLogon方法?在报告中为每个唯一的数据库连接调用一次。它不需要列举报告中的所有表格,并且我记得还需要列举子报表的表格。

+0

我也想你的建议,但我仍然得到同样的错误与测试 - 但是,现在它已经得到了在登录提示数据库名。尽管如果我尝试输入正确的密码仍然失败。 – Marlon 2010-05-12 08:33:12

+0

数据库字段是否已设置? 如果您在报告提示时提供正确的登录凭据,报表是否按预期工作? – craig 2010-05-12 13:01:13

+0

如果将值硬编码到SetDatabaseLogon中,例如reportDocument。SetDatabaseLogon(“帐户”,“密码”,“数据库”,“服务器”),它的工作?为确保子报表的登录信息正在设置,请将此位添加到子报表循环中。让我知道它是如何工作的,我们将尝试下一个测试。 – craig 2010-05-12 13:14:46

0

寻找类似问题的解决方案给我带来了这个问题。我的问题/解决方案有点不同,但我猜测其他人的问题最终会在这里,所以我会在这里发布我的解决方案。

如果当试图预览报表的用户看到这样的事情:

Crystal Reports Viewer screen shot

然后设置报表的SQL Server登录信息时,一定要包括服务名。因此,例如,确保你给水晶“myserver \ myservice”而不是“myserver”。

我的程序能够访问使用只是“MYSERVER”从SQL Server的数据,但水晶需要给予“MYSERVER \为MyService”。