Crystal Report, преобразованный из Data Flex в SQL, теперь получает ошибки формулы

Вот моя формула:

if Maximum({@tx plan date}, {CDCLIENT.SORT_NAME})=Date (1999-01-01) then 
  currentdate-Maximum ({CDASSFRM.DATE_EFFECTIVE}, {CDCLIENT.SORT_NAME}) 
else 
  Maximum ({@tx plan date}, {CDCLIENT.SORT_NAME})-Maximum ({CDASSFRM.DATE_EFFECTIVE}, {CDCLIENT.SORT_NAME})

Приведенная выше формула теперь получает строку обязательной ошибки на поле =Date(1999-01-01) часть. Кажется, я не могу понять, что нужно

2 ответа

Используйте либо:

if Maximum({@tx plan date}, {CDCLIENT.SORT_NAME})=Date(1999,01,01) then 
  currentdate-Maximum ({CDASSFRM.DATE_EFFECTIVE}, {CDCLIENT.SORT_NAME}) 
else 
  Maximum ({@tx plan date}, {CDCLIENT.SORT_NAME})-Maximum ({CDASSFRM.DATE_EFFECTIVE}, {CDCLIENT.SORT_NAME})

или же:

if Maximum({@tx plan date}, {CDCLIENT.SORT_NAME})=DateValue("1999-01-01") then 
  currentdate-Maximum ({CDASSFRM.DATE_EFFECTIVE}, {CDCLIENT.SORT_NAME}) 
else 
  Maximum ({@tx plan date}, {CDCLIENT.SORT_NAME})-Maximum ({CDASSFRM.DATE_EFFECTIVE}, {CDCLIENT.SORT_NAME})

Чтобы объявить дату в отчетах Crystal, вы можете использовать хеш:

Date (#1999-01-01#)

редактировать

Поскольку вы пытаетесь сравнить со строкой, вам нужно преобразовать либо строку в дату, либо наоборот (может потребоваться проверить и поиграться с форматами даты):

if Maximum({@tx plan date}, {CDCLIENT.SORT_NAME})= "1999-01-01" then ToText(currentdate-Maximum ({CDASSFRM.DATE_EFFECTIVE}, {CDCLIENT.SORT_NAME}),"yyyy-MM-dd") else 
Date(Maximum ({@tx plan date}, {CDCLIENT.SORT_NAME}))-Maximum ({CDASSFRM.DATE_EFFECTIVE}, {CDCLIENT.SORT_NAME})
Другие вопросы по тегам