Volker가 병합 필드의 날짜를 비교하는 데 문제가 있습니다. 그의 데이터베이스에는 생년월일 필드가 포함되어 있는데, 여기에는 데이터베이스의 각 개인에 대한 생년월일이 포함되어 있습니다. 그는 각 레코드를 병합 할 때 Birthdate 필드를 참조 날짜와 비교 한 다음 결과에 따라 몇 가지 작업을 수행하려고합니다. 그가 사용하려는 논리는 다음과 같습니다.

{IF {MERGEFIELD Birthdate} > "02/26/1981" "Under 30" "Over 30"}

문제는 비교가 제대로 작동하지 않는다는 것입니다. 일관된 결과를 반환하지 않습니다. 한 가지 가능한 해결책은 병합 필드에서 다음과 같은 방식으로 형식 스위치를 사용하는 것입니다.

{IF {MERGEFIELD Birthdate\@"MM/DD/YYYY"} > "02/26/1981" "Under 30" "Over 30"}

이것은 들어오는 정보를 비슷한 형식으로 만듭니다. 그러나이 방법을 통해 얻을 수있는 결과는 Word와 관계없이 데이터 원본의 특성에 따라 달라질 수 있습니다. 다음과 같이 연도 우선 형식으로 날짜를 입력 할 수도 있습니다.

{IF {MERGEFIELD Birthdate\@"YYYY/MM/DD"} > "2011/02/26" "Under 30" "Over 30"}

비교 결과가 여전히 일치하지 않는 경우 유일한 해결책은 실제 숫자 비교를 위해 날짜 (실제로는 생년월일과 참조 날짜 모두)에 수학적 변환을 수행하는 것입니다. 날짜를 율리우스 력 값으로 변환하여이를 수행 할 수 있습니다. 여기에 표시된 것과 같이 매우 복잡한 병합 필드가 필요합니다.

{IF {QUOTE {SET a{=INT((14-{MERGEFIELD BIRTHDATE \@ M})/12)}} {SET b{={MERGEFIELD BIRTHDATE \@ yyyy}+4800-a}} {SET c{={MERGEFIELD BIRTHDATE \@ M}+12a-3}} {SET d{MERGEFIELD BIRTHDATE \@ d}} {SET jd{=d+INT((153c+2)/5)+365*b+INT(b/4)-INT(b/100)+INT(b/400)-32045}} {jd \#,0}} > 2,443,056 "over 30" "under30"}

이러한 접근 방식은 위협적으로 보일 수 있지만 일부 인스턴스에 필요한 무차별 대입 방법 일뿐입니다.

_WordTips_는 비용 효율적인 Microsoft Word 교육을위한 소스입니다.

(Microsoft Word는 세계에서 가장 널리 사용되는 워드 프로세싱 소프트웨어입니다.)이 팁 (356)은 Microsoft Word 97, 2000, 2002 및 2003에 적용됩니다. Word의 리본 인터페이스에 대한이 팁 버전 (Word 2007)을 찾을 수 있습니다. 이후) 여기 :

link : / wordribbon-Proper_Comparisons_for_Dates_in_Merge_Fields [병합 필드의 날짜에 대한 적절한 비교].