CftClub.ru
Клуб специалистов ЦФТ-Банк

Получение выписки по счёту

 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle
Предыдущая тема :: Следующая тема  
Автор Сообщение
yaffil
Профи


Вступление в Клуб: 18.08.2011
СообщениеЧт Дек 06, 2012 10:46   Получение выписки по счёту Ответить с цитатой
Полезность: Нет оценки
Что я делаю не так? Пытаюсь попасть в выписку по счёту
x.C_VIPISKA - это реквизит счёта x.[ARC_MOVE]

Код:

                  for (select y(y%id :C_ID
                  ,y.[DATE] :C_DATE
                  ,y.[DOC].[DOCUMENT_NUM] :C_NUM_DOC
                  )in ::[RECORDS]all
                  where y%collection=x.C_VIPISKA
                  and y.[DATE]<=P_ENDDATE
                  and y.[DATE]>=P_BEGDATE
                  )loop
                  [EXCEL].Write(i,2,to_char(y.C_DATE,'DD.MM.YYYY'),false,false,10,'Times New Roman','CT');
                  [EXCEL].Write(i,3,y.C_NUM_DOC);
                  i:=i+1;
                  end loop;
Chekan
Участник со стажем


Вступление в Клуб: 29.11.2012
СообщениеЧт Дек 06, 2012 11:50   Re: Получение выписки по счёту Ответить с цитатой
Полезность: Нет оценки
yaffil пишет:
Что я делаю не так? Пытаюсь попасть в выписку по счёту
x.C_VIPISKA - это реквизит счёта x.[ARC_MOVE]

Код:

                  for (select y(y%id :C_ID
                  ,y.[DATE] :C_DATE
                  ,y.[DOC].[DOCUMENT_NUM] :C_NUM_DOC
                  )in ::[RECORDS]all
                  where y%collection=x.C_VIPISKA
                  and y.[DATE]<=P_ENDDATE
                  and y.[DATE]>=P_BEGDATE
                  )loop
                  [EXCEL].Write(i,2,to_char(y.C_DATE,'DD.MM.YYYY'),false,false,10,'Times New Roman','CT');
                  [EXCEL].Write(i,3,y.C_NUM_DOC);
                  i:=i+1;
                  end loop;

x.C_VIPISKA - откуда? ты описал подзапрос?
yaffil
Профи


Вступление в Клуб: 18.08.2011
СообщениеЧт Дек 06, 2012 11:56    Ответить с цитатой
Полезность: Нет оценки
Это loop по таблице фин. счета ::[AC_FIN]

Код:

