powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / [Crystal Reports 2008] Расчет массива (списка) дат для подотчета
7 сообщений из 7, страница 1 из 1
[Crystal Reports 2008] Расчет массива (списка) дат для подотчета
    #37416253
AValentine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
отчетная система Crystal Reports 2008.
На основании заданной даты необходимо рассчитать список дат с начала предыдущего года на конец каждого месяца.
К примеру, в основном отчете я задаю дату 15.08.2011.
Должен сформироваться список дат:
31.01.2010
28.02.2010
31.03.2010
30.04.2010
31.05.2010
30.06.2010
31.07.2010
.....
30.06.2011
31.07.2011
13.08.2011 (заданная дата в отчете - 2 дня).

Далее, необходимо, чтобы эти даты были входными параметрами для подотчета.
Подскажите, пожалуйста, как реализовать эту задачу оптимальным путем?

Заранее благодарю.
...
Рейтинг: 0 / 0
[Crystal Reports 2008] Расчет массива (списка) дат для подотчета
    #37416377
koJIo6ok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сесть подумать после этого обычно все получается )
а что не выходит? получили входные параметры расчитали данные для всех ваших отчетов подотчетов, открыли отчеты
...
Рейтинг: 0 / 0
[Crystal Reports 2008] Расчет массива (списка) дат для подотчета
    #37416417
AValentine,

СУБД какая?
...
Рейтинг: 0 / 0
[Crystal Reports 2008] Расчет массива (списка) дат для подотчета
    #37416510
AValentine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
koJIo6ok:
а что не выходит? получили входные параметры расчитали данные для всех ваших отчетов подотчетов, открыли отчеты
со своей стороны вижу следующий алгоритм расчета массива:
цикл1 i1 = от 2010 до 2011
..цикл2 i2 = от 01 до 12
....если (01.i2.i1 <= 15.08.2011)
......тогда
......массив = массив + последняя дата месяца(01.i2.i1)
......иначе
......завершить цикл
..цикл2 end
цикл1 end

помогите, пожалуйста, такое написать с помощью формул Cystal или может есть более оптимальный вариант решения.
PS: если подскажете хорошую книгу сугубо по формулам Crystal Reports, буду премного благодарен.

Начинающий SQL 2008:
СУБД какая?
у меня доступы к юниверсам SAP Business Objects (симантический слой из реляционной БД для отображения OLAP отчетов). Т.е. прямой доступ к СУБД для отчетов использовать не могу.
...
Рейтинг: 0 / 0
[Crystal Reports 2008] Расчет массива (списка) дат для подотчета
    #37416818
koJIo6ok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну так расчитывайте данные в програмке вашей а в отчет передавайте все готовое
...
Рейтинг: 0 / 0
[Crystal Reports 2008] Расчет массива (списка) дат для подотчета
    #37416976
AValentine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
сначала мне нужно вывести массив дат на экран, чтобы проверить корректность их вычисления.
Но столкнулся с некоторыми проблемами.

по формуле:
Код: plaintext
1.
dateVar array LastDatesArray := [ date( 2011 , 06 , 30 ), date( 2011 , 07 , 31 )]
выдает ошибку: результат формулы не может быть массивом.

хотел вывести результат в цикле:
Код: plaintext
1.
2.
3.
4.
5.
numbervar i;
for i := 2010   to  2015  step  1  do 
(
i;
);
в отчете пишет "Истина" вместо желаемых значений.

как можно сформировать список или массив значений, сначала вывести их в отчете, а в дальнейшем передать в подотчет, как входные параметры?
...
Рейтинг: 0 / 0
[Crystal Reports 2008] Расчет массива (списка) дат для подотчета
    #37429014
AValentine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток.

На основании введенной одной даты генерирую список дат последних дней месяца за предыдущий и текущий год:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
EvaluateAfter({@WPC_Date});
WhilePrintingRecords;
Shared DateVar Array ListLastDayOfMonths;
Local numberVar ArrNum:= 0 ;
Local numberVar yyyy;
Local numberVar mm;

for yyyy:=year({@WPC_Date})- 1  to year({@WPC_Date}) do
    (
        for mm:= 1  to  12  do
        (
            if (yyyy < year({@WPC_Date})) or (yyyy = year({@WPC_Date}) and month({@WPC_Date}) > mm) then
                (
                    ArrNum:= ArrNum+ 1 ;
                    Redim Preserve ListLastDayOfMonths[ArrNum];
                    ListLastDayOfMonths[ArrNum]:=date(DateAdd ('m' , 1 , date("01."+cstr(mm,0,"")+"."+cstr(yyyy,0,"")) - day(date("01."+cstr(mm,0,"")+"."+cstr(yyyy,0,""))) + 1) - 1);
                );
        )
    );

Для {@WPC_Date} = 26.07.2011 получаю:
31.01.2010
28.02.2010
31.03.2010
.....
30.04.2011
31.05.2011
30.06.2011

У меня есть подотчет, у которого 1 параметр List_Date.
В List_Date я могу вручную вбивать список дат:
31.01.2010 00:00:00
28.02.2010 00:00:00
и т.д. и он работает.

Подскажите, пожалуйста, как можно из основного отчета передать массив ListLastDayOfMonths в подотчет в параметр List_Date?

Заранее благодарю.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / [Crystal Reports 2008] Расчет массива (списка) дат для подотчета
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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