Ошибка при формировании отчета
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
mmm_kazan Участник со стажем
Вступление в Клуб: 28.03.2018
|
Ср Май 30, 2018 09:58  Ошибка при формировании отчета |
|
Полезность: Нет оценки
|
Снова привет. )
Взял работающий отчет, заменил в нем начинку ( проверку, параметры, форму)
Начал на новом отчете ругаться типа:
С чем это может быть связано?
Сначала, кстати Excel не отображал - но явно отрабатывал.
Потом попытался явно указать файл excel ( не P_FILE := [MSLIB].GetReportPath||'\XLS\KAR_Прил.xls' .
После этого и обратно вернуться не могу. |
|
 |
Ezhik Участник со стажем
Вступление в Клуб: 17.04.2009
|
Ср Май 30, 2018 10:38   |
|
Полезность: Нет оценки
|
На ЭФО нет объекта Buffer. Вообще, клиент-скрипт - зло. Пользуйтесь OOXML, там и быстрее и без VBS можно обойтись. |
|
 |
mmm_kazan Участник со стажем
Вступление в Клуб: 28.03.2018
|
Ср Май 30, 2018 11:30   |
|
Полезность: Нет оценки
|
Ezhik пишет: | На ЭФО нет объекта Buffer. Вообще, клиент-скрипт - зло. Пользуйтесь OOXML, там и быстрее и без VBS можно обойтись. |
Да у нас все отчеты не через OOXML.
Поведение какое-то странное.
Вот сейчас сделал заново отчет - про Buffer не ругается, но excel не открывает.
iRow number :=16;
m_acc_20202_all varchar(2000);
m_summ_20202_all_dt number;
m_count_20202_all_dt number;
m_summ_20202_all_kt number;
m_count_20202_all_kt number;
m_summ_20202_dt varchar(2000);
m_count_20202_dt varchar(2000);
m_summ_20202_kt varchar(2000);
m_count_20202_kt varchar(2000);
begin
if p_message = 'DEFAULT' Then
EXCEL.init_xls;
V_DEST := null;
P_DATE_BEGIN := trunc(sysdate-1);
P_DEPART := SYS_CONTEXT('IBS_USER','OURDEPART');
P_KASHIR := stdlib.user_id;
P_FILE := [MSLIB].GetReportPath||'XLS\KAR_Прил.xls';
elsif p_message = 'VALIDATE' then
if P_INFO = 'OK' then
if P_DATE_BEGIN is null then
pragma error('Заполните Дату');
end if;
if P_DEPART is null then
pragma error('Заполните подразделение');
end if;
if EXCEL.f_click then
EXCEL.f_click := false;
EXCEL.open_file(P_FILE,false);
EXCEL.open_sheet('КАССА');
EXCEL.Write(7,1,'Сводная справка о кассовых оборотах по балансовым и внебалансовым счетам за '||to_char(P_DATE_BEGIN,'dd.mm.yyyy')||' г.');
m_acc_20202_all := '';
m_summ_20202_all_dt := 0;
m_count_20202_all_dt := 0;
m_summ_20202_all_kt := 0;
m_count_20202_all_kt := 0;
m_summ_20202_dt := '';
m_count_20202_dt := '';
m_summ_20202_kt := '';
m_count_20202_kt := '';
for(select ac1 (ac1 : acc_dt)
in ::[AC_FIN] all
where
substr(ac1.[MAIN_V_ID],1, = '20202810'
and P_DEPART = ac1.[DEPART]
and ac1.[DATE_OP]<=P_DATE_BEGIN
and (ac1.[DATE_CLOSE]>P_DATE_BEGIN or ac1.[DATE_CLOSE] is null)
order by ac1.[MAIN_V_ID]
)
loop
m_acc_20202_all := m_acc_20202_all||ac1.acc_dt.[MAIN_V_ID]||chr(10);
for(select md1 (sum(md1.[SUM_NT]) : m_summ_20202,
count(1) : m_count_20202)
in ::[MAIN_DOCUM] all
where
md1.[ACC_DT]=ac1.[acc_dt]
and md1.[DATE_PROV] >= P_DATE_BEGIN
and md1.[DATE_PROV] < P_DATE_BEGIN+1
and md1%state='PROV'
)
loop
m_summ_20202_dt := m_summ_20202_dt||to_char(nvl(md1.m_summ_20202,0),'9999999999.99')||chr(10);
m_summ_20202_all_dt := m_summ_20202_all_dt + nvl(md1.m_summ_20202,0);
m_count_20202_dt := m_count_20202_dt||(nvl(md1.m_count_20202,0))||chr(10);
m_count_20202_all_dt := m_count_20202_all_dt + nvl(md1.m_count_20202,0);
end loop;
for(select md1 (sum(md1.[SUM_NT]) : m_summ_20202,
count(1) : m_count_20202)
in ::[MAIN_DOCUM] all
where
md1.[ACC_KT]=ac1.acc_dt
and md1.[DATE_PROV] >= P_DATE_BEGIN
and md1.[DATE_PROV] < P_DATE_BEGIN+1
and md1%state='PROV'
)
loop
m_summ_20202_kt := m_summ_20202_kt||to_char(nvl(md1.m_summ_20202,0),'9999999999.99')||chr(10);
m_summ_20202_all_kt := m_summ_20202_all_kt + nvl(md1.m_summ_20202,0);
m_count_20202_kt := m_count_20202_kt||(nvl(md1.m_count_20202,0))||chr(10);
m_count_20202_all_kt := m_count_20202_all_kt + nvl(md1.m_count_20202,0);
end loop;
EXCEL.Write(iRow,1,'20202');
EXCEL.Write(iRow,2,m_count_20202_all_dt);
EXCEL.Write(iRow,3,m_summ_20202_all_dt);
EXCEL.Write(iRow,4,m_count_20202_all_kt);
EXCEL.Write(iRow,5,m_summ_20202_all_kt);
EXCEL.Write(iRow+1,1,m_acc_20202_all);
EXCEL.Write(iRow+1,2,m_count_20202_dt);
EXCEL.Write(iRow+1,3,m_summ_20202_dt);
EXCEL.Write(iRow+1,4,m_count_20202_kt);
EXCEL.Write(iRow+1,5,m_summ_20202_kt);
end loop;
if P_KASS then
iRow := iRow + 2;
else
[EXCEL].Delete_row(iRow+1,iRow+1);
iRow := iRow + 1;
end if;
for(select md1 (sum(md1.[SUM_NT]) : m_sum_20202,
count(1) : m_count_20202)
in ::[MAIN_DOCUM] all
where
substr(md1.[ACC_DT].[MAIN_V_ID],1, = '90701810'
and md1.[DATE_PROV] >= P_DATE_BEGIN
and md1.[DATE_PROV] < P_DATE_BEGIN+1
and md1%state='PROV'
and P_DEPART = md1.[ACC_DT].[DEPART]
)
loop
EXCEL.Write(iRow,2,md1.m_count_20202);
EXCEL.Write(iRow,3,md1.m_sum_20202);
exit;
end loop;
for(select md1 (sum(md1.[SUM_NT]) : m_sum_20202,
count(1) : m_count_20202)
in ::[MAIN_DOCUM] all
where
substr(md1.[ACC_KT].[MAIN_V_ID],1, = '90701810'
and md1.[DATE_PROV] >= P_DATE_BEGIN
and md1.[DATE_PROV] < P_DATE_BEGIN+1
and md1%state='PROV'
and P_DEPART = md1.[ACC_KT].[DEPART]
)
loop
EXCEL.Write(iRow,4,md1.m_count_20202);
EXCEL.Write(iRow,5,md1.m_sum_20202);
exit;
end loop;
iRow := iRow + 1;
for(select md1 (sum(md1.[SUM_NT]) : m_sum_20202,
count(1) : m_count_20202)
in ::[MAIN_DOCUM] all
where
substr(md1.[ACC_DT].[MAIN_V_ID],1, = '91202810'
and md1.[DATE_PROV] >= P_DATE_BEGIN
and md1.[DATE_PROV] < P_DATE_BEGIN+1
and md1%state='PROV'
and P_DEPART = md1.[ACC_DT].[DEPART]
)
loop
EXCEL.Write(iRow,2,md1.m_count_20202);
EXCEL.Write(iRow,3,md1.m_sum_20202);
exit;
end loop;
for(select md1 (sum(md1.[SUM_NT]) : m_sum_20202,
count(1) : m_count_20202)
in ::[MAIN_DOCUM] all
where
substr(md1.[ACC_KT].[MAIN_V_ID],1, = '91202810'
and md1.[DATE_PROV] >= P_DATE_BEGIN
and md1.[DATE_PROV] < P_DATE_BEGIN+1
and md1%state='PROV'
and P_DEPART = md1.[ACC_KT].[DEPART]
)
loop
EXCEL.Write(iRow,4,md1.m_count_20202);
EXCEL.Write(iRow,5,md1.m_sum_20202);
exit;
end loop;
iRow := iRow + 1;
for(select md1 (sum(md1.[SUM_NT]) : m_sum_20202,
count(1) : m_count_20202)
in ::[MAIN_DOCUM] all
where
substr(md1.[ACC_DT].[MAIN_V_ID],1, = '91207810'
and md1.[DATE_PROV] >= P_DATE_BEGIN
and md1.[DATE_PROV] < P_DATE_BEGIN+1
and md1%state='PROV'
and P_DEPART = md1.[ACC_DT].[DEPART]
)
loop
EXCEL.Write(iRow,2,md1.m_count_20202);
EXCEL.Write(iRow,3,md1.m_sum_20202);
exit;
end loop;
for(select md1 (sum(md1.[SUM_NT]) : m_sum_20202,
count(1) : m_count_20202)
in ::[MAIN_DOCUM] all
where
substr(md1.[ACC_KT].[MAIN_V_ID],1, = '91207810'
and md1.[DATE_PROV] >= P_DATE_BEGIN
and md1.[DATE_PROV] < P_DATE_BEGIN+1
and md1%state='PROV'
and P_DEPART = md1.[ACC_KT].[DEPART]
)
loop
EXCEL.Write(iRow,4,md1.m_count_20202);
EXCEL.Write(iRow,5,md1.m_sum_20202);
exit;
end loop;
iRow := iRow + 5;
EXCEL.Write(iRow,4,P_KASHIR.[NAME]);
EXCEL.visible;
EXCEL.release;
end if;
EXCEL.exec_script(V_DEST);
end if;
end if;
end; |
|
 |
Volod Эксперт
Вступление в Клуб: 19.09.2007
|
Ср Май 30, 2018 14:18   |
|
Полезность: Нет оценки
|
Операцию скопировали из рабочего отчета, или новую делали? |
|
 |
mmm_kazan Участник со стажем
Вступление в Клуб: 28.03.2018
|
Ср Май 30, 2018 15:02   |
|
Полезность: Нет оценки
|
Volod пишет: | Операцию скопировали из рабочего отчета, или новую делали? |
Новую |
|
 |
mmm_kazan Участник со стажем
Вступление в Клуб: 28.03.2018
|
Ср Май 30, 2018 15:02   |
|
Полезность: Нет оценки
|
mmm_kazan пишет: | Volod пишет: | Операцию скопировали из рабочего отчета, или новую делали? |
Новую |
|
|
 |
Volod Эксперт
Вступление в Клуб: 19.09.2007
|
Ср Май 30, 2018 16:07   |
|
Полезность: 1
|
Лучше использовать копию аналогичного отчета.
Что в клиент-скрипте?
У переменной V_DEST идентификатор DEST?
Ок валидируемая?
И пишите , наконец, код в тегах Code.
Селектом, кстати, можно одним обойтись. |
|
 |
vtar Эксперт
Вступление в Клуб: 20.03.2009
|
Ср Май 30, 2018 16:16   |
|
Полезность: Нет оценки
|
excel.put()
....
excel.put()
---------------------
excel.print_array
на порядок быстрее выводит |
|
 |
mmm_kazan Участник со стажем
Вступление в Клуб: 28.03.2018
|
Ср Май 30, 2018 16:54   |
|
Полезность: Нет оценки
|
Volod пишет: | Лучше использовать копию аналогичного отчета.
Что в клиент-скрипте?
У переменной V_DEST идентификатор DEST?
Ок валидируемая?
И пишите , наконец, код в тегах Code.
Селектом, кстати, можно одним обойтись. |
Так в общем сделано.
Excel не хочет открываться |
|
 |
Ezhik Участник со стажем
Вступление в Клуб: 17.04.2009
|
Ср Май 30, 2018 17:00   |
|
Полезность: Нет оценки
|
CheckValidate на DEST стоит?
Скрин вкладки "Дополнительные свойства" можно еще? |
|
 |
Volod Эксперт
Вступление в Клуб: 19.09.2007
|
Ср Май 30, 2018 17:18   |
|
Полезность: Нет оценки
|
Цитата: | CheckValidate на DEST стоит? |
А он нужен? Достаточно Ок.
Код: | if p_info = 'OK' Then |
|
|
 |
mmm_kazan Участник со стажем
Вступление в Клуб: 28.03.2018
|
Чт Май 31, 2018 08:25   |
|
Полезность: Нет оценки
|
Ezhik пишет: | CheckValidate на DEST стоит?
Скрин вкладки "Дополнительные свойства" можно еще? |
Вот |
|
 |
mmm_kazan Участник со стажем
Вступление в Клуб: 28.03.2018
|
Чт Май 31, 2018 08:25   |
|
Полезность: Нет оценки
|
Ezhik пишет: | CheckValidate на DEST стоит?
Скрин вкладки "Дополнительные свойства" можно еще? |
Вот |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|