2010-05-06 63 views
0

我在兩臺服務器之間出現問題,使用不同的odbc dsn。在web.config中使用連接字符串進行水晶報告

我的應用工作得很好,但水晶報告使用原始的odbc連接,我該如何解決這個問題?

我想在web.config中使用相同的連接字符串,但我不知道如何。

發現this但太混亂了,我

感謝,

回答

1

不能以同樣的方式,你可以使用一個連接字符串與ado.net連接。但是,您當然可以使用web.config中的值來指定連接信息。創建ConnectionInfo類的實例並設置ServerName,DatabaseName,UserID和Password屬性。然後將其連接到每個報告的表:

ConnectionInfo reportConnectionInfo = new ConnectionInfo(); 
reportConnectionInfo.ServerName = ConfigurationManager.AppSetting["ServerName"]; 
reportConnectionInfo.DatabaseName = ...; 
reportConnectionInfo.UserID = ...; 
reportConnectionInfo.Password = ...; 

foreach (Table table in reportDocument.Database.Tables) { 
    table.LogOnInfo.ConnectionInfo = reportConnectionInfo; 
} 

如果您嘗試使用這個建議,我馬虎打字當心...

+0

有沒有辦法使用連接字符串? – sergiogx 2010-05-06 22:57:08

+0

我不知道有任何方法可以做到這一點 – Ray 2010-05-06 23:59:03

+0

發現我可以將servername設置爲odbc dsn,但它仍然有效,但仍然出現錯誤,我認爲這是另一回事。謝謝 – sergiogx 2010-05-07 00:34:28

1

您可以使用連接字符串。 您必須創建數據庫提供程序ConnectionStringBuilder的實例,以傳遞從配置文件中提取的連接字符串。這裏是VB中的一個例子。

Dim connString As String = ConfigurationManager.ConnectionStrings["MyDbConn"].ConnectionString 
Dim connStringBuilder As SqlConnectionStringBuilder = New SqlConnectionStringBuilder(connString) 

Dim myConnectionInfo As ConnectionInfo = New ConnectionInfo() 
myConnectionInfo.DatabaseName = connectionStringBuilder.InitialCatalog 
myConnectionInfo.UserID = connectionStringBuilder.UserID 
myConnectionInfo.Password = connectionStringBuilder.Password 
myConnectionInfo.ServerName = connectionStringBuilder.DataSource