繁体   English   中英

水晶报表和登录问题

[英]Crystal Reports and Login issue

我需要协助。

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

它与开发和生产环境中的不同登录名有关。

这应该是解决方案(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查看器,顺便说一句。

我确实被困在这里,我已经进行了一些调试,并且连接信息会获取所有正确的数据,因此必须报告是谁是罪魁祸首,但是我该怎么办?

任何帮助,将不胜感激。 我希望有人在我面前偶然发现了同样的问题。

问候

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

我改变了

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

我希望这对某人有帮助。

查看我的Blog Post上执行相同工作的代码,我可以看到一些区别:

  • tbl.Location设置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;

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM