Страница 1 из 1

Экспорт состава проекта в doc-файл

Добавлено: 08 окт 2007, 10:08
Анна
Вот есть проект, имеющий, предположим, вот такой вид:

Рабочий проект (стадия проектирования)
...Том 1
...Том 2
.....Раздел 1
.......Книга 1
.......Книга 2
.....Раздел 2
.......Книга 1
.........Часть 1
.....Раздел 3
.........Часть 1

А может он иметь и такой вид:
Инженерные изыскания (стадия проектирования)
...Том 1
.....Часть 1
...Том 2
.....Книга 1
.......Часть 1
.....Книга 2
.......Часть 1
...Раздел 1
.....Книга 1
........Часть 1

Все это называтся - состав проекта и он может быть разным. Тома, части, разделы, книги - это объекты, имеющие свои атрибуты.
Включены они могут быть в разном порядке. Закономерности никакой.

Задача в следующем: Необходимо состав проекта выгрузить в doc-файл в виде таблицы. Может кто решал подобные задачи, подскажите, как это сделать.

[Исправил название темы на более точно соответствующее сути -- Administrator_PLM_Board]

Добавлено: 08 окт 2007, 20:38
Старик Крупский
А какова должна быть структура таблицы? Количество уровней в структуре проекта равно количеству столбцов или попроще?

Добавлено: 09 окт 2007, 09:41
Анна
Структура таблицы

Номер Обозначение Наименование
1...............................Том 1. Наименование
1.1............................Раздел 1. Наименование
2...............................Том 2. Наименование
2.1............................Раздел 1. Наименование
2.1.1.........................Книга 1. Наименование
2.1.2.........................Книга 2. Наименование
2.2............................Раздел 2. Наименование
2.2.1.........................Книга 1. Наименование
2.2.1.1.......................Часть 1. Наименование
2.2.1.2.......................Часть 1. Наименование

Добавлено: 09 окт 2007, 10:50
Disillusioned
При помощи хранимой процедуры это несложно сделать.
Вот заготовка кода для Sybase SQL Anywhere:

Код: Выделить всё

create procedure UnloadProject(in @obj_id numeric(18))
begin
declare local temporary table #res(
  id numeric(18),
  pos varchar(255),
  aLevel integer,
  )
declare @maxLevel integer;
declare @tree_linktype integer;

set @tree_linktype=1;
set @maxLevel=0;

insert into #res(id,pos,aLevel) values(@obj_id,'1.',@maxLevel)
while exists(select id from #res where aLevel=@maxLevel) loop
        insert into #res(id,pos)
                select tl.link_id,#res.pos  from #res join tree_link_view as tl on #res.id = tl.parent_id  
                    where #res.aLevel=@maxLevel and tl.link_type_id = @tree_linktype;
set @maxLevel=@maxLevel+1;
update #res set 
   pos=pos+right('  '+cast(number() as char),3),
   aLevel=@maxLevel
   where aLevel is null;
end loop;
select * from #res order by pos;
end

Добавлено: 10 окт 2007, 17:53
Старик Крупский
Включение в атрибуты элементов состава проекта их номеров для сортировки решило бы задачу...
Но возможно, это можно сделать и проще, сделав два отчета - по одному для каждой стадии проектирования. Уже будет проще, но надо будет решить вопрос с признаком для сортировки.
Первый вариант конечно, в разы проще - даже думать не надо будет :-)