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

Диаграмма Ганта .. + Галактика = Миф или реальность

Добавлено: 02 сен 2009, 13:27
Masygreen
Товарисчи .. если есть опыт или встречался какой либо мануал как подружить галактику с диаграммой ганта прошу отписатся ...
варианты любые кто что знает ... вплоть до импорта в Project ... :)

Добавлено: 02 сен 2009, 14:25
Seybukan
Есть стандартное решение выгрузки планов в МS Project.
Но мы сейчас идем другим путем, так как стандартные предложения не устраивают. Слишком громоздко и медленно.

А так:
1. Выгружаете в XLS, потом запускаете МS Project и загружаете данные из XLS через схему. (идем этим путем)
2. Выгружаете в XML, потом запускаете МS Project и загружаете данные из XML.
3. Формируете свою таблицу, куда кидаете данные. В МS Project проект формируете через ODBC.
4. Формируете отчет в FR, там есть диаграмма ганта простенькая.

Достаточно для простого примера выгрузить:
1. Порядклвый номер
2. Название
3. Начало
4. Окончание
5. Длительность
6. Предшественники (список номеров предшественников)

Добавлено: 02 сен 2009, 16:24
Masygreen
Спасибо .. попробую .. пляски интересные..:)

Добавлено: 02 сен 2009, 18:56
LaaLaa
Вроде в производственных модулях есть интегрированное решение с диаграммами Ганта.

Добавлено: 02 сен 2009, 19:05
Seybukan
1. Сделай диаграмму простую в прожекте.
2. Сделай сохранение в XLS. Настрой схему и сохрани ее. Количество полей минимально(достаточно тех что я указал).
3. Сделай выгрузку из галактики чего либо в полученный "шаблон" XLS.
4. Открой в прожекте файл XLS при помощи ранее сохраненной схемы.

Пункт 4 можно запустить макросом из самого же отчета XLS.

Добавлено: 02 сен 2009, 21:01
LaaLaa
Еше диаграммы Ганта можно печатать в FastReport.

Когда выйду из отпуска опубликую пример (все осталось на работе)

А пока возможно поможет следующая информация:

FastReport рисует диаграммы с помошью набора компонент "TeeChart Std" котрый входит в поставку любой версии Delphi. Возможно в документации по Delphi или в документации по FastReport (http://fast-report.com/ru/documentation/) надете описание и примеры. Составить выгрузку из VIP не так уж и сложно.

Еще "TeeChart Std" это на самом деле урезанная версия набора компонент "TeeChart Pro", посмотрите на сайте производителя (http://www.steema.com/products/teechart ... rview.html) может быть там тоже найдете примеры и документацию с описанием принципов программирования диаграмм.

Добавлено: 03 сен 2009, 10:47
Seybukan
Еше диаграммы Ганта можно печатать в FastReport
Да но там уж очень простенькая диаграмма.
Не нашел например как заполняется процент выполнения (в том числе и показывается на графике), групповые задачи, вывести дополнительный текст в диаграмму (пояснения).

Добавлено: 03 сен 2009, 12:07
Masygreen
Seybukan писал(а): Да но там уж очень простенькая диаграмма.
Не нашел например как заполняется процент выполнения (в том числе и показывается на графике), групповые задачи, вывести дополнительный текст в диаграмму (пояснения).
а примером не поделитесь ?? или мануалом каким?? masygreen (сцабака) gmail.com ??

Добавлено: 03 сен 2009, 12:38
Seybukan
Я зашел в любой отчет FR.
вставил объект диаграмма
добавил из списка гантта
поставил параметр данные "фиксированные данные"
Заполнил через запятую по два параметра.

вот тебе и диаграмма :)

Чтобы посмотреть возможности диаграммы гантта в FR этого достаточно.
Реальный отчет будет отличаться лишь тем что данные будут из набора данных или бенда.

Мне как не программисту этого было достаточно.
Реальный пример должен выложить LaaLaa.

Добавлено: 03 сен 2009, 16:44
Masygreen
спасибо ситуация начала прояснятся .. как закончу выложу код

Добавлено: 03 сен 2009, 17:51
Masygreen
Может кому пригодится .. простейшая диаграмма .. интерфейс выбора договора - по ним строим диаграмму Ганта..

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

const
  cmPrintDoc = 3440;
End;

Interface SelectDogovor;
Show at(1,1,92,30);
  var
    _nRecDogovor:comp;

  create view
  as  select *
      from dogovor
      bounds cVidDog = 281474976710671==dogovor.CVIDDOG(noindex)
      
      bounds cDogovor = _nRecDogovor == dogovor.nrec
      
      bounds cCalplan = dogovor.nrec == calplan.cdogovor and 0==calplan.directplat and 1==calplan.DIRECTMC(noindex);
/**********************************************************************/
   screen DocScreen;
     show at (,,,2);
     buttons cmPrintDoc;
     <<
       <.Печать диараммы.>
     >>
   end
/**********************************************************************/	
  Browse B1;
  show at (,3,,);
    fields
      dogovor.nodoc 'Номер':[7],Protect;
      dogovor.ddoc  'Дата':[80],Protect;
  end;
/**********************************************************************/	
var 
 IsFirstRec : boolean;
 counter : integer;
datastream DocDataStream
 (
     [DogovorNoDoc] Dogovor.noDoc;   //элемент "нулевого" уровня
     [DogovorDDoc] Dogovor.DDoc;   //элемент "нулевого" уровня
    
    table Calplan       //элемент уровня table
    (
      [PosY]      counter;
      [NoDoc]     Calplan.nodoc;
      [DateStart] CALPLAN.DFROM;
      [DateEnd]   Calplan.dto;
    );
    
 )
/**********************************************************************/	
  handleevent table Calplan //обработчик dataset
    cmPreProcess:
    {
      PushBounds(tbcDogovor);
      PushBounds(tbcCalplan);
	  counter := 0;
	}
    
    cmOnProcess:
    {
        counter := counter + 1;
        if( not NextVisual )
          BreakProcess;
    }
      end;

/**********************************************************************/	
  handleevent // обработчик datastream
    cmPreProcess:
      StartNewVisual(vtRotateVisual, 
        vfTimer + vfBreak + vfConfirm, 
        'Формируется отчет', 0);

    cmPostProcess:
      StopVisual('', 0);
  end;
end;

/**********************************************************************/	
  HandleEvent// обработка событий формы
/**********************************************************************/	
  cmInit:
   {
     PushBounds(tbcVidDog);
   }
/**********************************************************************/	
  cmPrintDoc :
   {
    _nRecDogovor := dogovor.nrec;
    RunFReport(DocDataStream, '', false);
    PopBounds(tbcDogovor);
    PopBounds(tbcCalplan);
   };
/**********************************************************************/	
  cmDone:
   {
     CloseInterface(cmDefault);
     stop;
   }
end;
end.
собираем .. далее запускаем делаем отчет сохраняем выходим. отчет прилетает в рабочий ресурсник .. переименовываем его ка надо.

Добавлено: 07 сен 2009, 17:31
LaaLaa
Пример опубликовал здесь: http://code.google.com/p/laalaa/source/ ... vip/FrGant