| 
 
	
		| Предыдущая тема :: Следующая тема |  
		| Автор | Сообщение |  
		| 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    |   |  
				| Полезность: Нет оценки 
 |  
				| в 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    |   |  
				| Полезность: Нет оценки 
 |  
				| тема закрыта, проблема решена |  |  
		|  |  
		|  |  
  
	| 
 
 | Вы не можете начинать темы Вы не можете отвечать на сообщения
 Вы не можете редактировать свои сообщения
 Вы не можете удалять свои сообщения
 Вы не можете голосовать в опросах
 
 |  |