如何在 Crystal 报表中水平显示多个结果?
How to display multiple results in Crystal Reports horizontally?
我需要帮助才能在单个水平配置中显示我的 8 个结果。我有一个工作订单,其中有一个 table 和一个核对清单。检查清单是 8 个问题的通过或失败。每个 CAT
都有自己的代码 IF {F_CHECKLISTS.CHK_TEXT}='one of the TEST Name' THEN {@pass-fail}
我为 8 个测试组中的每一个都设置了相同的代码
当我提取数据并将其按 WO
分组时,每行重复 8 次,详细信息为通过或失败:
如果我隐藏细节并将其放在组页脚中,我只会得到最后的结果:
尽管此类报告更易于管理,如 Cross-Tab / Pivot-Table。据我所知 Crystal 报告(最高版本 9,不能说更高版本)不支持 non-numeric 枢轴。因此,在 Sql 枢轴级别可以更好地处理此类情况。
尽管如此,对于固定级别的要求,例如您的案例中的 8 个问题,可以使用以下方法。您需要创建三个公式字段 f_Reset
、f_Concat
和 f_Print
并设置它们的值如下:
f_Reset
:初始化默认结果为fail
WhilePrintingRecords;
stringVar Q1 := "fail";
stringVar Q2 := "fail";
stringVar Q3 := "fail";
stringVar Q4 := "fail";
stringVar Q5 := "fail";
stringVar Q6 := "fail";
stringVar Q7 := "fail";
stringVar Q8 := "fail";
stringVar st_Final := "";
f_Concat
: 检查所有问题的结果
WhilePrintingRecords;
if {F_CHECKLISTS.CHK_TEXT} = 'Test 1 Name' then stringVar Q1 := {@pass-fail};
if {F_CHECKLISTS.CHK_TEXT} = 'Test 2 Name' then stringVar Q2 := {@pass-fail};
if {F_CHECKLISTS.CHK_TEXT} = 'Test 3 Name' then stringVar Q3 := {@pass-fail};
if {F_CHECKLISTS.CHK_TEXT} = 'Test 4 Name' then stringVar Q4 := {@pass-fail};
if {F_CHECKLISTS.CHK_TEXT} = 'Test 5 Name' then stringVar Q5 := {@pass-fail};
if {F_CHECKLISTS.CHK_TEXT} = 'Test 6 Name' then stringVar Q6 := {@pass-fail};
if {F_CHECKLISTS.CHK_TEXT} = 'Test 7 Name' then stringVar Q7 := {@pass-fail};
if {F_CHECKLISTS.CHK_TEXT} = 'Test 8 Name' then stringVar Q8 := {@pass-fail};
f_Print
: 准备最终显示结果
WhilePrintingRecords;
stringVar st_Final := stringVar Q1 + " " + stringVar Q2 + " " + stringVar Q3 + " " + stringVar Q4 + " " + stringVar Q5 + " " + stringVar Q6 + " " + stringVar Q7 + " " + stringVar Q8;
接下来,执行以下步骤:
- 通过任一常用字段将组插入到您的报告中(例如,
WO
,如您的第二个屏幕截图所示)。
- 在组中放置
f_Reset
公式字段 Header
- 将
f_Concat
公式字段放在详细信息部分
- 在报告页脚中放置从
Open
到 Area Description
的所有其他字段并设置格式,就像它们在“详细信息”部分中一样(只是“详细信息”部分的副本,没有 8 个结果字段)
- 将
f_Print
公式字段放在组页脚部分,并沿着所有 8 个结果标题拉伸它(single f_print
formula所有 8 个结果的字段)
Suppress
组Header
Suppress
详情部分
基本思想是将所有结果连接成一个字符串,然后一次性显示出来。您可能需要调整 f_Print
中的串联 space,即 + " "
以对齐低于 8 个结果标题的值。
我需要帮助才能在单个水平配置中显示我的 8 个结果。我有一个工作订单,其中有一个 table 和一个核对清单。检查清单是 8 个问题的通过或失败。每个 CAT
都有自己的代码 IF {F_CHECKLISTS.CHK_TEXT}='one of the TEST Name' THEN {@pass-fail}
我为 8 个测试组中的每一个都设置了相同的代码
当我提取数据并将其按 WO
分组时,每行重复 8 次,详细信息为通过或失败:
如果我隐藏细节并将其放在组页脚中,我只会得到最后的结果:
尽管此类报告更易于管理,如 Cross-Tab / Pivot-Table。据我所知 Crystal 报告(最高版本 9,不能说更高版本)不支持 non-numeric 枢轴。因此,在 Sql 枢轴级别可以更好地处理此类情况。
尽管如此,对于固定级别的要求,例如您的案例中的 8 个问题,可以使用以下方法。您需要创建三个公式字段 f_Reset
、f_Concat
和 f_Print
并设置它们的值如下:
f_Reset
:初始化默认结果为fail
WhilePrintingRecords; stringVar Q1 := "fail"; stringVar Q2 := "fail"; stringVar Q3 := "fail"; stringVar Q4 := "fail"; stringVar Q5 := "fail"; stringVar Q6 := "fail"; stringVar Q7 := "fail"; stringVar Q8 := "fail"; stringVar st_Final := "";
f_Concat
: 检查所有问题的结果WhilePrintingRecords; if {F_CHECKLISTS.CHK_TEXT} = 'Test 1 Name' then stringVar Q1 := {@pass-fail}; if {F_CHECKLISTS.CHK_TEXT} = 'Test 2 Name' then stringVar Q2 := {@pass-fail}; if {F_CHECKLISTS.CHK_TEXT} = 'Test 3 Name' then stringVar Q3 := {@pass-fail}; if {F_CHECKLISTS.CHK_TEXT} = 'Test 4 Name' then stringVar Q4 := {@pass-fail}; if {F_CHECKLISTS.CHK_TEXT} = 'Test 5 Name' then stringVar Q5 := {@pass-fail}; if {F_CHECKLISTS.CHK_TEXT} = 'Test 6 Name' then stringVar Q6 := {@pass-fail}; if {F_CHECKLISTS.CHK_TEXT} = 'Test 7 Name' then stringVar Q7 := {@pass-fail}; if {F_CHECKLISTS.CHK_TEXT} = 'Test 8 Name' then stringVar Q8 := {@pass-fail};
f_Print
: 准备最终显示结果WhilePrintingRecords; stringVar st_Final := stringVar Q1 + " " + stringVar Q2 + " " + stringVar Q3 + " " + stringVar Q4 + " " + stringVar Q5 + " " + stringVar Q6 + " " + stringVar Q7 + " " + stringVar Q8;
接下来,执行以下步骤:
- 通过任一常用字段将组插入到您的报告中(例如,
WO
,如您的第二个屏幕截图所示)。 - 在组中放置
f_Reset
公式字段 Header - 将
f_Concat
公式字段放在详细信息部分 - 在报告页脚中放置从
Open
到Area Description
的所有其他字段并设置格式,就像它们在“详细信息”部分中一样(只是“详细信息”部分的副本,没有 8 个结果字段) - 将
f_Print
公式字段放在组页脚部分,并沿着所有 8 个结果标题拉伸它(singlef_print
formula所有 8 个结果的字段) Suppress
组HeaderSuppress
详情部分
基本思想是将所有结果连接成一个字符串,然后一次性显示出来。您可能需要调整 f_Print
中的串联 space,即 + " "
以对齐低于 8 个结果标题的值。