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

Дерево

 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Уроки ЦФТ-Банк для начинающих
Предыдущая тема :: Следующая тема  
Автор Сообщение
ict_2010
Участник со стажем


Вступление в Клуб: 25.03.2015
СообщениеЧт Апр 30, 2015 11:36   Дерево Ответить с цитатой
Полезность: Нет оценки
Добрый день!Подскажите пож-та как вывести в отчете т.е. в excel инфо в виде иерархии ну или древовидной структуры. Например одна запись и все его подзаписи?
vtar
Эксперт


Вступление в Клуб: 20.03.2009
СообщениеЧт Апр 30, 2015 14:14    Ответить с цитатой
Полезность: Нет оценки
Код:

i integer;
begin

   EXCEL.INIT_XLS;
   EXCEL.OPEN_FILE('', true,false);

   i := 0;
   for ( select dep(dep.[ code]: dep_code, dep.[NAME]: dep_name,  level: lev) in [DEPART]
         connect by  dep.[HIGH] = PRIOR dep
         start  dep = this
         order by level
      ) loop
      i := i + 1;
      EXCEL.Put( i, 1, dep.lev);
      EXCEL.Put( i, 2, i);
      EXCEL.Put( i, 3, dep.dep_code);
      EXCEL.Put( i, 4, dep.dep_name);
   end loop;      
   
   Excel.Print_Array;
   EXCEL.visible;
    EXCEL.release;

    stdio.put_line_buf('<% CALL RUNTIME EXCEL_RUN null %>');
   
end;
ict_2010
Участник со стажем


Вступление в Клуб: 25.03.2015
СообщениеВс Май 03, 2015 16:54    Ответить с цитатой
Полезность: Нет оценки
vtar пишет:
Код:

i integer;
begin

   EXCEL.INIT_XLS;
   EXCEL.OPEN_FILE('', true,false);

   i := 0;
   for ( select dep(dep.[ code]: dep_code, dep.[NAME]: dep_name,  level: lev) in [DEPART]
         connect by  dep.[HIGH] = PRIOR dep
         start  dep = this
         order by level
      ) loop
      i := i + 1;
      EXCEL.Put( i, 1, dep.lev);
      EXCEL.Put( i, 2, i);
      EXCEL.Put( i, 3, dep.dep_code);
      EXCEL.Put( i, 4, dep.dep_name);
   end loop;      
   
   Excel.Print_Array;
   EXCEL.visible;
    EXCEL.release;

    stdio.put_line_buf('<% CALL RUNTIME EXCEL_RUN null %>');
   
end;


спасибо большое, а можете теперь немного прокомментировать, то что написали, есть некоторые моменты, которые не совсем понятны,Например что за level-это реквизит, почему start - что значит?Вот этот фрагмент connect by dep.[HIGH] = PRIOR dep тоже ?
Alkov
Профи


Вступление в Клуб: 23.09.2010
СообщениеПн Май 04, 2015 15:53   Re: Дерево Ответить с цитатой
Полезность: Нет оценки
ict_2010 пишет:
Добрый день!Подскажите пож-та как вывести в отчете т.е. в excel инфо в виде иерархии ну или древовидной структуры. Например одна запись и все его подзаписи?

Вам в Excel надо чтоб по плюсикам разворачивались дочерние,
или просто в один столбец вывести как выше показали ?
Random
Эксперт


Вступление в Клуб: 27.06.2011
СообщениеВт Май 05, 2015 07:04    Ответить с цитатой
Полезность: Нет оценки
ict_2010 пишет:
vtar пишет:
Код:

i integer;
begin

   EXCEL.INIT_XLS;
   EXCEL.OPEN_FILE('', true,false);

   i := 0;
   for ( select dep(dep.[ code]: dep_code, dep.[NAME]: dep_name,  level: lev) in [DEPART]
         connect by  dep.[HIGH] = PRIOR dep
         start  dep = this
         order by level
      ) loop
      i := i + 1;
      EXCEL.Put( i, 1, dep.lev);
      EXCEL.Put( i, 2, i);
      EXCEL.Put( i, 3, dep.dep_code);
      EXCEL.Put( i, 4, dep.dep_name);
   end loop;      
   
   Excel.Print_Array;
   EXCEL.visible;
    EXCEL.release;

    stdio.put_line_buf('<% CALL RUNTIME EXCEL_RUN null %>');
   
