我试图部署Crystal Reports
在我的MVC
应用程序。 为了得到充分利用水晶报表查看器,我必须使用一个webform
,这是在我的开发环境中工作得相当好。
该应用程序将被部署在用户的服务器上,并连接到他们的个人DBS。 这意味着设计报表或应用程序时,我没有最终的连接信息。
我能够使用在web.config文件中的条目成功连接,加载DataTable
与报告的信息,并将其传递到报告中。 然而,报告仍然要求的数据库凭据。 该报告被设置为连接到我的分贝,所以它要求我的凭据,没有他们将不会进行。 然而,最终的报告显示,从他们的分贝正确的信息。
我不知道我是否需要改变在报告中的东西,或者在后面的代码。 这是怎么了设置报告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");
我不要再拿到数据库登录。 凭据必须是用于创建报表的数据库,但是显示的结果是从DataTable
填入上述方法。 如果它有它从当前数据库所需要的数据,为什么它需要连接到原来的数据库?
EDIT2:
我对这个报告2种数据源。 一个是从分贝的表,而另一个是从存储过程的结果。 现在我了解到,是额外登录的原因。