Crystal reports 在应用程序中查看报告时,当移动到下一页时,参数提示将重新显示

Crystal reports 在应用程序中查看报告时,当移动到下一页时,参数提示将重新显示,crystal-reports,paging,Crystal Reports,Paging,我对crystal reports几乎是个新手。我们有另一个团队制作报告,我正在将其与应用程序集成。问题在于分页和用户定义的参数。本质上,document.table。setdatasource指向代码中的查询结果集。打开报告后,将提示用户输入参数,这将进一步减少向用户显示的结果,因为提示参数是记录选择公式的一部分 AND {@Age} >= 20 and {@Age} < 30 and {Report;1.Sector} = {?NewSector}) 这将返回一个长度超过一页的

我对crystal reports几乎是个新手。我们有另一个团队制作报告,我正在将其与应用程序集成。问题在于分页和用户定义的参数。本质上,document.table。setdatasource指向代码中的查询结果集。打开报告后,将提示用户输入参数,这将进一步减少向用户显示的结果,因为提示参数是记录选择公式的一部分

AND
{@Age} >= 20 and
{@Age} < 30 and
{Report;1.Sector} = {?NewSector})
这将返回一个长度超过一页的表。但是,请求下一页将导致再次提示用户输入扇区,一旦提供,将再次将用户带回结果的第1页

如果我去掉对参数的引用,那么显然分页工作正常

是否只需从用户获取一次参数,然后在后续分页请求中重用该值


谢谢你的帮助

我真傻。每次回邮我都让报告刷新

编辑

再详细一点:

我在RefreshReports过程中创建了报告,该过程按如下方式设置报告:

 Dim objConnectionInfo As CrystalDecisions.Shared.ConnectionInfo
    Dim crConnectionInfo As CrystalDecisions.Shared.ConnectionInfo

    Dim myconnection As New SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings(ApplicationConstants.MyDB).ConnectionString)
    Dim myConnBuilder As New SqlConnectionStringBuilder(myconnection.ConnectionString)

    '// Log on credentials from web.config
    objConnectionInfo = New CrystalDecisions.Shared.ConnectionInfo
    objConnectionInfo.IntegratedSecurity = False
    objConnectionInfo.ServerName = myconnection.DataSource
    objConnectionInfo.UserID = myConnBuilder.UserID
    objConnectionInfo.Password = myConnBuilder.Password

    crConnectionInfo = objConnectionInfo


    '// Get the report details needed
    rep = Request.QueryString("Report")
    crDoc.Load(Server.MapPath(rep))
    crDoc.SetDatabaseLogon(myConnBuilder.UserID, myConnBuilder.Password)

    Dim crDatabase As CrystalDecisions.CrystalReports.Engine.Database

    Dim crTables As CrystalDecisions.CrystalReports.Engine.Tables
    Dim aTable As CrystalDecisions.CrystalReports.Engine.Table

    crDatabase = crDoc.Database
    crTables = crDatabase.Tables
然后还有一系列类似以下的其他IF:

ElseIf rep = "ExampleRep.rpt" Then
        For Each aTable In crTables
            If aTable.Name = "GetSectorRep;1" Then
                Dim NewSector As String = ""
                    NewSector = Session("NewSector").ToString()
                aTable.SetDataSource(DAL.GetSectorRepTable(NewSector))
            End If
        Next
在我的Page_Init中,我获取所需的查询字符串并调用RefreshReports。我遇到的问题是,我还在页面加载的If回发中请求RefreshReports,这意味着每次报告回发(例如新页面)时,它都会再次请求参数,因为报告是重新创建的

所以,愚蠢的我——最后是一个明显的错误