end;


спасибо большое, а можете теперь немного прокомментировать, то что написали, есть некоторые моменты, которые не совсем понятны,Например что за level-это реквизит, почему start - что значит?Вот этот фрагмент connect by dep.[HIGH] = PRIOR dep тоже ?


Иерархические запросы Oracle
Код:
select level -- уровень иерархии
from table where <условие на результирующую выборку>
start with <условие поиска начального узла, с которого начинается строиться иерархия>
connect by <условие присоединения дочерних узлов>

В Excel иерархическая структура строится по-другому.
Попробуйте просто начать запись макроса, сделать пример иерархии, закончить запись макроса, а потом посмотреть, что получилось, и переписать под себя?
ict_2010
Участник со стажем


Вступление в Клуб: 25.03.2015
СообщениеСр Май 06, 2015 05:42   Re: Дерево Ответить с цитатой
Полезность: Нет оценки
Alkov пишет:
ict_2010 пишет:
Добрый день!Подскажите пож-та как вывести в отчете т.е. в excel инфо в виде иерархии ну или древовидной структуры. Например одна запись и все его подзаписи?

Вам в Excel надо чтоб по плюсикам разворачивались дочерние,
или просто в один столбец вывести как выше показали ?


Просто в виде списка выходили в один столбец
ict_2010
Участник со стажем


Вступление в Клуб: 25.03.2015
СообщениеСр Май 06, 2015 06:01    Ответить с цитатой
Полезность: Нет оценки
Random пишет:
ict_2010 пишет:
vtar пишет:
Код:

i integer;
begin

   EXCEL.INIT_XLS;
   EXCEL.OPEN_FILE('', true,false);

   i := 0;
   for ( select dep(dep.[ code]: dep_code, dep.[NAME]: dep_name,  level: lev) in [DEPART]
         connect by  dep.[HIGH] = PRIOR dep
         start  dep = this
         order by level
      ) loop
      i := i + 1;
      EXCEL.Put( i, 1, dep.lev);
      EXCEL.Put( i, 2, i);
      EXCEL.Put( i, 3, dep.dep_code);
      EXCEL.Put( i, 4, dep.dep_name);
   end loop;      
   
   Excel.Print_Array;
   EXCEL.visible;
    EXCEL.release;

    stdio.put_line_buf('<% CALL RUNTIME EXCEL_RUN null %>');
   
end;


спасибо большое, а можете теперь немного прокомментировать, то что написали, есть некоторые моменты, которые не совсем понятны,Например что за level-это реквизит, почему start - что значит?Вот этот фрагмент connect by dep.[HIGH] = PRIOR dep тоже ?


Иерархические запросы Oracle
Код:
select level -- уровень иерархии
from table where <условие на результирующую выборку>
start with <условие поиска начального узла, с которого начинается строиться иерархия>
connect by <условие присоединения дочерних узлов>

В Excel иерархическая структура строится по-другому.
Попробуйте просто начать запись макроса, сделать пример иерархии, закончить запись макроса, а потом посмотреть, что получилось, и переписать под себя?

По вашему примеру у меня не совсем правильно выходит, дело в том что все данные у меня хранятся в одной ТБП "All problems" где она в свою очередь имеет реквизиты "MainName"(типа как родитель) и "Name"(типа как потомок). Реквизит "MainName" ссылается на саму себя, т.е. на ТБП "All problems". Например я создаю запись с помощью операции "Добавить". Первоначально реквизит "MainName" будет пуст, а в реквизит "Name" пишу там "Создать форм". Далее выбираю данную запись с какой то операцией эту запись "Создать форм" отправляю там на тестирование или на проверку например с операцией "Отправить на тест". Так вот этом случае у меня создается новая запись и там в качестве родителя автоматически указывается "Создать Форм", а в качестве потомка в реквизите "Name" записывается автоматически - "На тестирование "Создать форм"". Так вот у этой записи могут и быть другие потомки такие как на проверку или рассмотрение и мне необходимо чтоб выводились все потомки вот этой "Создать форм" ну и сама запись это "Создать форм" тоже выводился.
Random
Эксперт


