2010-05-11 67 views
5

在谷歌上花費了3到4小時,試圖找到解決我的問題的方法後,我沒有多少運氣。水晶報表數據庫登錄失敗

基本上,我們用我們的.NET應用程序的Crystal Reports與SQL服務器後端,我們有很多客戶,每個都有自己的服務器,因此我們的報道需要有自己的連接動態地設置。直到一個星期前,這工作得很好。然而,幾天前,一位客戶報告他們正在獲取數據庫登錄提示以獲得報告(只有一份報告,其餘的工作正常)。我們很難過,但我們設法在沒有安裝visual studio或sql server的上網本上重現它。最後,開發者決定複製報告,希望這篇報道只是一個怪事。

不幸的是,新的客戶端今天也經歷了同樣的問題,但這次對每一個晶體報告他們 - 也他們製作的上網本,所以我們真的很丟在這裏。

下面是什麼我們的客戶得到帶有截圖 -

Screenshot http://img404.imageshack.us/img404/1375/loginf.png

,這裏是我用來設置連接信息報告

   cI.ServerName = (string)builder["Data Source"]; 
       cI.DatabaseName = (string)builder["Initial Catalog"]; 
       cI.UserID = (string)builder["User ID"]; 
       cI.Password = (string)builder["Password"]; 

       foreach (IConnectionInfo info in cryRpt.DataSourceConnections) 
       { 
        info.SetConnection(cI.ServerName, cI.DatabaseName, cI.UserID, cI.Password); 
       } 

       foreach (ReportDocument sub in cryRpt.Subreports) 
       { 
        foreach (IConnectionInfo info in sub.DataSourceConnections) 
        { 
         info.SetConnection(cI.ServerName, cI.DatabaseName, cI.UserID, cI.Password); 
        } 
       } 

一如既往的代碼,非常感謝任何幫助。

回答

2

發現的解決方案,它變成了連接生成器,使用的客戶建立自己的系統並沒有把實例名,而是容易混淆的.NET應用程序工作正常與它這樣的。然而,現在這種排序的水晶報告現在可以完美地工作。

感謝您的輸入Craig。

+0

我正面臨一個類似的問題,你能告訴你連接建設者在這裏和你的代碼中是什麼意思嗎?謝謝 – 2015-08-09 08:09:59

2

也許問題是,您將身份驗證信息的方式。你有沒有考慮使用ReportDocument.SetDatabaseLogon方法?在報告中爲每個唯一的數據庫連接調用一次。它不需要列舉報告中的所有表格,並且我記得還需要列舉子報表的表格。

+0

我也想你的建議,但我仍然得到同樣的錯誤與測試 - 但是,現在它已經得到了在登錄提示數據庫名。儘管如果我嘗試輸入正確的密碼仍然失敗。 – Marlon 2010-05-12 08:33:12

+0

數據庫字段是否已設置? 如果您在報告提示時提供正確的登錄憑據,報表是否按預期工作? – craig 2010-05-12 13:01:13

+0

如果將值硬編碼到SetDatabaseLogon中,例如reportDocument。SetDatabaseLogon(「帳戶」,「密碼」,「數據庫」,「服務器」),它的工作?爲確保子報表的登錄信息正在設置,請將此位添加到子報表循環中。讓我知道它是如何工作的,我們將嘗試下一個測試。 – craig 2010-05-12 13:14:46

0

尋找類似問題的解決方案給我帶來了這個問題。我的問題/解決方案有點不同,但我猜測其他人的問題最終會在這裏,所以我會在這裏發佈我的解決方案。

如果當試圖預覽報表的用戶看到這樣的事情:

Crystal Reports Viewer screen shot

然後設置報表的SQL Server登錄信息時,一定要包括服務名。因此,例如,確保你給水晶「myserver \ myservice」而不是「myserver」。

我的程序能夠訪問使用只是「MYSERVER」從SQL Server的數據,但水晶需要給予「MYSERVER \爲MyService」。