0

開発中の ASP.NET アプリケーションがあります。その中にCRレポートがあります。最初にレポートを書いたとき、開発サーバーを指すようにハード コードしました (Windows 統合ログインで MSSQL を使用)。そのため、アプリを本番サーバーに移動すると、もちろん失敗しました。Web.configにリストされているDBに接続する方法についての答えを探していましたが、うまくいきませんでした。

プロジェクトでデータセットを作成し、それに関連付けるという提案を 1 つ見ましたが、パラメーターを使用してレコードをフィルター処理することはできないようです。オンザフライで DB ソースを変更する方法に関する別の提案を見ましたが、これは、マシンに依存するのではなく、セッションの途中で DB を変更したい人向けに設計されており、やり過ぎに思えました。

誰もが素敵な簡単な解決策を持っていますか? 私はこの問題にあまりにも長い間取り組んできたので、自分のコンピューターを撃ち落とそうとしているように感じます (それは教訓になります)。:-(

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 に答える