动态设置水晶报表仍要求分贝登录(Dynamically set Crystal Report sti

2019-08-02 08:12发布

我试图部署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种数据源。 一个是从分贝的表,而另一个是从存储过程的结果。 现在我了解到,是额外登录的原因。

Answer 1:

看看我的博客文章在这里这一点。

有一对夫妇的要求行动,但主要是创建一个新的TableLogOnInfo实例,然后使用申请ApplyLogOnInfo



Answer 2:

你必须为每个凭据datasouce报告。

理想情况下,该报告将有一个单一的datasource 。 如果这是不可能的,你需要为每个每个凭证或数据。

像这样的东西效果很好,如果你想提供的数据:

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

否则,像这样将允许报告直接访问数据库的每个datasource

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


文章来源: Dynamically set Crystal Report still asks for db login