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