Crystal reports Crystal Reports:交叉选项卡列排列

Crystal reports Crystal Reports:交叉选项卡列排列,crystal-reports,reporting,report,crystal-reports-2008,Crystal Reports,Reporting,Report,Crystal Reports 2008,我在交叉表中寻找出路,这样,如果列在交叉表中超过,它们就不应该进入下一页。相反,新的交叉表应该在第一页之后重复 例如,交叉选项卡中显示两列: 现在,如果添加了一个新列,并且假设它不能容纳在给定的页面宽度限制内,那么默认情况下,它将转到CR中它旁边的页面 但在我的报告中,它需要显示在第一个交叉选项卡下方(而不是下一页),如下所示: 如果有出路,请一定向我建议:) 提前感谢您的问题非常合理,但我非常确定,在CR-XI中,没有自动的方法可以做到这一点。我建议完全跳过交叉选项卡设计器,只制作自己的:

我在交叉表中寻找出路,这样,如果列在交叉表中超过,它们就不应该进入下一页。相反,新的交叉表应该在第一页之后重复

例如,交叉选项卡中显示两列:

现在,如果添加了一个新列,并且假设它不能容纳在给定的页面宽度限制内,那么默认情况下,它将转到CR中它旁边的页面

但在我的报告中,它需要显示在第一个交叉选项卡下方(而不是下一页),如下所示:

如果有出路,请一定向我建议:)


提前感谢

您的问题非常合理,但我非常确定,在CR-XI中,没有自动的方法可以做到这一点。我建议完全跳过交叉选项卡设计器,只制作自己的:

  • 使用正好有1条记录的占位符表创建新CR
  • 在此CR中,取消显示除“详细信息”部分以外的所有内容。添加一个新的详细信息部分,这样您将有Da和Db
  • 在Da中,添加子报表。使用真实的数据源并添加Column1和Column2
  • 在Db中,添加子报表。使用真实的数据源并添加Column3和Column4
  • 我没有时间测试这个,但我认为它会按照您的要求显示所有列

    (代替步骤1,您可能可以在报表中使用只有1个组的placegrouper组。然后,在添加子报表时,确保不添加任何指向主报表的链接。)

    编辑 动态的列数使得在Crystal中执行此请求更加困难

  • 也许您可以从脚本自动生成整个报告。我帮不了你,但我相信StackOverflow上的其他人会的

  • 您可以使用MS Excel实现类似的功能。使用MS Access或类似工具设置数据的交叉表。打开一个新的Excel工作簿,并使用数据->导入外部数据->导入数据导入交叉选项卡数据源(这将导入整个表,而不考虑行数)。在页面设置中将设置更改为适合(空白)宽1页高的页面。您可以按自己的喜好格式化数据,格式将保留。此Excel方法将把所有列压缩到一页宽的区域中。这不完全是你想要的,但它会起作用的

  • 列的数量可能是动态的,但您知道字段名可能是什么吗?例如,您的列包含0-50个美国州,那么您就知道这些列的名称是什么,而不是哪些或多少。如果这是您的情况,请使用我的第一个建议(勾选如果为空则抑制选项以隐藏不需要的子报告)。它不会很漂亮(有很多空白),但它可以完成工作


  • 一种可能的解决方案可以是多列报告。但是很难使行标签和值在同一行中

    如果您可以创建一个额外的行分组,那么您就有了所需的解决方案。例如,如果您的列在示例中有类似的编号。然后您可以添加如下公式:

    columnId \ 2
    

    您好,PowerUser,感谢他们的回复。当我们知道列计数的数目时,此方法就可以工作。但是在我的应用程序中,用户输入了一些项目,并且应该为每个项目生成一列。因此,只能使用Cross-Tab实现。您好,谢谢您的回复。你是对的,这是不可能的。我也花了两天的时间来解决这个问题,并访问了所有的论坛。但是我的客户还没有准备好接受这种格式(我想实现的是可能的,但这只会增加不必要的编码:)再次感谢。。!!你回应26秒后,我把选项3放进去了。你们觉得这个怎么样?谢谢,伙计们,我通过编程解决了这个问题。我刚刚看到页面宽度可以容纳多少列,并将列ID传递给RecordSelection Fromula。现在,如果超过了列计数,它们将出现在下面的子报表中的新ReportHeaderSection中。此子报表与ReportHeaderSection1中的交叉表相同。如果列计数较少,则ReportHeaderSection2将被抑制。