嵌套Crystal if语句不起作用

时间:2017-01-19 08:16:59

标签: if-statement crystal-reports formula

Morning Guys,

我在Crystal子报表中有以下公式,并且它不会返回任何值。我知道十几条记录中存在数据,我使用了检查功能,没有给出语法错误,我已经按照以下问题给出了示例' Crystal Report: How to evaluate multiple IF statements in one formula?& #39;

公式如下;

(if {?Pm-Enquiry.EnquiryId} <1000 and
{DocumentType.DocumentSubtype} = "DocumentSubtype1" then
left ({DocumentSubtype1Table.Field1},3) else
left ({DocumentSubtype1Table.Field1},4)
);
(if {?Pm-Enquiry.EnquiryId} <1000 and
{DocumentType.DocumentSubtype} = "DocumentSubtype2" then
left ({DocumentSubtype2Table.Field1},3) else
left ({DocumentSubtype2Table.Field1},4)
);
(if {?Pm-Enquiry.EnquiryId} <1000 and
{DocumentType.DocumentSubtype} = "DocumentSubtype1" then
left ({DocumentSubtype3Table.Field1},3) else
left ({DocumentSubtype3Table.Field1},4)
);

公式应确定ID是否小于或大于三位数,并从DocumentSubtypeTable中检索前3/4位数。不幸的是,该ID已与该字段中的日期合并,使得该公式成为必要。

你们给予的任何帮助都会非常感激。

1 个答案:

答案 0 :(得分:0)

也许因为你没有返回一个值。 尝试以下方法(定义一个变量,在其中填入结果,然后返回它。):

StringVar StrValue;

(if {?Pm-Enquiry.EnquiryId} <1000 and {DocumentType.DocumentSubtype} = "DocumentSubtype1" then
StrValue := left ({DocumentSubtype1Table.Field1},3) else
StrValue := left ({DocumentSubtype1Table.Field1},4)
);

(if {?Pm-Enquiry.EnquiryId} <1000 and {DocumentType.DocumentSubtype} = "DocumentSubtype2" then
StrValue := left ({DocumentSubtype2Table.Field1},3) else
StrValue := left ({DocumentSubtype2Table.Field1},4)
);

(if {?Pm-Enquiry.EnquiryId} <1000 and {DocumentType.DocumentSubtype} = "DocumentSubtype1" then
StrValue := left ({DocumentSubtype3Table.Field1},3) else
StrValue := left ({DocumentSubtype3Table.Field1},4)
);

StrValue;