[英]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.