Crystal Reports - “您要求的报告需要更多信息”

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Crystal Reports - “您要求的报告需要更多信息”相关的知识,希望对你有一定的参考价值。

我有一些使用Crystal(Visual Studio外部)创建的Crystal Reports,现在已加载到VS项目中。在预览报表之前,我在报表和所有子报表中设置了这样的报表数据库信息。

        var connectionInfo = new ConnectionInfo();
        connectionInfo.ServerName = "192.168.x.xxx";
        connectionInfo.DatabaseName = "xxxx";
        connectionInfo.Password = "xxxx";
        connectionInfo.UserID = "xxxx";
        connectionInfo.Type = ConnectionInfoType.SQL;
        connectionInfo.IntegratedSecurity = false;

        TableLogOnInfo logon = table.LogOnInfo;
        table.LogOnInfo.ConnectionInfo = connectionInfo;
        table.ApplyLogOnInfo(logon);

报告最初预览时报告正确显示,但当我转到报告预览中的下一页时,我收到消息“您请求的报告需要更多信息”,并再次提示您输入数据库登录信息。一旦我在这里输入,我就不再被提示了。我设置的初始ConnectionInfo似乎没有超过第一页。

我正在使用Crystal XI和Visual Studio 2008。

答案

我发现修复bug的最好方法是将问题发布到StackOverflow,5分钟后自己解决。不用说,我解决了这个问题。

除了在报表对象中设置所有登录信息之外,我还必须在ASP.NET中的Crystal Viewer组件中执行此操作。所以我只是写了一些像这样的代码,一切正常,没有提示。

<CR:CrystalReportViewer Height="500px" ID="Viewer" runat="server" />

var connectionInfo = new ConnectionInfo();
    connectionInfo.ServerName = "192.168.x.xxx";
    connectionInfo.DatabaseName = "xxxx";
    connectionInfo.Password = "xxxx";
    connectionInfo.UserID = "xxxx";
    connectionInfo.Type = ConnectionInfoType.SQL;
    connectionInfo.IntegratedSecurity = false;

for (int i = 0; i < Viewer.LogOnInfo.Count; i++)
{
    Viewer.LogOnInfo[i].ConnectionInfo = connectionInfo;
}
另一答案

尝试将crystal report viewer中的EnableDatabaseLogonPrompt属性设置为false;

另一答案

使用数据表而不是数据集..它的工作原理..

另一答案

把你的编码加载到事件,而绑定报告不要把ispostback = false条件

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    Dim dt As New dsPrintRevisionStatus
    Try
        lblHeader.Text = Request.QueryString("name")
        If lblHeader.Text = "Report- Print Revision Status" Then
            Dim rpt As New rpt_PrintRevisionStatus
            rpt.SetDataSource(sqlHandler.ExecuteDataTable("SELECT * FROM [Print Revision Status]"))
            crtViewer.ReportSource = rpt
            crtViewer.DataBind()

        End If
    Catch ex As Exception
        lblError.Text = ex.Message
    End Try
End Sub
另一答案

我有同样的问题但我找到了一个简单的解决方案。即只是用dataset取代data table,它会正常工作。

另一答案

如果您已添加登录信息,如下所示,

        LogInfo.ConnectionInfo.ServerName = "mcqueen";
        LogInfo.ConnectionInfo.Password = "abc123";
        LogInfo.ConnectionInfo.UserID = "sa";
        LogInfo.ConnectionInfo.DatabaseName = "tbboss";

        crysViewer.LogOnInfo.Add(LogInfo);

简单地把crysViewer.LogOnInfo.Add(LogInfo);在crystal Viewer参数设置结束时。如下。

    LogInfo.ConnectionInfo.ServerName = "mcqueen";
    LogInfo.ConnectionInfo.Password = "abc123";
    LogInfo.ConnectionInfo.UserID = "sa";
    LogInfo.ConnectionInfo.DatabaseName = "tbboss";


    int exportFormatFlags =(int)(CrystalDecisions.Shared.ViewerExportFormats.PdfFormat | CrystalDecisions.Shared.ViewerExportFormats.ExcelFormat);
    crysViewer.AllowedExportFormats = exportFormatFlags;
    crysViewer.ReportSource = Server.MapPath("Reports/Report1.rpt");
    crysViewer.ParameterFieldInfo = paramFields;

    crysViewer.LogOnInfo.Add(LogInfo);
另一答案

使用EnableDatabaseLogonPrompt查看实际错误

另一答案

解决了!..如果它是以“Not IsPostBack”条件写的,请从中删除。我在快照下面解决了这个问题。 enter image description here

Website link

另一答案

未来近在咫尺,但Crystal Reports仍然存在。

我从水晶报告查看器收到这个“错误”。我的问题是使用连续OR创建的动态生成的查询。无效的SQL以某种方式提升了“您请求的报告需要进一步的信息”对话框。

我修复了查询生成逻辑,不再看到对话框了。

以上是关于Crystal Reports - “您要求的报告需要更多信息”的主要内容,如果未能解决你的问题,请参考以下文章

使用Crystal Reports ReportDocument

数据库登录失败:Crystal Reports

Crystal Reports并列数据比较

Crystal Reports动态分组

解决正确案例Crystal Reports

Crystal Reports 8.5网络文件保存