我正在尝试让嵌套的IF语句正常工作,但是get语句似乎没有解析。其他一切似乎都是正确的,包括各种输出。我的口供中漏掉了什么?
{ IF { MERGEFIELD CODE } = 0001 "Case 1"
{ IF { MERGEFIELD CODE } = 0002 "Case 2"
{ IF { MERGEFIELD CODE } = 0003 "Case 3"
{ IF { MERGEFIELD CODE } = 0004 "Case 4"
{ IF { MERGEFIELD CODE } = 0005 "Case 5"
{ IF { MERGEFIELD CODE } = 0006 "Case 6"
{ IF { MERGEFIELD CODE } = 0007 "Case 7"
}}}}}}
"{ MERGEFIELD ELSEOUTPUT }"
}发布于 2022-08-13 00:04:29
如果您输出正数(如果是有效的)和0(或无其他情况),您可以只使用:
{MERGEFIELD CODE \# "'Case '0;;'{MERGEFIELD ELSEOUTPUT}'"}否则,您可能会使用:
{IF{MERGEFIELD CODE \# 0000}= "0001" "Case 1"
{IF{MERGEFIELD CODE \# 0000}= "0002" "Case 2"
{IF{MERGEFIELD CODE \# 0000}= "0003" "Case 3"
{IF{MERGEFIELD CODE \# 0000}= "0004" "Case 4"
{IF{MERGEFIELD CODE \# 0000}= "0005" "Case 5"
{IF{MERGEFIELD CODE \# 0000}= "0006" "Case 6"
{IF{MERGEFIELD CODE \# 0000}= "0007" "Case 7" {MERGEFIELD ELSEOUTPUT}}}}}}}}或者:
{IF{MERGEFIELD CODE}= 1 "Case 1"
{IF{MERGEFIELD CODE}= 2 "Case 2"
{IF{MERGEFIELD CODE}= 3 "Case 3"
{IF{MERGEFIELD CODE}= 4 "Case 4"
{IF{MERGEFIELD CODE}= 5 "Case 5"
{IF{MERGEFIELD CODE}= 6 "Case 6"
{IF{MERGEFIELD CODE}= 7 "Case 7" {MERGEFIELD ELSEOUTPUT}}}}}}}}发布于 2022-08-13 09:10:07
主要的错误是嵌套-你需要重新安置你的
"{ MERGEFIELD ELSEOUTPUT }"
所以你有
"Case 7" "{ MERGEFIELD ELSEEOUTPUT } }
解释如下。
IF字段的语法(简化)
{ IF condition true-result false-result }在错误结果之后的任何事情都会被忽略。试一试,例如。
{ IF 1 = 1 "A" "B" "C" }(您应该看到A )
和
{ IF 1 = 2 "A" "B" "C" }(您应该看到B )
"C"值永远不会出现在结果中。
将IF语句简化为几种情况,您有如下所示
{ IF X = 1 "1" { IF X = 2 "2" } { ELSEOUTPUT } }所以"1"是"A"的等价物,{ IF X = 2 "2" }是"B"的等价物,{ ELSEOUTPUT }是"C"的等价物。
也就是说,{ ELSEOUTPUT }永远不会出现在结果中。
所以您需要移动您的{ MERGEFIELD ELSEOUTPUT },以便它是0007测试的假结果,i.e.perhaps。
{ IF { MERGEFIELD CODE } = 0001 "Case 1"
{ IF { MERGEFIELD CODE } = 0002 "Case 2"
{ IF { MERGEFIELD CODE } = 0003 "Case 3"
{ IF { MERGEFIELD CODE } = 0004 "Case 4"
{ IF { MERGEFIELD CODE } = 0005 "Case 5"
{ IF { MERGEFIELD CODE } = 0006 "Case 6"
{ IF { MERGEFIELD CODE } = 0007 "Case 7" "{ MERGEFIELD ELSEOUTPUT }"
}}}}}}}或者遵循你现有的布局,比如
{ IF { MERGEFIELD CODE } = 0001 "Case 1"
{ IF { MERGEFIELD CODE } = 0002 "Case 2"
{ IF { MERGEFIELD CODE } = 0003 "Case 3"
{ IF { MERGEFIELD CODE } = 0004 "Case 4"
{ IF { MERGEFIELD CODE } = 0005 "Case 5"
{ IF { MERGEFIELD CODE } = 0006 "Case 6"
{ IF { MERGEFIELD CODE } = 0007 "Case 7"
"{ MERGEFIELD ELSEOUTPUT }"
}}}}}}}除此之外,IF是否将完全按照您的意愿工作,取决于代码字段可以具有哪些值,以及您希望如何处理每个值。
只要您的代码都是四位数字数字代码,或者它们是数字代码,并且您希望"1“、"01”等与"0001“一样处理,那么IF字段就应该正常工作。或者你可以用不同的方式简化它。
在不太常见的情况下,您需要将"1“与"0001”区别对待,您需要引用{ MERGEFIELD代码}字段,例如假设"1“需要导致所需的ELSEOUTPUT。
{ IF "{ MERGEFIELD CODE }" = 0001 "Case 1"
{ IF "{ MERGEFIELD CODE }" = 0002 "Case 2"
{ IF "{ MERGEFIELD CODE }" = 0003 "Case 3"
{ IF "{ MERGEFIELD CODE }" = 0004 "Case 4"
{ IF "{ MERGEFIELD CODE }" = 0005 "Case 5"
{ IF "{ MERGEFIELD CODE }" = 0006 "Case 6"
{ IF "{ MERGEFIELD CODE }" = 0007 "Case 7"
"{ MERGEFIELD ELSEOUTPUT }"
}}}}}}}虽然为了让一切都尽可能清楚,我还是倾向于
{ IF "{ MERGEFIELD CODE }" = "0001" "Case 1"
{ IF "{ MERGEFIELD CODE }" = "0002" "Case 2"
{ IF "{ MERGEFIELD CODE }" = "0003" "Case 3"
{ IF "{ MERGEFIELD CODE }" = "0004" "Case 4"
{ IF "{ MERGEFIELD CODE }" = "0005" "Case 5"
{ IF "{ MERGEFIELD CODE }" = "0006" "Case 6"
{ IF "{ MERGEFIELD CODE }" = "0007" "Case 7"
"{ MERGEFIELD ELSEOUTPUT }"
}}}}}}}引用"0001“而不引用"{ MERGEFIELD代码}”意味着比较仍然是数字的,不能按预期工作。
这也将处理另外两个“边缘”案件,即
如果您的代码可以是字母数字的,如果您不引用0003.字段,则像"3ABC"、"03AB"甚至"01+2"这样的代码也将与{ MERGEFIELD CODE }匹配。
如果
IF字段将实际比较该书签的值。是的,这是IF字段的一个非常奇怪的怪癖,但这也是为什么我喜欢引用任何您希望被视为alphanumeric.的话。
例如,如果{ MERGEFIELD CODE }有值"ABCD",而在{ IF }字段之前的某个地方,则有{ SET ABCD 4 }
{ IF { MERGEFIELD CODE } = 0004 "Case 4" "{ MERGEFIELD ELSEOUTPUT }" }结果将是Case 4,而不是ELSEOUTPUT值。
https://stackoverflow.com/questions/73336035
复制相似问题