0

全部,

我在 VS2010 中使用水晶报表。我想执行一个查询,将记录列为行,并作为您喜欢的子查询,在类似于流布局(.Net/Java 样式)的内容中显示记录。

我正在执行一个存储过程来获取我的数据,例如:

SELECT Table1.Field1 AS Title
       Table2.Field1 AS RowRecord1
       Table2.Field2 AS RowRecord2
       Table3.Field1 AS DataRecord

FROM Table1 
JOIN Table2 ON Table1.id = Table2.table1_id
JOIN Table3 ON Table2.id = Table3.table2_id

所以 Table1 是顶级父级,Table2 是中间级,Table3 有我想要以不同方式显示的子数据 - 不是连续显示。

所以选择中的虚拟数据将如下所示:

Title      RowRecord1    RowRecord2   DataRecord
My Test    Some Row1     Test 1       D1
My Test    Some Row1     Test 1       D2
My Test    Some Row1     Test 1       D3
My Test    Some Row1     Test 1       D4
My Test    Some Row1     Test 1       D5
My Test    Some Row2     Test 222     D1
My Test    Some Row2     Test 222     D2
My Test    Some Row2     Test 222     D3

所以我希望整体报告如下所示:

**My Test** 

Some Row1   Test 1

D1   D2   D3   D4
D5

Some Row2   Test 222

D1   D2   D3

DataRecord 将从左到右(单个值)填充该部分 - 在流布局中。

理想情况下,如果可能的话,我想知道如何在 Crystal 中做到这一点。如果没有,我会听取其他想法或解决方案。我已经尝试了一些无济于事的事情,并且还没有在网上找到任何东西。

谢谢,

安德斯

4

1 回答 1

1

我认为这样的事情应该有效:

Crystal 中的第一组 by Title, RowRecord1,RowRecord2

然后创建三个公式:

在最深的组标题中放置:

WhilePrintingRecords;
Global numberVar count := 0;
StringVar ConCat:= "";

详细部分:

WhilePrintingRecords;
StringVar ConCat;
Global NumberVar count;

   if ((count Mod 4) = 0) then
       ConCat:= ConCat & {DBTABLE.DataRecord} & ChrW(13) //adds a line break
   else 
       Concat := Concat & {DBTABLE.DataRecord};
   count := count + 1    

   ConCat

在组页脚中

WhilePrintingRecords;
StringVar ConCat;
Concat;
于 2012-08-15T09:08:10.183 回答