1

Тема: как к дате прибавить определенное колличество дней

из базы данных получаю определенную дату {MERGEFIELD "Datе_post" \@ "dd.MM.yyyy"}, как сделать так, чтобы отображалась дата, которая наступит через 11 дней

2

Re: как к дате прибавить определенное колличество дней

Попробуйте такой вариант:

{QUOTE
{SET Delay 11}
{SET mergeDate{ MERGEFIELD Date_post }}
{SET a{=INT((14-{ mergeDate \@ M})/12)}}
{SET b{={ mergeDate \@ yyyy}+4800-a}}
{SET c{={ mergeDate \@ M}+12*a-3}}
{SET d{ mergeDate \@ d}}
{SET jd{=d+INT((153*c+2)/5)+365*b+INT(b/4)-INT(b/100)+INT(b/400)-32045+Delay}}
{SET e{=INT((4*(jd+32044)+3)/146097)}}
{SET f{=jd+32044-INT(146097*e/4)}}
{SET g{=INT((4*f+3)/1461)}}
{SET h{=f-INT(1461*g/4)}}
{SET i{=INT((5*h+2)/153)}}
{SET dd{=h-INT((153*i+2)/5)+1}}
{SET mm{=i+3-12*INT(i/10)}}
{SET yy{=100*e+g-4800+INT(i/10)}}
"{dd}-{mm}-{yy}" \@ "dd.MM.yyyy"}

В приложенном файле документ и база данных с одним полем Date_post для проверки работы поля.
Количество прибавляемых дней задаётся в строке:

{SET Delay 11}

Дата задаётся в строке:

{SET mergeDate{ MERGEFIELD Date_post }}

Формат даты задаётся в последней строке:

"{dd}-{mm}-{yy}" \@ "dd.MM.yyyy"}

Все остальные строки служат для вычисления будущей даты. Алгоритм не мой, взят отсюда (файл DateCalc.zip)

Post's attachments

MergeDateWithNDaysDelay.zip 15.78 Кб, 4 скачиваний с 2014-09-09 

You don't have the permssions to download the attachments of this post.
Лучше день потерять — потом за пять минут долететь!

3

Re: как к дате прибавить определенное колличество дней

Выдает: Ошибка! Ожидалась цифра.

4

Re: как к дате прибавить определенное колличество дней

Пример документа, где возникает ошибка. В каком формате хранится дата в базе?
Можно попробовать изменить одну строчку:

{SET mergeDate{ MERGEFIELD Date_post \@ "dd/MM/yyyy"}}
Лучше день потерять — потом за пять минут долететь!

5

Re: как к дате прибавить определенное колличество дней

Формат даты: 8/25/2014. Поменял строку, выдает то же самое.

6

Re: как к дате прибавить определенное колличество дней

Какая именно строка выдаёт ошибку? Чтобы проверить это, включи отображение кодов полей (Alt+F9) и затем на каждой строке, начиная со второй, ставь курсор после первой открывающей фигурной скобки и нажимай Shift+F9. Это поле будет вычисляться и, если есть, показывать ошибку

Лучше день потерять — потом за пять минут долететь!