首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果mergefield在Word中不起作用,则在嵌套的

如果mergefield在Word中不起作用,则在嵌套的
EN

Stack Overflow用户
提问于 2022-08-12 14:54:40
回答 2查看 88关注 0票数 0

我正在尝试让嵌套的IF语句正常工作,但是get语句似乎没有解析。其他一切似乎都是正确的,包括各种输出。我的口供中漏掉了什么?

代码语言:javascript
复制
{ 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 }"
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-08-13 00:04:29

如果您输出正数(如果是有效的)和0(或无其他情况),您可以只使用:

代码语言:javascript
复制
{MERGEFIELD CODE \# "'Case '0;;'{MERGEFIELD ELSEOUTPUT}'"}

否则,您可能会使用:

代码语言:javascript
复制
{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}}}}}}}}

或者:

代码语言:javascript
复制
{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}}}}}}}}
票数 1
EN

Stack Overflow用户

发布于 2022-08-13 09:10:07

主要的错误是嵌套-你需要重新安置你的

"{ MERGEFIELD ELSEOUTPUT }"

所以你有

"Case 7" "{ MERGEFIELD ELSEEOUTPUT } }

解释如下。

IF字段的语法(简化)

代码语言:javascript
复制
{ IF condition true-result false-result }

在错误结果之后的任何事情都会被忽略。试一试,例如。

代码语言:javascript
复制
{ IF 1 = 1 "A" "B" "C" }

(您应该看到A )

代码语言:javascript
复制
{ IF 1 = 2 "A" "B" "C" }

(您应该看到B )

"C"值永远不会出现在结果中。

将IF语句简化为几种情况,您有如下所示

代码语言:javascript
复制
{ 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。

代码语言:javascript
复制
{ 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 }"
}}}}}}}

或者遵循你现有的布局,比如

代码语言:javascript
复制
{ 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。

代码语言:javascript
复制
{ 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 }"
}}}}}}}

虽然为了让一切都尽可能清楚,我还是倾向于

代码语言:javascript
复制
{ 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 }

代码语言:javascript
复制
{ IF { MERGEFIELD CODE } = 0004 "Case 4" "{ MERGEFIELD ELSEOUTPUT }" }

结果将是Case 4,而不是ELSEOUTPUT值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73336035

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档