Crystal reports 如何在Crystal报表中水平显示多个结果?
我需要帮助在单个水平配置中显示我的8个结果。我有一张工作单,上面有一张带有检查表的表格。检查表是8个问题的通过或失败。每个Crystal reports 如何在Crystal报表中水平显示多个结果?,crystal-reports,Crystal Reports,我需要帮助在单个水平配置中显示我的8个结果。我有一张工作单,上面有一张带有检查表的表格。检查表是8个问题的通过或失败。每个CAT都有自己的代码,读取如果{F_checklist.CHK_TEXT}='其中一个测试名称',那么{@pass fail}我为8个测试组中的每个组设置了相同的代码 当我拉取数据并按WO将其分组时,其重复8次,每行的详细信息为通过或失败: 如果我抑制详细信息并将其放在组页脚中,我只会得到最后一个结果: 尽管这种报告作为交叉表/透视表更易于管理。据我所知,Crystal R
CAT
都有自己的代码,读取如果{F_checklist.CHK_TEXT}='其中一个测试名称',那么{@pass fail}
我为8个测试组中的每个组设置了相同的代码
当我拉取数据并按WO
将其分组时,其重复8次,每行的详细信息为通过或失败:
如果我抑制详细信息并将其放在组页脚中,我只会得到最后一个结果:
尽管这种报告作为交叉表/透视表更易于管理。据我所知,Crystal Reports(直到版本9,不能说更高版本)不支持非数字数据透视。因此,在Sql pivot级别可以更好地处理此类情况 即使如此,对于固定级别的要求,例如您案例中的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
公式字段置于组标题中f_Concat
公式字段置于详细信息部分Open
到Area Description
的所有其他字段放置在报表页脚中,并设置其格式,就像它们在Detail部分一样(只是Details部分的一个副本,没有8个结果字段)f_-Print
公式字段放在组页脚部分,并沿所有8个结果标题拉伸它(所有8个结果的单个f_-Print
公式字段)抑制
组标题抑制
详细信息部分基本思想是将所有结果连接到一个字符串,然后一次性显示。您可能需要调整
f_Print
中的连接空格,即+”
,以对齐8个结果标题下的值。尽管这种报告作为交叉选项卡/透视表更易于管理。据我所知,Crystal Reports(直到版本9,不能说更高版本)不支持非数字数据透视。因此,在Sql pivot级别可以更好地处理此类情况
即使如此,对于固定级别的要求,例如您案例中的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
公式字段置于组标题中f_Concat
公式字段置于详细信息部分Open
到Area Description
的所有其他字段放置在报表页脚中,并设置其格式,就像它们在Detail部分一样(只是Details部分的一个副本,没有8个结果字段)f_-Print
公式字段放在组页脚部分,并沿所有8个结果标题拉伸它(所有8个结果的单个f_-Print
公式字段)抑制
组标题抑制
详细信息部分基本思想是将所有结果连接到一个字符串,然后一次性显示。您可能需要调整
f_Print
中的连接空格,即+”
,以对齐8个结果标题下的值。谢谢您的回复haraman,这在一定程度上起了作用,但在f_Print公式中,它没有传递st_Final的值?Q1-Q8在寻找某种价值我不明白你的意思:Q1-Q8在寻找某种价值。是的{pass fail}的编写方式就像{F_CHECK_RESULTS.CLR_PASSED}='Yes'然后是'pass'或者'fail'但是当我将代码添加到F_Print crystal告诉我它在寻找一个值时,那么只需显式地将每个Q1-Q8的类型声明为上面修改的stringVar
Q1-Q8。i、 e.stringVar st_Final:=stringVar Q1+“”+stringVar Q2+“”+stringVar Q3…
非常感谢您的帮助,它的工作方式正是我所需要的感谢您的响应haraman,这在某种程度上是有效的,但在f_打印公式中它没有传递st_Final的值?Q1-Q8在寻找某种价值我不明白你的意思:Q1-Q8在寻找某种价值。是的{pass fail}的编写方式就像{F_CHECK_RESULTS.CLR_PASSED}='Yes'然后是'pass'或者'fail'但是当我将代码添加到F_Print crystal告诉我它在寻找一个值时,那么只需显式地将每个Q1-Q8的类型声明为上面修改的stringVar
Q1-Q8。i、 e.stringVar st_Final:=stringVar Q1+“”+stringVar Q2+“”+stringVar Q3…
非常感谢您的帮助,它正是我需要的方式工作