powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / Oracle reports
18 сообщений из 18, страница 1 из 1
Oracle reports
    #38506393
volik017
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот есть таблица клиентов Customer с полем Name.
Есть функция,в процессе вызова которой заполняется вьюха. Пусть называться она будет View.


p_name :='Иванов Иван Иванович'
ret:=function(p_name)
Это, если запустить функцию по одному конкретному клиенту, и если все сойдется в этой функции она просто возвратит то, что и было на входе, но при этом еще заполнится View. И записей во вьюхе может быть несколько.

А надо сделать такой отчет, где на входе этой функции будет поле Name из таблицы клиентов Customer, т.е. отчет по всем клиентам.
Отчет бы выглядел так
NAME1
запись1 из View.
.......
запись N из View.
NAME2
запись1 из View.
.......
запись N из View.
и т.п.
...
Рейтинг: 0 / 0
Oracle reports
    #38506550
-=APS=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"функция,в процессе вызова которой заполняется вьюха" - это как?
...
Рейтинг: 0 / 0
Oracle reports
    #38506579
volik017
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
функция заврапленная (могу только пользовать)
но вьюха такая:

reate or replace view terror_vw as
select
no
, nn
, word
, key_no
from
table(terror.Data_Check) t;
...
Рейтинг: 0 / 0
Oracle reports
    #38506640
-=APS=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А куда передается имя для поиска? это вы террористов ищете? :)
...
Рейтинг: 0 / 0
Oracle reports
    #38506645
volik017
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
имя передается в функцию
в результате выполнения функции заполняется вьюха
...
Рейтинг: 0 / 0
Oracle reports
    #38506649
-=APS=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Функция, в которую передается имя, я так понимаю, тоже не ваша?
...
Рейтинг: 0 / 0
Oracle reports
    #38506664
volik017
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
функция врапленная
да собственно, разврапленной она нам и не нужна
какой результат этой функции мы знаем
на вход ее подается имя
на выходе оно же и возвращается в случае определенного результата+плюс заполяется вьюха
собственно, я повторила пост 1
...
Рейтинг: 0 / 0
Oracle reports
    #38506681
volik017
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
volik017,

кстати, почему тоже не наша?
только она и не наша
...
Рейтинг: 0 / 0
Oracle reports
    #38506697
-=APS=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Получается, у вас, фактически, "заполняется" не вьюха, а некая коллекция, заполнение которой инициируется внешним вызовом.

Как вариант:
постоить в Reports трехуровневый master-detail. q1(select имя from customers) -> q2(select function(имя) from dual) -> q3(select * from terror_vw)
Но это надо поэксперементировать, сходу не скажу, сработает ли.

Второй вариант: построить по этой же логике весь набор данных у себя в хранимой процедуре, и возвращать наружу в Reports целиком.
...
Рейтинг: 0 / 0
Oracle reports
    #38506763
volik017
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
конкретно пробывала так
делала
repeating frame, где источником была таблица костюмеров, там же вывожу поле Name этой таблицы

На этом же поле в триггере пишу вызов той самой функции ret:=function(p_name), которая "заполняет" вьюху данными

в том же repeating frame делалю еще repeating frame, где источником является та самая вьюха.

выдает чего то, но не то
...
Рейтинг: 0 / 0
Oracle reports
    #38506773
-=APS=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сложность в том, что вам нужно обеспечить координированную цепочку (получил имя) -> (дернул функцию для этого имени) -> (зачитал результат выполнения функции для этого имени из view). Если порядок где-то будет нарушен, вы не получите правильных результатов.
...
Рейтинг: 0 / 0
Oracle reports
    #38506786
volik017
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот именно это пока и не получается ))))
...
Рейтинг: 0 / 0
Oracle reports
    #38506876
-=APS=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, как-то так, вроде работает (думаю, идея будет понятна):

Тестовый пример:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
create table test_customers(name varchar2(32));

--

insert into test_customers (name) values ('Ali-Baba');
insert into test_customers (name) values ('Aladdin');
insert into test_customers (name) values ('Al de Baran');

--

create or replace package TEST_PCK is

  function searchItem(p_name in varchar2) return varchar2;
  
  function getItems return sys.odcivarchar2list;

end TEST_PCK;

--

create or replace package body TEST_PCK is

  local_storage_result sys.odcivarchar2list;

  function searchItem(p_name in varchar2) return varchar2 is
  begin

    select p_name||'='||level
    bulk collect into local_storage_result
    from dual
    connect by level <= 5;
    
    return p_name;
    
  end;
  
  function getItems return sys.odcivarchar2list is
  begin
    return local_storage_result;
  end;

end TEST_PCK;

--

create or replace view test_terrorist_vw as select column_value as column_value from table(test_pck.getItems());



Тестовый report прилагается (6i)
...
Рейтинг: 0 / 0
Oracle reports
    #38507474
volik017
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, попробую.
...
Рейтинг: 0 / 0
Oracle reports
    #38507955
ps
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
volik017функция заврапленная (могу только пользовать)
но вьюха такая:

reate or replace view terror_vw as
select
no
, nn
, word
, key_no
from
table(terror.Data_Check) t;

Попробуйте использовать Ref Cursor Query вместо SQL Query. Думаю в вашем варианте это лучшее решение.
...
Рейтинг: 0 / 0
Oracle reports
    #38509242
в обход
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно еще немоного в обход.
Сделать временную или обычную таблицу table_for_view для данных из вью.
В триггере Before Report сделать курсор, который проходит по всем клиентам, для каждой строки курсора вызывать функцию и копировать данные в таблицу table_for_view .
Сам репорт основать на table_for_view.
В конце (или в начале) очищать table_for_view.
...
Рейтинг: 0 / 0
Oracle reports
    #38510008
volik017
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
-=APS=-,

Нет, так не работает.
Работает только в том случае, если функция нашла полное совпадение в таблице по входному параметру name и их не больше одного.
Т.е., если та самая вьюха, которая формируется в процессе отработки функции имеет более одной записи по конкретному name или совпадение не полное (функция ищет и по части текста), то данные не выводятся в отчет.
...
Рейтинг: 0 / 0
Oracle reports
    #38510262
volik017
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
psvolik017функция заврапленная (могу только пользовать)
но вьюха такая:

reate or replace view terror_vw as
select
no
, nn
, word
, key_no
from
table(terror.Data_Check) t;

Попробуйте использовать Ref Cursor Query вместо SQL Query. Думаю в вашем варианте это лучшее решение.

Спасибо, так получилось.
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / Oracle reports
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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