我正在尝试部署Crystal Reports
in my MVC
应用。为了充分利用 Crystal Report Viewer,我必须使用webform
,它在我的开发环境中运行得相当好。
该应用程序将部署在用户的服务器上并连接到他们的个人数据库。这意味着我在设计报表或应用程序时没有最终的连接信息。
我能够使用 web.config 文件中的条目成功连接,加载DataTable
与报告信息,并将其传递给报告。但是,该报告仍然要求提供数据库凭据。该报告设置为连接到我的数据库,因此它要求我提供凭据,如果没有这些凭据,它将无法继续。然而,最终报告显示了来自他们数据库的正确信息。
我不确定是否需要更改报告中或后面的代码中的某些内容。这就是我设置报告的方式ReportSource
now:
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>");
}
}
如何防止报告要求提供原始凭据?
EDIT:
如果我像这样将登录信息传递到我的数据库:
rd.SetDatabaseLogon("username", "password");
我没有再次登录数据库。凭据必须适用于用于创建报告的数据库,但显示的结果来自DataTable
按照上面的方法填充。如果它有当前数据库所需的数据,为什么需要连接到原始数据库?
EDIT2:
我有这个报告的 2 个数据源。一个是数据库中的表,另一个是存储过程的结果。我现在了解到这是额外登录的原因。