如何在 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_Resetf_Concatf_Print 并设置它们的值如下:

  1. 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 := "";
    
  2. 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};
    
  3. f_Print: 准备最终显示结果

    WhilePrintingRecords;
    stringVar st_Final := stringVar Q1 + "    " + stringVar Q2 + "    " + stringVar Q3 + "    " + stringVar Q4 + "    " + stringVar Q5 + "    " + stringVar Q6 + "    " + stringVar Q7 + "    " + stringVar Q8;
    

接下来,执行以下步骤:

  1. 通过任一常用字段将组插入到您的报告中(例如,WO,如您的第二个屏幕截图所示)。
  2. 在组中放置 f_Reset 公式字段 Header
  3. f_Concat 公式字段放在详细信息部分
  4. 在报告页脚中放置从 OpenArea Description 的所有其他字段并设置格式,就像它们在“详细信息”部分中一样(只是“详细信息”部分的副本,没有 8 个结果字段)
  5. f_Print 公式字段放在组页脚部分,并沿着所有 8 个结果标题拉伸它(single f_print formula所有 8 个结果的字段)
  6. Suppress组Header
  7. Suppress详情部分

基本思想是将所有结果连接成一个字符串,然后一次性显示出来。您可能需要调整 f_Print 中的串联 space,即 + " " 以对齐低于 8 个结果标题的值。