水晶报告使用一列多个公式

时间:2013-05-07 17:04:58

标签: crystal-reports

好的......我会尽力解释这个...... 我有一个SQL查询,它正在撤回报告所需的正确数据。 这就是它的样子

sample    componentname       enteredvalue  
C1234-1   Am-241 Activity     2.35E+001
C1234-1   Am-241 2s TPU       3.26E-002
C1234-1   Am-241 1s TPU       3.22E-002      
C1234-1   U-238 Activity      6.32E-001
C1234-1   U-238 2s TPU        1.23E+002
C1234-1   U-238 1s TPU        2.00E+001

我需要获取与该组件名关联的componentname和enteredvalue,并在没有空格的情况下水平显示它。 像这样的东西

componentname    activity    2s TPU     1s TPU    
Am-241           2.35E+001   3.26E-002  3.22E-002
U-238            6.32E+002   1.23E+002  2.00E+001

我尝试过多种不同的方法,但我仍然无法弄明白。我尝试过使用公式来恢复列,但我一直在搞空。

任何见解都会非常有用。

1 个答案:

答案 0 :(得分:0)

如果要在报告的同一行中全部使用它们,则需要分离组件名称的第一部分和第二部分,然后将它们存储在变量中。您还需要按组件名称的第一部分(例如“U-238”)进行分组,您可以使用公式split({table.component_name}," ",2)[1]

进行分组

现在您将拥有Group Header,Details和Group Footer部分;每个人都需要自己的公式来跟踪你想要显示的值。

// Initialize the variables in the Group Header
whileprintingrecords;
stringvar activity_value := "";
stringvar TwoS_value := "";
stringvar OneS_value := "";

// Update the variables in the Details section
whileprintingrecords;
stringvar activity_value;
stringvar TwoS_value;
stringvar OneS_value;

select split({table.component_name}," ",2)[2]
case "Activity" : activity_value := {table.entered_value};
case "2s TPU" : TwoS_value := {table.entered_value};
case "1s TPU" : OneS_value := {table.entered_value};

// Display the variables in the Group Footer (one formula for each variable)
whileprintingrecords;
stringvar activity_value

或者,您也可以使用在交叉表中拆分组件名称的两个公式。因此,例如,您可以将交叉表的行设置为组件名称的前半部分,然后列将成为后半部分。