Правильное сравнение дат в полях слияния (Microsoft Word)
У Волкера проблема со сравнением дат в поле слияния. Его база данных содержит поле «Дата рождения», которое (очевидно) содержит дату рождения каждого человека в базе данных. При объединении каждой записи он хочет сравнить поле «Дата рождения» с контрольной датой, а затем предпринять некоторые действия в зависимости от результата. Логика, которую он пытается использовать, выглядит так:
{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 — самая популярная программа для обработки текстов в мире.) Этот совет (9995) применим к Microsoft Word 2007, 2010, 2013 и 2016. Вы можете найти версию этого совета для более старого интерфейса меню Word здесь:
link: / word-Proper_Comparisons_for_Dates_in_Merge_Fields [Правильные сравнения дат в полях слияния]
.