アプリケーションにデプロイしようとし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つはストアドプロシージャからの結果です。私は今、それが余分なログインの原因であることを学びました。