簡體   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