НаташаXX
Дата: 04.12.2007 11:30:25
есть выборка по определенному условию, и данные все время меняются (ПРимер: ввод периода даты). В Excel выводиться вот такая табличка...
Наименование объекта Срочность ошибки 23 24(даты) Итого
ats74_aMsgErr Несрочная 3 15 Сумма (3+15)
ats74_aMsgErr Полусрочная 3 16 Сумма (3+16)
ats74_aMsgErr Срочная 509 14
ats74_bMsgErr Срочная 4 181
скажите с чего начать?
вот сама процедура ввывода
declare
objExcelApp OLE2.OBJ_TYPE ;
objArgList OLE2.LIST_TYPE ;
ArgList OLE2.LIST_TYPE;
workbooks OLE2.OBJ_TYPE :=NULL;
workbook OLE2.OBJ_TYPE :=NULL;
worksheets OLE2.OBJ_TYPE :=NULL;
worksheet OLE2.OBJ_TYPE :=NULL;
cell OLE2.OBJ_TYPE :=NULL;
bold OLE2.OBJ_TYPE;
Italic OLE2.OBJ_TYPE;
font OLE2.OBJ_TYPE;
inter OLE2.OBJ_TYPE;
border OLE2.OBJ_TYPE;
idCursor EXEC_SQL.CURSTYPE;
idCursor1 EXEC_SQL.CURSTYPE;
idCursor2 EXEC_SQL.CURSTYPE;
idCursor3 EXEC_SQL.CURSTYPE;
idCursor4 EXEC_SQL.CURSTYPE;
vSQLStr VARCHAR2(500):='';
vSQLStr1 VARCHAR2(500):='';
vSQLStr2 VARCHAR2(500):='';
vSQLStr3 VARCHAR2(500):='';
vSQLStr4 VARCHAR2(500):='';
iIgnore PLS_INTEGER:=0;
iIgnore1 PLS_INTEGER:=0;
iIgnore2 PLS_INTEGER:=0;
iIgnore3 PLS_INTEGER:=0;
iIgnore4 PLS_INTEGER:=0;
iROWS PLS_INTEGER:=0;
iROWS1 PLS_INTEGER:=0;
iROWS2 PLS_INTEGER:=0;
iROWS3 PLS_INTEGER:=0;
nloc_sum_amnt number(20):=0;
N varchar2(20):='';
E varchar2(20):='';
kol number(20):=0;
l_DAT varchar(10):=to_char(SYSDATE,'DD');
l_DAT2 varchar(10):=to_char(SYSDATE,'MM');
lp_dat varchar(10):=to_char(SYSDATE,'DD');
lp_dat2 varchar(10):=to_char(SYSDATE,'MM');
nloc_VLS_E_D varchar2(20):='';
nloc_VLS_E_D1 varchar2(255):='';
nloc_VLS_E_D2 varchar2(20):='';
nloc_VLS_E_D3 varchar2(20):='';
nloc_VLS_E_D4 varchar2(20):='';
l_ID_CAT varchar2(20):='';
l_INC_CR varchar2(10):='';
l_VALIDAT_N date:=SYSDATE;
l_VALIDAT_K date:=SYSDATE;
i number(5):=0;
j number(5):=0;
nloc_sum_itog number(20):=0;
l_GOROD varchar2(255):='';
BEGIN
l_GOROD:='Екатеринбург';
l_INC_CR:=:Блок59.ATS4;
l_VALIDAT_N:=:Блок59.datastart4;
l_VALIDAT_K:=:Блок59.dataend4;
lp_dat:=l_VALIDAT_N;
i:=1;
j:=1;
--Инициализация
objExcelApp := OLE2.CREATE_OBJ('Excel.APPLICATION');
--Вскрытие Excel-a
ole2.set_property(objExcelApp, 'Visible', TRUE );
--Инициализация книги------------------------------
workbooks := OLE2.GET_OBJ_PROPERTY(objExcelApp, 'Workbooks');
workbook := OLE2.GET_OBJ_PROPERTY(workbooks, 'Add');
--Создать новый лист--------------------------------
worksheets := OLE2.GET_OBJ_PROPERTY(workbook, 'Worksheets');
worksheet := OLE2.GET_OBJ_PROPERTY(worksheets, 'Add');
ArgList:=OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(ArgList, 1);
OLE2.ADD_ARG(ArgList, 1);
cell:=OLE2.get_OBJ_property(worksheet, 'cells', ArgList);
OLE2.Invoke(cell,'select');
OLE2.DESTROY_ARGLIST(ArgList);
--Переименовать лист----------------------------
OLE2.set_property(worksheet, 'Name', 'Отчет № 4');
j:=3;
--Выделить ячейку--------------------------------
OLE2.RELEASE_OBJ(cell);
ArgList:=OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(ArgList, i);
OLE2.ADD_ARG(ArgList, j);
cell:=OLE2.get_OBJ_property(worksheet, 'cells', ArgList);
OLE2.Invoke(cell,'select');
OLE2.DESTROY_ARGLIST(ArgList);
--Заполнить ячейку--------------------------------
-- OLE2.set_property( cell, 'Value', ' Количество аварийных сообщений по каждой АСТ за месяц' );
i:=i+1;
j:=1;
--Выделить ячейку--------------------------------
OLE2.RELEASE_OBJ(cell);
ArgList:=OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(ArgList, i);
OLE2.ADD_ARG(ArgList, j);
cell:=OLE2.get_OBJ_property(worksheet, 'cells', ArgList);
OLE2.Invoke(cell,'select');
OLE2.DESTROY_ARGLIST(ArgList);
--Заполнить ячейку--------------------------------
OLE2.set_property( cell, 'Value', 'Дата печати: '||to_char( l_VALIDAT_N, 'dd.mm.yyyy hh24:mi:ss'));
j:=j+2;
--Выделить ячейку--------------------------------
OLE2.RELEASE_OBJ(cell);
ArgList:=OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(ArgList, i);
OLE2.ADD_ARG(ArgList, j);
cell:=OLE2.get_OBJ_property(worksheet, 'cells', ArgList);
OLE2.Invoke(cell,'select');
OLE2.DESTROY_ARGLIST(ArgList);
--Заполнить ячейку--------------------------------
OLE2.set_property( cell, 'Value', l_GOROD );
i:=i+1;
j:=j-1;
--Выделить ячейку--------------------------------
OLE2.RELEASE_OBJ(cell);
ArgList:=OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(ArgList, i);
OLE2.ADD_ARG(ArgList, j);
cell:=OLE2.get_OBJ_property(worksheet, 'cells', ArgList);
OLE2.Invoke(cell,'select');
OLE2.DESTROY_ARGLIST(ArgList);
i:=i+1;
j:=1;
--Выделить ячейку--------------------------------
OLE2.RELEASE_OBJ(cell);
ArgList:=OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(ArgList, i);
OLE2.ADD_ARG(ArgList, j);
cell:=OLE2.get_OBJ_property(worksheet, 'cells', ArgList);
OLE2.Invoke(cell,'select');
OLE2.DESTROY_ARGLIST(ArgList);
--Заполнить ячейку--------------------------------
OLE2.set_property( cell, 'Value', 'Количество аварийных сообщений по '||l_INC_CR ||' АСТ за период ' ||to_char(l_VALIDAT_N, 'dd.mm.yyyy hh24:mi:ss') || ' по ' || to_char(l_VALIDAT_K, 'dd.mm.yyyy hh24:mi:ss'));
i:=i+1;
j:=1;
--Выделить ячейки--------------------------------
OLE2.RELEASE_OBJ(cell);
ArgList:=OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(ArgList, 'A'||3);
OLE2.ADD_ARG(ArgList, 'C'||i);
cell:=OLE2.get_OBJ_property(worksheet, 'range', ArgList);
OLE2.DESTROY_ARGLIST(ArgList);
OLE2.Invoke(cell,'select');
--Установить ширину столбца------------------------
OLE2.set_property(cell, 'ColumnWidth', 22);
--Установить жирный шрифт-----------------------
bold := OLE2.get_OBJ_property(cell, 'Font');
OLE2.set_property(bold, 'Bold', TRUE);
OLE2.RELEASE_OBJ(bold);
--Установить курсив-----------------------------
Italic := OLE2.get_OBJ_property(cell, 'Font');
OLE2.set_property(Italic, 'Italic', TRUE);
OLE2.RELEASE_OBJ(Italic);
--Установить размер шрифта-----------------------
font := OLE2.get_OBJ_property(cell, 'Font');
OLE2.set_property(font, 'Size', 14);
OLE2.RELEASE_OBJ(font);
--Установить цвет шрифта-----------------------
font := OLE2.get_OBJ_property(cell, 'Font');
OLE2.set_property(font, 'ColorIndex', 32);
OLE2.RELEASE_OBJ(font);
i:=i+1;
j:=1;
--Выделить ячейку--------------------------------
OLE2.RELEASE_OBJ(cell);
ArgList:=OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(ArgList, i);
OLE2.ADD_ARG(ArgList, j);
cell:=OLE2.get_OBJ_property(worksheet, 'cells', ArgList);
OLE2.Invoke(cell,'select');
OLE2.DESTROY_ARGLIST(ArgList);
--Заполнить ячейку--------------------------------
OLE2.set_property( cell, 'Value', 'Наименование объекта' );
--Установить жирный шрифт-----------------------
bold := OLE2.get_OBJ_property(cell, 'Font');
OLE2.set_property(bold, 'Bold', TRUE);
OLE2.RELEASE_OBJ(bold);
border := OLE2.get_OBJ_property(cell, 'Borders');
OLE2.set_property(border, 'ColorIndex', 1);
OLE2.set_property(border, 'Bold', TRUE);
OLE2.RELEASE_OBJ(border);
j:=j+1;
--Выделить ячейку--------------------------------
OLE2.RELEASE_OBJ(cell);
ArgList:=OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(ArgList, i);
OLE2.ADD_ARG(ArgList, j);
cell:=OLE2.get_OBJ_property(worksheet, 'cells', ArgList);
OLE2.Invoke(cell,'select');
OLE2.DESTROY_ARGLIST(ArgList);
--Заполнить ячейку--------------------------------
OLE2.set_property( cell, 'Value', 'Срочность ошибки' );
--Установить жирный шрифт-----------------------
bold := OLE2.get_OBJ_property(cell, 'Font');
OLE2.set_property(bold, 'Bold', TRUE);
OLE2.RELEASE_OBJ(bold);
border := OLE2.get_OBJ_property(cell, 'Borders');
OLE2.set_property(border, 'ColorIndex', 1);
OLE2.set_property(border, 'Bold', TRUE);
OLE2.RELEASE_OBJ(border);
j:=3;
begin
vSQLStr:='select t1.naim, err_num, count(t1.err_num) as kol1, to_char(t1.datat_start,''DD'') as D1
from av_signal74_norm t1
where t1.err_naim= :lp_INC_CR
and t1.datat_start >=:lp_VALIDAT_N
and t1.datat_end <=:lp_VALIDAT_K
group by t1.naim, t1.err_num, to_char(t1.datat_start,''DD'')order by t1.naim';
idCursor2:=EXEC_SQL.Open_Cursor;
vSQLStr1:='select distinct d1 from ('||vSQLStr||') order by d1';
EXEC_SQL.Parse(idCursor2,vSQLStr1,exec_sql.V7);
EXEC_SQL.Bind_Variable(idCursor2,':lp_VALIDAT_N', l_VALIDAT_N);
EXEC_SQL.Bind_Variable(idCursor2,':lp_VALIDAT_K', l_VALIDAT_K);
EXEC_SQL.Bind_Variable(idCursor2,':lp_INC_CR', l_INC_CR );
EXEC_SQL.Define_Column(idCursor2, 1, l_DAT, 3);
iIgnore2:=EXEC_SQL.Execute(idCursor2);
WHILE (EXEC_SQL.Fetch_Rows(idCursor2)>0) LOOP
EXEC_SQL.Column_Value(idCursor2, 1, l_DAT);
iRows:=iRows+1;
--Выделить ячейку--------------------------------
OLE2.RELEASE_OBJ(cell);
ArgList:=OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(ArgList, i);
OLE2.ADD_ARG(ArgList, j);
cell:=OLE2.get_OBJ_property(worksheet, 'cells', ArgList);
OLE2.Invoke(cell,'select');
OLE2.DESTROY_ARGLIST(ArgList);
--Заполнить ячейку--------------------------------
OLE2.set_property( cell, 'Value', l_DAT);
OLE2.set_property(cell, 'HorizontalAlignment', 'xlLeft');
border := OLE2.get_OBJ_property(cell, 'Borders');
OLE2.set_property(border, 'ColorIndex', 1);
OLE2.set_property(border, 'Bold', TRUE);
OLE2.RELEASE_OBJ(border);
bold := OLE2.get_OBJ_property(cell, 'Font');
OLE2.set_property(bold, 'Bold', TRUE);
OLE2.RELEASE_OBJ(bold);
idCursor1:=EXEC_SQL.Open_Cursor;
-- j:=j+1;
vSQLStr2:='select naim, err_num, sum(decode(d1,:lp_dat,kol1,0)) as kol from ('||vSQLStr||') group by naim, err_num order by naim,err_num' ;
EXEC_SQL.Parse(idCursor1,vSQLStr2,exec_sql.V7);
EXEC_SQL.Bind_Variable(idCursor1,':lp_dat', l_DAT);
EXEC_SQL.Bind_Variable(idCursor1,':lp_VALIDAT_N', l_VALIDAT_N);
EXEC_SQL.Bind_Variable(idCursor1,':lp_VALIDAT_K', l_VALIDAT_K);
EXEC_SQL.Bind_Variable(idCursor1,':lp_INC_CR', l_INC_CR );
EXEC_SQL.Define_Column(idCursor1, 1, nloc_VLS_E_D, 15);
EXEC_SQL.Define_Column(idCursor1, 2, nloc_VLS_E_D2,15);
EXEC_SQL.Define_Column(idCursor1, 3, nloc_VLS_E_D3,7);
iIgnore1:=EXEC_SQL.Execute(idCursor1);
WHILE (EXEC_SQL.Fetch_Rows(idCursor1)>0) LOOP
EXEC_SQL.Column_Value(idCursor1, 1, nloc_VLS_E_D);
EXEC_SQL.Column_Value(idCursor1, 2, nloc_VLS_E_D2);
EXEC_SQL.Column_Value(idCursor1, 3, nloc_VLS_E_D3);
iRows1:=iRows1+1;
i:=i+1;
--Выделить ячейку--------------------------------
OLE2.RELEASE_OBJ(cell);
ArgList:=OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(ArgList, i);
OLE2.ADD_ARG(ArgList, 1);
cell:=OLE2.get_OBJ_property(worksheet, 'cells', ArgList);
OLE2.Invoke(cell,'select');
OLE2.DESTROY_ARGLIST(ArgList);
--Заполнить ячейку--------------------------------
OLE2.set_property( cell, 'Value', nloc_VLS_E_D);
border := OLE2.get_OBJ_property(cell, 'Borders');
OLE2.set_property(border, 'ColorIndex', 1);
OLE2.RELEASE_OBJ(border);
--Выделить ячейку--------------------------------
OLE2.RELEASE_OBJ(cell);
ArgList:=OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(ArgList, i);
OLE2.ADD_ARG(ArgList, 2);
cell:=OLE2.get_OBJ_property(worksheet, 'cells', ArgList);
OLE2.Invoke(cell,'select');
OLE2.DESTROY_ARGLIST(ArgList);
--Заполнить ячейку--------------------------------
OLE2.set_property( cell, 'Value', nloc_VLS_E_D2 );
border := OLE2.get_OBJ_property(cell, 'Borders');
OLE2.set_property(border, 'ColorIndex', 1);
OLE2.RELEASE_OBJ(border);
--Выделить ячейку--------------------------------
OLE2.RELEASE_OBJ(cell);
ArgList:=OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(ArgList, i);
OLE2.ADD_ARG(ArgList, j);
cell:=OLE2.get_OBJ_property(worksheet, 'cells', ArgList);
OLE2.Invoke(cell,'select');
OLE2.DESTROY_ARGLIST(ArgList);
--Заполнить ячейку--------------------------------
OLE2.set_property( cell, 'Value', nloc_VLS_E_D3 );
border := OLE2.get_OBJ_property(cell, 'Borders');
OLE2.set_property(border, 'ColorIndex', 1);
OLE2.RELEASE_OBJ(border);
end loop;
EXEC_SQL.Close_Cursor (idCursor1);
j:=j+1;
i:=6;
END LOOP;
EXEC_SQL.Close_Cursor (idCursor2);
OLE2.RELEASE_OBJ(cell);
ArgList:=OLE2.CREATE_ARGLIST;
OLE2.ADD_ARG(ArgList, 6);
OLE2.ADD_ARG(ArgList, j);
cell:=OLE2.get_OBJ_property(worksheet, 'cells', ArgList);
OLE2.Invoke(cell,'select');
OLE2.DESTROY_ARGLIST(ArgList);
--Заполнить ячейку--------------------------------
OLE2.set_property( cell, 'Value', 'Всего' );
--Установить жирный шрифт-----------------------
bold:= OLE2.get_OBJ_property(cell, 'Font');
OLE2.set_property(bold, 'Bold', TRUE);
OLE2.RELEASE_OBJ(bold);
border := OLE2.get_OBJ_property(cell, 'Borders');
OLE2.set_property(border, 'ColorIndex', 1);
OLE2.set_property(border, 'Bold', TRUE);
OLE2.RELEASE_OBJ(border);
OLE2.set_property(cell, 'HorizontalAlignment', 'xlLeft');