0

アプリケーションにデプロイしようとしCrystal ReportsていMVCます。Crystal Report Viewerを最大限に活用するにはwebform、開発環境でかなりうまく機能しているを使用する必要があります。

アプリケーションはユーザーのサーバーにデプロイされ、個人のデータベースに接続します。これは、レポートまたはアプリケーションを設計するときに、最終的な接続情報がないことを意味します。

web.configファイルのエントリを使用して正常に接続しDataTable、レポート情報をロードして、レポートに渡すことができます。ただし、レポートは引き続きdb資格情報を要求しています。レポートはデータベースに接続するように設定されているため、クレデンシャルを要求され、クレデンシャルがないと続行されません。ただし、最終レポートには、データベースからの正しい情報が表示されます。

レポートまたはコードビハインドで何かを変更する必要があるかどうかわかりません。これが私がReportSource今レポートを設定している方法です:

protected void Page_Load(object sender, EventArgs e)
{
    string strReportName = System.Web.HttpContext.Current.Session["ReportName"].ToString();
    try
    {
        ReportDocument rd = new ReportDocument();
        string strRptPath = Server.MapPath("~/") + "Rpts//" + strReportName;
        rd.Load(strRptPath);

        SqlParameter[] sqlParams = {};
        DataTable testDt = DBHelper.GetTable("rptInvtDuplDesc", sqlParams);
        rd.DataSourceConnections.Clear();
        rd.SetDataSource(testDt);
        CrystalReportViewer1.ReportSource = rd;
    }
    else
    {
        Response.Write("<H2>Nothing Found; No Report name found</H2>");
    }
}

レポートが元の資格情報を要求しないようにするにはどうすればよいですか?

編集:

次のようにログインをデータベースに渡すと、次のようになります。

rd.SetDatabaseLogon("username", "password");

dbログインを再度取得しません。クレデンシャルは、レポートの作成に使用されたデータベースのものである必要がありますが、表示される結果は、DataTable上記の方法で入力されたものです。現在のデータベースから必要なデータがある場合、なぜ元のデータベースに接続する必要があるのですか?

EDIT2:

このレポートには2つのデータソースがあります。1つはデータベースからのテーブルで、もう1つはストアドプロシージャからの結果です。私は今、それが余分なログインの原因であることを学びました。

4

2 に答える 2

1

これについては、私のブログ投稿をご覧ください

必要なアクションはいくつかありますが、主なアクションは新しいTableLogOnInfoインスタンスを作成することであり、次に適用するのはを使用することApplyLogOnInfoです。

于 2012-11-05T16:40:58.143 に答える
0

レポートでそれぞれの資格情報を提供する必要がありますdatasouce

理想的には、レポートには単一のが含まれdatasourceます。これが不可能な場合は、それぞれのクレデンシャル、またはそれぞれのデータを提供する必要があります。

データを提供する場合は、このようなものが適切に機能します。

rd.Database.Tables[0].SetDataSource(testDt);
rd.Database.Tables[1].SetDataSource(micssys);

それ以外の場合、このようなものを使用すると、レポートはそれぞれのデータベースに直接アクセスできますdatasource

rd.SetDatabaseLogon("username","password}");
于 2012-11-05T23:16:48.923 に答える