powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Диаграмма Ганта
2 сообщений из 2, страница 1 из 1
Диаграмма Ганта
    #39225322
EugeneYa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте. Есть вопрос по коду диаграммы ганта.
Есть таблица задачи, есть shared component для выпадающего списка заданий.
Код PL/SQL dynamic content:
Код: 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.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
declare
   c integer := 0;
   d date;
   d2 date;
   ed date;
   d_count pls_integer := 0;
   x integer;
   l_start_cell number;
   l_col_span number;
   l_left_cells integer;
   l_ms varchar2(4000);
   l_proj number;
   l_complete_id number := null;
   l_weeks number := 22;
   l_months number;
   l_color varchar2(30) := null;
   l_title varchar2(4000);
   l_first_month  varchar2(100);
   l_last_month   varchar2(100);
   l_month_span integer;
   l_month_weeks integer;
begin

-- compute start date 
d := trunc(sysdate);
ed := d + (30 * l_weeks);

-- print headers
l_month_span := 0;
l_month_weeks := 0;
l_last_month := trim(to_char(d+30,'Month'));

sys.htp.prn('<table cellspacing="0" cellpadding="0" class="timelineTable">');

sys.htp.prn('<thead><tr>');
sys.htp.prn('<th></th>');
for i in 1..l_weeks loop
    d2 := d + ((i - 1)*30);
    l_first_month := trim(to_char(d2+30,'Month'));
    if l_first_month != l_last_month then
       htp.prn('<th class="monthLabel" colspan="'||l_month_span||'">'||l_last_month||'</th>');
       l_month_weeks := l_month_weeks + l_month_span;
       l_month_span := 0;
    end if;
    l_month_span := l_month_span + 1;
    l_last_month := l_first_month;
end loop;
if l_month_weeks < l_weeks then
    d2 := d + (30 * l_weeks) + 30;
    htp.prn('<th class="monthLabel" colspan="'||to_char(l_weeks - l_month_weeks)||'">'||
        to_char(d2,'Month')||'</th>');
end if;
sys.htp.prn('</tr>');



sys.htp.prn('<tr>');
sys.htp.prn('<th></th>');
for i in 1..l_weeks loop
    d2 := d + ((i - 1)*30);
    sys.htp.prn('<th class="weekLabel">'||to_char(d2,'DD')||'-'||to_char(d2+30,'DD')||'</th>');
end loop;
sys.htp.prn('</tr></thead><tbody class="hideMe">');

-- print row
for c1 in (
select distinct zadid milestone_name
from podzadachi
where (nvl(:P38_NEW,'0') = '0' or zadid = :P38_NEW)
order by 1) loop

c := 0;

for c2 in (
select
   podzadid,
   zadid,
   podzadname milestone_name,
   statuszad    milestone_status,
   rukid milestone_owner,
   dnpodzad MILESTONE_START_DATE,
   dopodzad MILESTONE_DATE,
   to_char(dopodzad,'Month') the_month,
   to_char(dopodzad,'YYYY') the_year,
   to_char(dopodzad,'DD') the_day
from podzadachi
where zadid = c1.milestone_name
order by dopodzad
) loop

c := c + 1;
   if c = 1 then
--      sys.htp.prn('<tr>');
      if length(c1.milestone_name) > 50 then
         l_proj := substr(c1.milestone_name,1,50)||'...';
      else
         l_proj := c1.milestone_name;
      end if;
      sys.htp.prn('</tbody><tbody><tr><th><a href="#">'||
         sys.htf.escape_sc(l_proj)||'</a></th>');
   else
      sys.htp.p('<tr><th></th>');
   end if;

  -- compute starting cell
   if c2.MILESTONE_START_DATE <= d then
      l_start_cell := 1;
   else
      l_start_cell := (c2.MILESTONE_START_DATE - d) / 7;
   end if;
   l_start_cell := ceil(l_start_cell);
   
   -- before milestone
   if l_start_cell > 1 then
      l_left_cells := l_start_cell - 1;
      for j in 1..l_left_cells loop
          sys.htp.prn('<td></td>');
      end loop;
   else
      l_left_cells := 0;
   end if;
-- complete milestone length
   if (c2.MILESTONE_DATE - greatest(c2.MILESTONE_START_DATE,d)) < 7 then
      l_col_span := 1;
   else
      l_col_span := (c2.MILESTONE_DATE - greatest(c2.MILESTONE_START_DATE,d)) / 7;
   end if;
   l_col_span := ceil(l_col_span);
   
   l_ms := substr(c2.milestone_name,1,greatest((l_col_span * 15),22));
   if length(l_ms) < length(c2.milestone_name) then
      l_ms := l_ms ||'...';
   end if;
   -- color
   if upper(nvl(c2.milestone_status,'Open')) = 50 then
       l_color := 'completedMilestone';
   elsif upper(nvl(c2.milestone_status,'Open')) = 75 and c2.MILESTONE_DATE >= trunc(sysdate) then
       l_color := '';
   elsif upper(nvl(c2.milestone_status,'Open')) = 100 and c2.MILESTONE_DATE < trunc(sysdate) then
       l_color := 'lateMilestone';
   else
       l_color := 'brown';
   end if;

l_title :=  trim(to_char(c2.MILESTONE_START_DATE,'DD Month')) ||' - '||
       trim(to_char(c2.MILESTONE_DATE,'DD Month'));
   if c2.milestone_owner is not null then
      l_title := l_title||' - '||sys.htf.escape_sc(c2.milestone_owner);
   end if;
   
   sys.htp.prn('<td colspan="'||l_col_span||'">');
   sys.htp.prn('<a href="#" class="'||l_color||'">');
   sys.htp.prn(sys.htf.escape_sc(l_ms)||'</a></td>');
     
     
   -- fill to right
   x := l_weeks - (l_left_cells + l_col_span);
   if x > 0 then
      for j in 1..x loop
         sys.htp.p('<td></td>');
      end loop;
   end if;
     
   sys.htp.prn('</tr>');
end loop; -- inner loop

sys.htp.prn('</tbody>');

end loop; -- outer loop



-- class values are green red blue brown

-- close table
sys.htp.prn('</table>');

end;


после запуска выходит ошибка:
"Error during rendering of region "DGantt".
ORA-06502: PL/SQL: numeric or value error: character to number conversion error"
Можете подсказать, где был допущен промах?
Заранее спасибо.
...
Рейтинг: 0 / 0
Диаграмма Ганта
    #39225406
EugeneYa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все получилось, забыла в "Open" установить процент выполнения
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Диаграмма Ганта
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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