![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Добрый день.
Помогите с отчетом Делаю выборку и вставку в 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, то вставляем еше финальную стоку с кол-вом записей. Все. Ну и строку экселя придется вручную расчитывать... |