星期三, 7月 08, 2009

Crystal Report 在 Web 應用程式無法登入到 SQL Server

使用VS2008里的Crystal Report連SQL-Server時,可能會發生以下問題


在 '/' 更應用程式伺服器錯誤
-----------------------------------------------------------
離線失敗。.

說明: 在執行的目前 Web 要求期間發生未處理的例外狀況發生。 請檢閱堆疊追蹤以取得錯誤的詳細資訊,以及在程式碼中產生的位置。.

例外狀況詳細資料: CrystalDecisions.CrystalReports.Engine.LogOnException: 登入失敗

或是需要使用者打入登入資訊。發生原因如下(引述http://support.microsoft.com/kb/319264/zh-tw)

基於安全理由, SQL Server 密碼在 Run Time 不會保存在 Crystal Report。

這時就可以在執行階段變更資料庫位置的功能。來解決此問題。
在顯示的程式碼裡加入以下程式碼。



//隱藏部分的文章

//記得要引入這兩個命名空間
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;

protected void Page_Load(object sender, EventArgs e)
{
//
ConnectionInfo connectionInfo = new ConnectionInfo();
SetDBLogonForReport(connectionInfo);
//主機位置
connectionInfo.ServerName = "XXX.XXX.XXX.XXX";
//資料庫名稱
connectionInfo.DatabaseName = "Adventure Works";
//登入帳號
connectionInfo.UserID = "XX";
//登入密碼
connectionInfo.Password = "XXXXX";
}
private void SetDBLogonForReport(ConnectionInfo connectionInfo)
{
//這裡的CrystalReportView1是看你物件ID
TableLogOnInfos tableLogOnInfos = CrystalReportViewer1.LogOnInfo;

foreach (TableLogOnInfo tableLogOnInfo in tableLogOnInfos)
{
tableLogOnInfo.ConnectionInfo = connectionInfo;
}
}


參考文章:
http://support.microsoft.com/kb/319264/zh-tw
http://msdn.microsoft.com/zh-tw/library/ms227536.aspx

沒有留言:

Analytics