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})