如何在Crystal Reports中基于两种分析物检测结果添加对应注释
使用Crystal Syntax根据两种分析物的检测结果添加对应注释
问题场景
现有两种分析物(Analyte1、Analyte2),每种的检测结果为Detected(检出)或Not Detected(未检出),存在四种结果组合:
- Analyte1检出,Analyte2检出
- Analyte1未检出,Analyte2未检出
- Analyte1检出,Analyte2未检出
- Analyte1未检出,Analyte2检出
需要针对每种组合生成专属注释,此前单独的if-then脚本无法关联两种分析物的结果,导致注释不符合预期。
解决方案
核心逻辑是先提取同一次检测中两种分析物的结果,再进行组合判断。假设数据库表包含字段:
{Results.TestID}:关联同一次检测的唯一标识{Results.Analyte}:分析物名称(Analyte1/Analyte2){Results.Result}:检测结果(Detected/Not Detected)
在Crystal Reports中创建公式字段,输入以下Crystal Syntax代码:
// 提取同组内两种分析物的结果(按TestID分组时使用) StringVar analyte1Result := Maximum(If {Results.Analyte} = "Analyte1" Then {Results.Result} Else "", {Results.TestID}); StringVar analyte2Result := Maximum(If {Results.Analyte} = "Analyte2" Then {Results.Result} Else "", {Results.TestID}); // 根据结果组合生成对应注释 If analyte1Result = "Detected" And analyte2Result = "Detected" Then "两种分析物均检出" Else If analyte1Result = "Not Detected" And analyte2Result = "Not Detected" Then "两种分析物均未检出" Else If analyte1Result = "Detected" And analyte2Result = "Not Detected" Then "仅Analyte1检出,Analyte2未检出" Else If analyte1Result = "Not Detected" And analyte2Result = "Detected" Then "仅Analyte2检出,Analyte1未检出" Else "结果异常,请检查数据"
补充说明
- 如果报表未按
TestID分组,可直接用简单条件提取结果(前提是单条记录对应单个分析物,且同一次检测的记录可关联):StringVar analyte1Result := If {Results.Analyte} = "Analyte1" Then {Results.Result} Else ""; StringVar analyte2Result := If {Results.Analyte} = "Analyte2" Then {Results.Result} Else ""; Maximum函数用于在分组范围内筛选对应分析物的结果,因为同组内单个分析物只会有一条有效结果,取最大值即可得到目标值。
内容的提问来源于stack exchange,提问作者forthewinn
相关产品推荐
相关产品推荐

