我正在开发一个ASP.NET应用程序。这是一份CR报告。当我第一次编写报告时,我将其硬编码指向我的开发服务器(使用带有Windows集成登录的MSSQL)。因此,当我将我的应用程序移动到生产服务器时,它当然失败了。 我一直在寻找如何将它连接到Web.config中列出的数据库的答案,但没有任何运气。
我看到一个建议,即我在项目中创建了一个数据集并与之相关,但现在我似乎无法使用参数来过滤记录。 我确实看到了另外一个关于如何动态更改数据库源的建议,但这是为那些想要在中间会话中更改数据库的人设计的,而不是依赖于机器,并且看起来有点过分。
有没有人有一个很好的简单解决方案?我一直在研究这个问题太长时间了,觉得我要拍电脑了(这会教给你一个教训)。 : - (
答案 0 :(得分:2)
public static class ReportDocumentExtensions
{
public static void SetConnectionInfo(this ReportDocument report, ReportContextArgs context)
{
SetConnectionInfo(report, context.UserId, context.Password, context.ServerName, context.DatabaseName);
}
public static void SetConnectionInfo(this ReportDocument report, string userId, string password, string serverName, string databaseName)
{
foreach (Table oTable in report.Database.Tables)
{
TableLogOnInfo oInfo = oTable.LogOnInfo;
ConnectionInfo oConnection = oTable.LogOnInfo.ConnectionInfo;
oConnection.UserID = userId;
oConnection.Password = password;
oConnection.ServerName = serverName;
oConnection.DatabaseName = databaseName;
oTable.ApplyLogOnInfo(oInfo);
}
}
}
public class ReportContextArgs
{
private string _userId;
private string _password;
private string _serverName;
private string _databaseName;
public string ServerName
{
get { return _serverName; }
set { _serverName = value; }
}
public string UserId
{
get { return _userId; }
set { _userId = value; }
}
public string Password
{
get { return _password; }
set { _password = value; }
}
public string DatabaseName
{
get { return _databaseName; }
set { _databaseName = value; }
}
}