3

我需要一些帮助。

实际上,我已经阅读过这个问题,并且我认为我已经解决了它,但它一直困扰着我。

这是关于开发和生产环境中的不同登录。

这应该是解决方案(EF 和 SQL Server):

SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder((model.Connection as EntityConnection).StoreConnection.ConnectionString);

ConnectionInfo ci = new ConnectionInfo();

ci.ServerName = builder.DataSource;
ci.DatabaseName = builder.InitialCatalog;
ci.UserID = builder.UserID;
ci.Password = builder.Password;

report.SetDatabaseLogon(ci.UserID, ci.Password, builder.DataSource, ci.DatabaseName);

foreach (CrystalDecisions.CrystalReports.Engine.Table tbl in report.Database.Tables)
{
    TableLogOnInfo logon = tbl.LogOnInfo;
    logon.ConnectionInfo = ci;
    tbl.ApplyLogOnInfo(logon);
}

我从实体连接中提取登录信息并将其应用于报告中的所有表。这应该够了吧。我添加了 SetDatabaseLogon() 只是为了确定,但这不是必需的。

现在,当我在生产环境中运行报告时,报告会弹出一个数据库登录屏幕,显示正确的服务器名称(生产服务器),数据库旁边没有任何内容(这是我关心的),正确的用户名,没有密码,要求输入登录信息.

我输入它,但 CR 说“登录失败。请重试”。我的意思是WTF。我使用相同的凭据通过 Management Studio 连接到数据库。

我正在使用 WPF 查看器,顺便说一句。

我真的卡在这里了,我做了一些调试,连接信息得到了所有正确的数据,所以一定要报告谁是罪魁祸首,但我该怎么办?

任何帮助,将不胜感激。我希望有人在我之前遇到过同样的问题。

问候

4

3 回答 3

5

我在使用“SetDatabaseLogon”时遇到问题

我改变了

report.DataSourceConnections[0].SetConnection("Servername","InitialCatalog", "UserID", "Password");

我希望这对某人有帮助。

于 2017-10-16T21:13:37.900 回答
1

查看我的博客文章中执行相同工作的代码,我可以看到一些不同之处:

  • 设置tbl.Location为自身(这可能是在内部重新初始化某些东西——没有它就无法工作)。
  • 将您的代码放入可以重新调用以处理子报告的方法中:
  • 我的版本永远不需要调用report.SetDatabaseLogon

除此之外,它们基本相同。

代码:

void SetConnection(ReportDocument rd, crConnectionInfo ci)
{

    foreach (CrystalDecisions.CrystalReports.Engine.Table tbl in rd.Database.Tables)
    {
        TableLogOnInfo logon = tbl.LogOnInfo;
        logon.ConnectionInfo = ci;
        tbl.ApplyLogOnInfo(logon);
        tbl.Location = tbl.Location;
    }
    if (!rd.IsSubReport) {
        foreach {ReportDocument sd in rd.SubReports) {
            SetConnection(sd,ci)
        }
    }
}

(注意:只是手动编码,所以在使用之前检查它)。

这适用于 VS2008 版本的水晶报告(忘记它叫什么)。

编辑:另一件事,在我的连接初始化中,有几个额外的属性集:

ci.Type = ConnectionInfoType.SQL;
ci.IntegratedSecurity = false;
于 2012-08-06T08:48:41.653 回答
0

这完全是愚蠢的问题,我偶然解决了它。在我的台式计算机上安装 Crystal Reports 时出现了问题,所以每当我使用数据库专家编辑某些内容(例如添加一些表格)时,它都会破坏我的报表。我所做的只是在我的笔记本电脑上使用“设置数据库位置”选项,现在我的报告运行完美。

于 2012-08-06T19:05:44.527 回答