for (select x(x%id :C_ID
                     ,x.[ARC_MOVE] :C_VIPISKA
                     ) in ::[AC_FIN]
Alexsey
Эксперт


Вступление в Клуб: 06.09.2007
СообщениеЧт Дек 06, 2012 12:20    Ответить с цитатой
Полезность: Нет оценки
а что мешает сделать выборку так:

Код:
for (select y(y%id :C_ID
     ,y.[DATE] :C_DATE
     ,y.[DOC].[DOCUMENT_NUM] :C_NUM_DOC
      )in ::[RECORDS], (::[AC_FIN] Mad) all
      where y%collection=x.[ARC_MOVE]
      and y.[DATE]<=P_ENDDATE
      and y.[DATE]>=P_BEGDATE
)loop
      [EXCEL].Put(i,2,to_char(y.C_DATE,'DD.MM.YYYY'),false,false,10,'Times New Roman','CT');
      [EXCEL].Put(i,3,y.C_NUM_DOC);
      i:=i+1;
end loop;
[EXCEL].Print_Array;

_________________
всегда есть как минимум 2 выхода
yaffil
Профи


Вступление в Клуб: 18.08.2011
СообщениеЧт Дек 06, 2012 12:27    Ответить с цитатой
Полезность: Нет оценки
Спасибо, сейчас попробую. Просто хотелось для шапки идти по счетам, а потом вложенным loop по выписке.
Чтобы было типа:

По счету ... за период ...
Вх на дату запрос ...
Дата открытия ..

Собственно выписка

----------------------
По счету ... а период ...
Вх на дату запрос ...
Дата открытия ..

Собственно выписка

...
Alexsey
Эксперт


Вступление в Клуб: 06.09.2007
СообщениеЧт Дек 06, 2012 12:57    Ответить с цитатой
Полезность: 1
запоминаешь обрабатываемый счет, и сравниваешь с обрабатываемой строкой. отличается в в шапку не отличается другие действия.
А 2 цикла это медленно.


вариант c 2-я циклами
Код:
for acc in ::[AC_FIN]
loop
     for (select y(y%id :C_ID
          ,y.[DATE] :C_DATE
          ,y.[DOC].[DOCUMENT_NUM] :C_NUM_DOC
           )in acc.[ARC_MOVE]
           where y.[DATE]<=P_ENDDATE
           and y.[DATE]>=P_BEGDATE
     )loop
           [EXCEL].Put(i,2,to_char(y.C_DATE,'DD.MM.YYYY'),false,false,10,'Times New Roman','CT');
           [EXCEL].Put(i,3,y.C_NUM_DOC);
           i:=i+1;
     end loop;
end loop;
[EXCEL].Print_Array;

_________________
всегда есть как минимум 2 выхода
yaffil
Профи


Вступление в Клуб: 18.08.2011
СообщениеЧт Дек 06, 2012 13:38    Ответить с цитатой
Полезность: Нет оценки
Alexsey пишет:

вариант c 2-я циклами


В такой конструкции как и у меня в первоначальном варианте тоже пустая выписка выводится, хотя счёт поднимается тот который надо, в эта дату документы тоже в выписки присутствуют.
Может где то надо крыж какой поставить?
vtar
Эксперт


Вступление в Клуб: 20.03.2009
СообщениеЧт Дек 06, 2012 13:45    Ответить с цитатой
Полезность: 1
косячок с интервалами ?

1)как в дистр. коде

select r(count(r%id))
in ::[RECORDS] all
where r%collection = Coll
and r.[DATE] >= StartDate
and r.[DATE] < EndDate+1
into nRetVar;

2)или trunc с обеих сторон
yaffil
Профи


Вступление в Клуб: 18.08.2011
СообщениеЧт Дек 06, 2012 13:46    Ответить с цитатой
Полезность: Нет оценки
Alexsey пишет:
а что мешает сделать выборку так:


Нарисовал простое представление по данному селекту, результат отрицательный - данных за этот день по счёту нет Sad

Компилятор предупреждает: типы ::[RECORDS] и ::[AC_FIN] несовместимы.

Как правильно по счёту залезть в выписку?
yaffil
Профи


Вступление в Клуб: 18.08.2011
СообщениеЧт Дек 06, 2012 13:52    Ответить с цитатой
Полезность: Нет оценки
vtar пишет:
косячок с интервалами ?

1)как в дистр. коде

select r(count(r%id))
in ::[RECORDS] all
where r%collection = Coll
and r.[DATE] >= StartDate
and r.[DATE] < EndDate+1
into nRetVar;

2)или trunc с обеих сторон


Угу, точно. СПС. Хотя странно оба типа объявлена как дата без времени.
vtar
Эксперт


Вступление в Клуб: 20.03.2009
СообщениеЧт Дек 06, 2012 13:54    Ответить с цитатой
Полезность: Нет оценки
yaffil пишет:
Хотя странно оба типа объявлена как дата без времени.

в оракле все даты с временем Smile
yaffil
Профи


Вступление в Клуб: 18.08.2011
СообщениеЧт Дек 06, 2012 13:57    Ответить с цитатой
Полезность: Нет оценки
Зачем тогда у ЦФТ 2 типа в словаре?
Чтоб жизнь малиной не казалась. Very Happy
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Рейтинг@Mail.ru