Crystal Reports - 创建列范围为[col1 ... col60]的子报表作为数据源?

问题描述 投票:0回答:1

我擅长SQL和CR,但这是我从来没有做过的事情。

在CR中,我加载一个总是包含1条记录的表。有一系列列(如Column1,Column2 ... Column60)。 (糟糕的设计,我知道,但我不能做任何事情来改变它)。

感谢这个旧设计,我必须手动添加报表中的每一列,如下所示:

-----------
|  TABLE  |
-----------
| Column1 |
| Column2 |
| Column3 |
| ...     |
-----------

现在我希望能够以[Column1 ... Column60]成为集合[Row1 ... Row60]的方式创建子报表并为其创建数据源。我希望能够使用子报表的detail部分来动态生成表。那会节省我很多时间。

有没有办法做到这一点?也许对我的想法有不同的看法?

编辑

@Siva:我会以最好的方式描述它。该表存在于500多列中,只能保存1条记录(从不更多)。因为在创建这些表(目标C / DBF年龄)这些列时,从未考虑过规范化:Brand01,Brand02,Brand03 ...... Brand60应该放在一个名为“Brands”的单独表中

考虑到只有一条记录,该文件本身非常简单。但是有些列必须进行旋转(垂直堆叠)并放置在文档的表格布局中,如果必须手动完成,这需要很多工作。这就是为什么我想将一系列列提供到子报表中,以便我可以使用子报表的详细信息部分自动生成表格布局。

crystal-reports transpose subreport
1个回答
1
投票

好了......我会尽量回答......

您需要在报告中有2列,将显示60列名称作为第1列为60行,第2列为60列数据。为此,我可以想到两种方式。

  1. 如果列是静态的并且报告只需要开发一次,那么虽然它是一个艰难的工作,但是为行名创建120个公式60,其中您将为列名称写入60,为各列的数据写入60并放入报告,因为您只有一个记录将得到正确的数据。如下所示:

公式1:

column1 name // write manually

公式1:

databasefield for column1 // this has data for column1

上面将是这样的报告中的一行,你将获得120个公式60行,你不需要子报告这里主报告将完成这项工作。

  1. 由于您期望动态行为(虽然列是静态的),您可以从数据库透视图或数据表创建视图(请注意我不知道数据表根据您的方便使用它)。

以这样的方式创建它在表中有2列,并在报表中使用交叉表,它将为您提供动态行为。

在交叉表中,column1将是行部分,列2将是数据。

在这里我也没有看到任何子报告的要求,你可以直接使用主报告。如果你想要子报告你也可以使用,因为你只有1条记录

© www.soinside.com 2019 - 2024. All rights reserved.