0

我有一个正在开发的 ASP.NET 应用程序。其中有一份 CR 报告。当我第一次编写报告时,我将它硬编码为指向我的开发服务器(使用带有 Windows 集成登录的 MSSQL)。因此,当我将我的应用程序移至生产服务器时,它当然失败了。我一直在寻找有关如何将其连接到 Web.config 中列出的数据库的答案,但没有任何运气。

我看到一个建议,我在我的项目中创建一个数据集并与之相关,但现在我似乎无法使用参数来过滤记录。我确实看到了另一个关于如何动态更改数据库源的建议,但这是为那些想要在会话中更改数据库的人设计的,而不是依赖于机器,而且似乎有点矫枉过正。

有没有人有一个很好的简单解决方案?我一直在研究这个问题太久了,感觉我要拍我的电脑了(这会给它一个教训)。:-(

4

1 回答 1

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; }
    }
}
于 2012-05-12T01:31:11.183 回答