You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Crystal Reports中基于两种分析物检测结果添加对应注释

使用Crystal Syntax根据两种分析物的检测结果添加对应注释

问题场景

现有两种分析物(Analyte1、Analyte2),每种的检测结果为Detected(检出)或Not Detected(未检出),存在四种结果组合:

  1. Analyte1检出,Analyte2检出
  2. Analyte1未检出,Analyte2未检出
  3. Analyte1检出,Analyte2未检出
  4. 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 02:17:07