Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / [Crystal Reports XI] Проблема со switch'ом / 3 сообщений из 3, страница 1 из 1
07.11.2011, 11:32
    #37514038
CrazHunt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Crystal Reports XI] Проблема со switch'ом
Добрый день!
Вот такая проблема: Существует два параметра (дата-время) @DF (дата начала) и @DT (дата окончания). Необходимо в отчете вывести дату (например @DF) по следующему принципу.
Если @DF = NULL и @DT=NULL, тогда выводится первое число предыдущего месяца
Если @DF = NULL и @DT<>NULL, тогда выводится 01.01.1999
Если введено так что дата начала больше даты окончания (@DF>@DT), тогда вывести надо @DT
Создаю формулу и пишу туда
Код: plaintext
1.
2.
3.
4.
5.
6.
SWITCH
    (
    ISNULL({?@DF}) AND ISNULL({?@DT}), CSTR(DateAdd("d",-DatePart ("d",CurrentDate )+ 1 ,  DateAdd ("m",- 1  , CurrentDateTime)),"dd.MM.yyyy"),
    ISNULL({?@DF}) AND NOT ISNULL({?@DT}), "01.01.1999",
    (NOT ISNULL({?@DF}) AND NOT ISNULL({?@DT}) AND {?@DF}>{?@DT}), CSTR({?@DT},"dd.MM.yyyy"),
    (NOT ISNULL({?@DF}) AND NOT ISNULL({?@DT}) AND {?@DF}<{?@DT}), CSTR({?@DF},"dd.MM.yyyy")
    )
Но вот что-то не срастается. При вводе @DF=какая-то_дата и @DT=NULL, в отчете ничего не появляется.
Сломал всю голову...
...
Рейтинг: 0 / 0
07.11.2011, 12:35
    #37514166
CrazHunt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Crystal Reports XI] Проблема со switch'ом
Решил проблему заменив switch на много if'ов - корявенько, но работает:

Код: plaintext
1.
2.
3.
4.
IF (NOT ISNULL({?@DF}) AND NOT ISNULL({?@DT}) AND {?@DF}>{?@DT}) THEN CSTR({?@DT},"dd.MM.yyyy")
    ELSE IF (NOT ISNULL({?@DF}) AND NOT ISNULL({?@DT}) AND {?@DF}<{?@DT}) THEN CSTR({?@DF},"dd.MM.yyyy")
        ELSE IF (ISNULL({?@DF}) AND ISNULL({?@DT})) THEN CSTR(DateAdd("d",-DatePart ("d",CurrentDate )+ 1 ,  DateAdd ("m",- 1  , CurrentDateTime)),"dd.MM.yyyy")
            ELSE IF (ISNULL({?@DF}) AND NOT ISNULL({?@DT})) THEN "01.01.1999"
 ELSE CSTR({?@DF},"dd.MM.yyyy")

Но все-таки хотелось бы узнать, как то же самое сделать switch'ом, да так, чтобы еще и работало...
...
Рейтинг: 0 / 0
13.11.2011, 15:57
    #37524248
FantomGood
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[Crystal Reports XI] Проблема со switch'ом
CrazHunt,

в SWITCH нет варианта для @DF=какая-то_дата и @DT=NULL
нужно приписать данный вариант или сделать default
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
SWITCH
    (
    ISNULL({?@DF}) AND ISNULL({?@DT}), CSTR(DateAdd("d",-DatePart ("d",CurrentDate )+ 1 ,  DateAdd ("m",- 1  , CurrentDateTime)),"dd.MM.yyyy"),
    ISNULL({?@DF}) AND NOT ISNULL({?@DT}), "01.01.1999",
    (NOT ISNULL({?@DF}) AND NOT ISNULL({?@DT}) AND {?@DF}>{?@DT}), CSTR({?@DT},"dd.MM.yyyy"),
    (NOT ISNULL({?@DF}) AND NOT ISNULL({?@DT}) AND {?@DF}<{?@DT}), CSTR({?@DF},"dd.MM.yyyy")
, true,  "01.01.1999"    )
...
Рейтинг: 0 / 0
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / [Crystal Reports XI] Проблема со switch'ом / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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