сравнение дат

  • Автор темы alb
  • Дата начала

Eugen

Green Team
22.03.2012
210
1
BIT
1
Всем доброго дня. Дабы не создавать новую тему, отпишусь тут...
Ситуация у меня схожая с kizarek , но разница в том, что мне надо не просто сравнить даты...
Мне нужно следующее: есть поле, куда проставляется дата, которая должна сравниваться с текущей. И вычисляемое поле с вариантами...
Если разница в пределах одного месяца - один вариант, <12 месяцев - второй, >12 месяцев - третий. Честно говоря даже не представляю, как это реализовать. Если кто знает, как это сделать, помогите пожалуйста.
PS: чем проще будет способ, тем лучше, желательно на @формулах, потому что в LS я еще пока вообще ничего не понимаю.
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
6
Всем доброго дня. Дабы не создавать новую тему, отпишусь тут...
Ситуация у меня схожая с kizarek , но разница в том, что мне надо не просто сравнить даты...
Мне нужно следующее: есть поле, куда проставляется дата, которая должна сравниваться с текущей. И вычисляемое поле с вариантами...
Если разница в пределах одного месяца - один вариант, <12 месяцев - второй, >12 месяцев - третий. Честно говоря даже не представляю, как это реализовать. Если кто знает, как это сделать, помогите пожалуйста.
PS: чем проще будет способ, тем лучше, желательно на @формулах, потому что в LS я еще пока вообще ничего не понимаю.
Даты вычитаются. Результат в секундах.
 

Eugen

Green Team
22.03.2012
210
1
BIT
1
Возник новый вопрос:
Есть dialogbox, который формируется на основе формы. В нем указываются начальные и конечные даты отчетного периода. Пытаюсь в дефолтном значении в поле с начальной датой сделать так, чтобы по умолчанию стояла дата "Сегодня-7дней". Вбиваю формулу:
@Date(@Year(@Today);@Month(@Today);@Day(@Today)-7). Эта формула не отрабатывает, если сегодня 1-8 число месяца, по всем остальным числам месяца нормально считает. Кто-нибудь знает, как заставить ее корректно работать?
 

savl

Lotus Team
28.10.2011
2 624
314
BIT
539
Eugen
смотри описание @Adjust( dateToAdjust ; years ; months ; days ; hours ; minutes ; seconds ; [DST] )
Она сама считает месяца и годы, при изменении дней

в твоем случае: @Adjust(@today;0;0;-7;0;0;0) или @Adjust(@now;0;0;-7;0;0;0)
 

Eugen

Green Team
22.03.2012
210
1
BIT
1
Спасибо огромное, что то @Adjust вылетело из головы...
 

Eugen

Green Team
22.03.2012
210
1
BIT
1
Снова я и снова туплю...

На input validation поля хочу проверить, что введенная дата не больше сегодняшней.
Пробовал и так:

Код:
@If(@Text(fldDateIssuance)="";@Return(@Success);
@If(
@Text(fldDateIssuance)>@Text(@Today);@Return(@Failure("Дата выдачи не должна быть позже сегодняшней."));
"")
)

и с @TextToTime и все равно ругается. Как их правильно сравнить?
 

Eugen

Green Team
22.03.2012
210
1
BIT
1
Может быть есть в формулах что-то похожее на скриптовое TimeDifference method?
 

savl

Lotus Team
28.10.2011
2 624
314
BIT
539
на @ можно просто вычетать кажись. (data1 - data2) > 0
Примерно так, если не ошибаюсь.
 

Eugen

Green Team
22.03.2012
210
1
BIT
1
"Все страньше и страньше..."(с)

Формулы почему то не видят значения поля с датой. Т.е. если ввести дату в поле и вызвать @prompt, то он будет пуст.
 

savl

Lotus Team
28.10.2011
2 624
314
BIT
539
Третий параметр должен быть текст: @Prompt([ok];"";@Text(<имя поля>))
 

Eugen

Green Team
22.03.2012
210
1
BIT
1
Так и делаю:
Код:
m:=@Today-@TextToTime(fldIssuanceDate);
@Prompt([ok];"";@Text(fldIssuanceDate));
@Prompt([Ok];"";@Text(m))
Первый промпт пуст, второй выдает ноль.
 
M

motogarri

Ну @Today по любому не может быть пустым, значит поле fldIssuanceDate пустое. Или опечатка в имени поля. Имена полей лучше вообще с формы копировать.
А поле fldIssuanceDate в документе не рич текст?
 

Eugen

Green Team
22.03.2012
210
1
BIT
1
Ну @Today по любому не может быть пустым, значит поле fldIssuanceDate пустое. Или опечатка в имени поля. Имена полей лучше вообще с формы копировать.
А поле fldIssuanceDate в документе не рич текст?

Имя поля верное, я его именно копировал. Поле типа Date/Time. То, что документ новый, влияет? Т.е. он еще не сохранялся.


Добавлено: В свойствах формы сейчас проставил галку Automatically refresh fields. Теперь первый промпт выдает введенную дату, а второй говорит, типа неверный тип данных, ожидается текст... а там и так @Text(m)
 

Eugen

Green Team
22.03.2012
210
1
BIT
1
На input validation сделал так:
Код:
m:=@Today-fldDateIssuance;

@If(@Text(fldDateIssuance)="";@Return(@Success);
@If(m<0;@Return(@Failure("Введенная дата не должна быть больше сегодняшней"));@Success)
)
Заработало. Всем спасибо.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!