Вступление в Клуб: 27.06.2011
СообщениеСр Май 06, 2015 10:13    Ответить с цитатой
Полезность: Нет оценки
ict_2010 пишет:
По вашему примеру у меня не совсем правильно выходит, дело в том что все данные у меня хранятся в одной ТБП "All problems" где она в свою очередь имеет реквизиты "MainName"(типа как родитель) и "Name"(типа как потомок). Реквизит "MainName" ссылается на саму себя, т.е. на ТБП "All problems". Например я создаю запись с помощью операции "Добавить". Первоначально реквизит "MainName" будет пуст, а в реквизит "Name" пишу там "Создать форм". Далее выбираю данную запись с какой то операцией эту запись "Создать форм" отправляю там на тестирование или на проверку например с операцией "Отправить на тест". Так вот этом случае у меня создается новая запись и там в качестве родителя автоматически указывается "Создать Форм", а в качестве потомка в реквизите "Name" записывается автоматически - "На тестирование "Создать форм"". Так вот у этой записи могут и быть другие потомки такие как на проверку или рассмотрение и мне необходимо чтоб выводились все потомки вот этой "Создать форм" ну и сама запись это "Создать форм" тоже выводился.


Извините, я ничего не понял.
В приведённом vtar и мною примере имеется справочник, как-то заполненный на момент выполнения запроса.
Этот срез выводится в иерархическом виде.
Постройте ваш справочник хотя бы на бумаге - как он должен быть связан, какие значения у каких записей в каких реквизитах должны быть.
ict_2010
Участник со стажем


Вступление в Клуб: 25.03.2015
СообщениеЧт Май 07, 2015 07:25    Ответить с цитатой
Полезность: Нет оценки
Random пишет:
ict_2010 пишет:
По вашему примеру у меня не совсем правильно выходит, дело в том что все данные у меня хранятся в одной ТБП "All problems" где она в свою очередь имеет реквизиты "MainName"(типа как родитель) и "Name"(типа как потомок). Реквизит "MainName" ссылается на саму себя, т.е. на ТБП "All problems". Например я создаю запись с помощью операции "Добавить". Первоначально реквизит "MainName" будет пуст, а в реквизит "Name" пишу там "Создать форм". Далее выбираю данную запись с какой то операцией эту запись "Создать форм" отправляю там на тестирование или на проверку например с операцией "Отправить на тест". Так вот этом случае у меня создается новая запись и там в качестве родителя автоматически указывается "Создать Форм", а в качестве потомка в реквизите "Name" записывается автоматически - "На тестирование "Создать форм"". Так вот у этой записи могут и быть другие потомки такие как на проверку или рассмотрение и мне необходимо чтоб выводились все потомки вот этой "Создать форм" ну и сама запись это "Создать форм" тоже выводился.


Извините, я ничего не понял.
В приведённом vtar и мною примере имеется справочник, как-то заполненный на момент выполнения запроса.
Этот срез выводится в иерархическом виде.
Постройте ваш справочник хотя бы на бумаге - как он должен быть связан, какие значения у каких записей в каких реквизитах должны быть.

Высылаю в word документе справочник и то как необходимо отображать в Excel.
Damir
Участник - экстремал


Вступление в Клуб: 29.03.2013
СообщениеЧт Май 07, 2015 08:12    Ответить с цитатой
Полезность: Нет оценки
ict_2010 пишет:
...

в Oracle есть еще
Цитата:
ORDER SIBLINGS BY

- 'деревянная' сортировка дерева
Random
Эксперт


Вступление в Клуб: 27.06.2011
СообщениеЧт Май 07, 2015 10:36    Ответить с цитатой
Полезность: Нет оценки
ict_2010 пишет:
Высылаю в word документе справочник и то как необходимо отображать в Excel.


Ну неужели вы не обращаете внимание на некоторое сходство вашего справочника со справочником depart ?

depart:
id - текущая запись.
high - вышестоящая запись.
ict_2010
Участник со стажем


Вступление в Клуб: 25.03.2015
СообщениеЧт Май 07, 2015 13:43    Ответить с цитатой
Полезность: Нет оценки
тема закрыта, проблема решена
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Уроки ЦФТ-Банк для начинающих Часовой пояс: GMT + 3
Страница 1 из 1

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