|
Дата и вычислимое поле в таблице.
|
|||
---|---|---|---|
#18+
..... 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, как правильно задать дату? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2014, 09:45 |
|
Дата и вычислимое поле в таблице.
|
|||
---|---|---|---|
#18+
в 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2014, 10:10 |
|
Дата и вычислимое поле в таблице.
|
|||
---|---|---|---|
#18+
rufusnone
... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2014, 10:24 |
|
Дата и вычислимое поле в таблице.
|
|||
---|---|---|---|
#18+
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 ]; ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2014, 14:37 |
|
|
start [/forum/topic.php?fid=39&gotonew=1&tid=1556864]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
34ms |
get topic data: |
14ms |
get first new msg: |
8ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
others: | 277ms |
total: | 415ms |
0 / 0 |