If statement Crystal Report将值转换为带符号的数字

If statement Crystal Report将值转换为带符号的数字,if-statement,crystal-reports,numbers,logic,symbols,If Statement,Crystal Reports,Numbers,Logic,Symbols,我对我正在制作的水晶报告有意见。我使用数据库中的字段,并在分析字段等于某些值的情况下提取结果值。 在条件中,第一个检查查看分析字段并检查其是否等于“Conf”。结果是“这就是我提出的解决方案 Field 1 whileprintingrecords; stringvar vResult := ""; Field 2 whileprintingrecords; stringvar vResult; vResult := if {RESULT.UNITS} = "CFU_G" and {RESU

我对我正在制作的水晶报告有意见。我使用数据库中的字段,并在分析字段等于某些值的情况下提取结果值。
在条件中,第一个检查查看分析字段并检查其是否等于“Conf”。结果是“这就是我提出的解决方案

Field 1
whileprintingrecords;
stringvar vResult := "";

Field 2
whileprintingrecords;
stringvar vResult;
vResult :=  if {RESULT.UNITS} = "CFU_G"
and {RESULT.ANALYSIS} = "CRA_LIS_ENU_CONF_MPCRAM29" 
then {RESULT.FORMATTED_ENTRY}

else if {RESULT.ANALYSIS} = "CRA_LIST_ENU_MPCRAM29"
and {RESULT.UNITS} = "CFU_G"
and vResult = ""
then {RESULT.FORMATTED_ENTRY}

Field 3
whileprintingrecords;
stringvar vResult;
vResult;

你的解释让我们有点困惑…你能添加预期的内容和你得到的内容吗?这可能是case(CONF vs CONF vs CONF)的问题吗?你确定逻辑运算符的优先级吗(也许你应该在OR操作中使用括号)?好的,抱歉说得不清楚。我找到了一个解决方案,创建一个循环变量。代码见答案。
if {UNITS} = "CFU_G" then
if {ANALYSIS} = "CONF" and
{RESULT}="" or
{RESULT} = "0" then 0
else if {ANALYSIS} = "CONF"
then if isNumeric({RESULT}) then
tonumber({RESULT}) else
tonumber(Replace ({RESULT}, "<", ""))

else 

if {UNITS} = "CFU_G" then
if {ANALYSIS} = "Original" and
{RESULT}="" or
{RESULT} = "0" then 0
else if {ANALYSIS} = "Original"
then if isNumeric({RESULT}) then
tonumber({RESULT}) else
tonumber(Replace ({RESULT}, "<", ""))
Field 1
whileprintingrecords;
stringvar vResult := "";

Field 2
whileprintingrecords;
stringvar vResult;
vResult :=  if {RESULT.UNITS} = "CFU_G"
and {RESULT.ANALYSIS} = "CRA_LIS_ENU_CONF_MPCRAM29" 
then {RESULT.FORMATTED_ENTRY}

else if {RESULT.ANALYSIS} = "CRA_LIST_ENU_MPCRAM29"
and {RESULT.UNITS} = "CFU_G"
and vResult = ""
then {RESULT.FORMATTED_ENTRY}

Field 3
whileprintingrecords;
stringvar vResult;
vResult;