【问题标题】:Crystal Report in Visual Studio web application throws 'Prompting information is missing' errorVisual Studio Web 应用程序中的 Crystal Report 引发“缺少提示信息”错误
【发布时间】:2020-08-25 13:41:47
【问题描述】:

我正在使用 Crystal Reports 在 Visual Studio 2019 中的 c# mvc Web 应用程序中创建报表。该报表有 6 个子报表,每个子报表都使用与主报表相同的参数 ['billId']。该报告在本地和我们的开发服务器上运行良好,两者都连接到相同的数据库服务器,如 .rpt 文件中所定义。但是,当我使用不同的数据库服务器部署到我们的测试环境时,它当然无法连接。我们正在使用集成安全性。

然后,我添加了代码来循环遍历所有表和子报表(及其关联的表),以编程方式为每个表指定数据库服务器和登录信息。当我单步执行代码时,这似乎有效,但最终在传递我们所有代码后的某个时间抛出“提示信息丢失”错误。

我在 SAP 支持网站上找到的唯一建议是“更新子报表链接”。这些链接看起来都很好,或者我只是不明白“更新子报表链接”的真正含义。

这是我们的代码块:

var conn = new SqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString);
var connectionInfo = new ConnectionInfo();
connectionInfo.ServerName = conn.DataSource;
connectionInfo.DatabaseName = "OurDatabaseName";
connectionInfo.IntegratedSecurity = true;
connectionInfo.Type = ConnectionInfoType.SQL;

if (Request.QueryString["billId"] != null)
{
    var reportName = Request.QueryString["reportName"];
    var billId = Int32.Parse(Request.QueryString["billId"]);
    ReportDocument rd = new ReportDocument();
    string path = Server.MapPath("~") + "Reports//" + reportName;
    rd.Load(path);
    rd.SetParameterValue("billId", billId);

    TableLogOnInfo crTableLogOnInfo = new TableLogOnInfo();
    Tables crTables = rd.Database.Tables;
    foreach (Table crTable in crTables)
    {
        crTableLogOnInfo = crTable.LogOnInfo;
        crTableLogOnInfo.ConnectionInfo = connectionInfo;
        crTable.ApplyLogOnInfo(crTableLogOnInfo);
    }

    foreach (ReportDocument crSubReport in rd.Subreports)
    {
        foreach (Table crSubTable in crSubReport.Database.Tables)
        {
            TableLogOnInfo crSubTableLogOnInfo = crSubTable.LogOnInfo;
            crSubTableLogOnInfo.ConnectionInfo = connectionInfo;
            crSubTable.ApplyLogOnInfo(crSubTableLogOnInfo);
        }
        rd.SetParameterValue("billId", billId, crSubReport.Name.ToString());
    }
}

CrystalReportViewer1.RefreshReport();
CrystalReportViewer1.ReportSource = rd;
CrystalReportViewer1.EnableDatabaseLogonPrompt = false;

生成的堆栈跟踪:

[COMException (0x80004005): Prompting information is missing.]
   CrystalDecisions.ReportAppServer.Prompting.IPromptEngine.startPrompting(PromptingUnits units, CRPromptingInfoProvider infoProvider, PromptingOption option) +0
   CrystalDecisions.ReportSource.EromReportSourceBase.DoParameterPrompting(PromptingRequestContext reqContext) +601
   CrystalDecisions.CrystalReports.Engine.FormatEngine.DoParameterPrompting(PromptingRequestContext reqContext) +44
   CrystalDecisions.ReportSource.LocalReportSourceBase.DoParameterPrompting(PromptingRequestContext reqContext) +155
   CrystalDecisions.Web.ReportClosedExceptionHandlingReportSource.DoParameterPrompting(PromptingRequestContext reqContext) +41
   CrystalDecisions.Web.ReportAgentBase.DoPrompting(PromptingHTMLRenderOption htmlOption) +105
   CrystalDecisions.Web.Components.ParamComponent.ShowFullPrompt() +62
   CrystalDecisions.Web.Components.ParamComponentBase.HandleException(Exception e) +58
   CrystalDecisions.Web.CrystalReportViewer.HandleExceptionAndPromptIfNeeded(Exception x, EnumAspNetLifeCycleStage stage) +297
   CrystalDecisions.Web.CrystalReportViewer.OnPreRender(EventArgs e) +106
   System.Web.UI.Control.PreRenderRecursiveInternal() +166
   System.Web.UI.Control.PreRenderRecursiveInternal() +236
   System.Web.UI.Control.PreRenderRecursiveInternal() +236
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +4714

任何想法或其他已知有效的代码模式将不胜感激!谢了。

【问题讨论】:

    标签: c# visual-studio model-view-controller crystal-reports


    【解决方案1】:

    此问题已解决。

    我们的本地开发机器已通过 CRforVS13SP27_0-10010309.EXE 安装了 Crystal for Visual Studio

    我们安装了最新版本,CRforVS13SP28_0-10010309.EXE。重新启动后,这解决了“缺少提示信息”错误。

    随后,我们删除了这行代码:

    CrystalReportViewer1.RefreshReport();
    

    修复了报告提示输入 billID 的后续问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多