|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Отчет в excel с групировкой
Добрый день.
Помогите с отчетом Делаю выборку и вставку в excel етим кодом Код:
ADOQuery4.SQL.add('SELECT Main. obl , Main.kod, Main.nazva FROM Main'); ADOQuery4.SQL.add('GROUP BY Main. obl, Main.kod, Main.nazva HAVING (((Count(Main.kod))>0)) ORDER BY Main. obl'); ADOQuery4.Active:= true; XLApp:= CreateOleObject ('Excel.Application'); XLApp.Workbooks.Add (-4167); XLApp.Workbooks [1]. WorkSheets [1]. Name:= 'Отчет'; Colum:= XLApp.Workbooks [1]. WorkSheets ['Отчет']. Columns; XLApp.Worksheets[1].PageSetup.LeftMargin:=(0.25); XLApp.Worksheets[1].PageSetup.RightMargin:= (0.25); XLApp.Worksheets[1].PageSetup.TopMargin:=(0.75); XLApp.Worksheets[1].PageSetup.BottomMargin:=(0.75); XLApp.Worksheets[1].PageSetup.HeaderMargin:=(0.3); XLApp.Worksheets[1].PageSetup.FooterMargin:= (0.3); XLApp.Worksheets[1].PageSetup.zoom:=80; XLApp.Worksheets[1].PageSetup.Orientation := 2; Colum.Columns [1]. ColumnWidth:= 25.5; Colum.Columns [3]. ColumnWidth:= 12; Colum:= XLApp.Workbooks [1]. WorkSheets ['Отчет']. Rows; Sheet:= XLApp.Workbooks [1]. WorkSheets ['Отчет']; Sheet.Range['a1','q1'].Merge(false); Sheet.Cells [1,1]:= 'Заказы по областям'; Sheet.Cells [1,1].font.size:='14'; Sheet.Cells [1,1].Font.Underline := xlUnderlineStyleSingle; Sheet.Cells [1,1].Font.Bold := True; Sheet.Cells [1,1].HorizontalAlignment:=xlCenter; Sheet.Cells [1,1].Font.Color:= clSkyBlue; Sheet.Cells [2,1]:= 'Обл'; Sheet.Cells [2,2]:= 'Код'; Sheet.Cells [2,3]:= 'Название'; Sheet.PageSetup.LeftFooter:='Дата ' +DateToStr(Now); index:= 3; ADOQuery4.First; for i:= 0 to ADOQuery4.RecordCount-1 do begin Sheet.Cells [index, 1]:= ADOQuery4.Fields.Fields [0]. AsString; Sheet.Cells [index, 2]:= ADOQuery4.Fields.Fields [1]. AsString; Sheet.Cells [index, 3]:= ADOQuery4.Fields.Fields [2]. AsString; Inc (index); ADOQuery4.Next; end; XLApp.Visible:= true; в итоге получаеться вот так как в файле заказы а как сделать чтобы выводилось вот так как в файле заказы1 |
#2
|
|||
|
|||
Лень код писать. Общая идея такая:
1. Заводишь строковую переменную для названия. Инициализируешь, например, пустой строкой. Пусть будет sName. 2. Заводишь целочисленную переменную для кол-ва. Инициализируешь 0. Пусть будет iCount. 2. Цикл по записям 2.1. Если значение в поле Название не равно sName, то: - Если iCount > 0, то всталяешь строку с выводом кол-ва - Обнуляешь переменную iCount - Вставляешь Название в отчет - Присваиваешь sName новое значение Названия Иначе - Inc(icount) - Вставляешь пустоту в колонку с названием. 2.2. Конец цикла. 3. Если iCount > 0, то вставляем еше финальную стоку с кол-вом записей. Все. Ну и строку экселя придется вручную расчитывать... |