powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Дата и вычислимое поле в таблице.
4 сообщений из 4, страница 1 из 1
Дата и вычислимое поле в таблице.
    #38671296
rufusnone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
.....
Property date As %Date [ Required ];
Property year As %Boolean [ Calculated, SqlComputeCode = { Set {year}=##class(transport).passingyear({date})
}, SqlComputed ];

ClassMethod passingyear(date As %Boolean = "") As %Boolean
{
  If (($ZD($H,8)-$ZD(date,8)\10000) < 5)
  {
    Quit "true"
   }
   else
   {
     Quit "false"
  }
}
Это метод должен возвращать значение true если возраст автомобиля <5 лет и false если больше, в чем ошибка?
А еще вопрос по дате, когда я в терминале пишу
set a.date = 05/06/2014 то в таблице значение даты будет вот такое 12/31/1840, как правильно задать дату?
...
Рейтинг: 0 / 0
Дата и вычислимое поле в таблице.
    #38671344
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в Cache не используется true и false, тем более вы их текстом возвращаете, нужно использовать 1 и 0

проверку разницы лет можно возложить на Cache
запись даты в поле типа %Date в формате $HOROLOG
Property date As %Date [ Required ];

Property year As %Boolean [ Calculated, SqlComputeCode = { Set {year}=..passingyear({date})}, SqlComputed ];

ClassMethod passingyear(date As %Boolean = "") As %Boolean
{
  quit ($system.SQL.DATEDIFF("yy",date,$h) < 5 )
}

ClassMethod test()
{
  s o=..%OpenId(1)
  s o.date=$zdh("01/06/2013",4)
  w !,"Date: ",$zd(o.date,4)
  w !,"Year: ",o.year
  w !
  s o.date=$zdh("01/06/2003",4)
  w !,"Date: ",$zd(o.date,4)
  w !,"Year: ",o.year
}
и результат

Код: plaintext
1.
2.
3.
4.
5.
6.
USER>d ##class(sqlru.test).test()
 
Date: 01/06/2013
Year: 1
 
Date: 01/06/2003
Year: 0
...
Рейтинг: 0 / 0
Дата и вычислимое поле в таблице.
    #38671368
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rufusnone
  • ClassMethod passingyear(date As  %Date  = "") As %Boolean
  •   {     Quit $$$YES    }    else    {      Quit $$$NO   }
...
Рейтинг: 0 / 0
Дата и вычислимое поле в таблице.
    #38671833
Petr0vi4444
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Property year As %Boolean [ Calculated, SqlComputeCode = { Set {year}=..passingyear({date})}, SqlComputed ];Вот так писать плохая затея, при выборке этого поля в Embedded SQL в другом классе будет ошибка отсутствующего метода. Лучше указывать имя класса полностью. В данном случае вообще можно метод не вызывать, а сразу написатьProperty year As %Boolean [ Calculated, SqlComputeCode = { Set {*}=($system.SQL.DATEDIFF("yy",{date},$h) < 5) }, SqlComputed ];
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Дата и вычислимое поле в таблице.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]