Rass
Зарегистрирован: 06.12.2011 Сообщения: 2
|
Добавлено: Вт Дек 06 2011 08:39 Заголовок сообщения: Отключить SubTotal через Delphi 7 |
|
|
Доброго времени суток, форумчане!
Помогите мне в таком деле: Через Delphi 7 генерирую сводную таблицу (pivot table) все делается замечательно, все как нужно разместил, НО никак не могу отключить у поля находящегося в столбце SubTotal, меня устраивает общий итог, но не устраивает после каждой колонки, помогите пожалуйста, очень срочное дело
Вот кусок кода:
Код: |
XLS.Connect;//соединились с Excel
XLS.Interactive[LCID]:=False;
XLS.Visible[LCID]:=True;//сделали его видимым
WB:=XLS.Workbooks.Add(emptyparam,LCID);//добавили книгу и возвратили ссылку на интерфейс
WS:=(XLS.ActiveSheet as _WorkSheet);//получили ссылку на интерфейс активной страницы
XLS.EnableEvents:=False;//запретили реагировать на события
WS.Name := g_Route;
//небольшое форматирование заголовка
WS.Range['A1',emptyparam].Value2:=g_Route;
WS.Range['A1',emptyparam].Font.Size:=12;
WS.Range['A1',emptyparam].Font.Bold:=True;
WS.Range['A1',emptyparam].Font.Italic:=True;
WS.Range['A1',emptyparam].Font.Underline:=xlUnderlineStyleSingle;
//создадим кэш для хранения данных и укажем тип данных - внешний
PC:=WB.PivotCaches.Add(xlExternal,emptyparam);
//строка подключения
PC.Connection:=('OLEDB;Provider=SQLOLEDB.1;Password=***;Persist Security Info=True;User ID=***;Initial Catalog=REPORTS;Data Source=***;');
//укажем, что тип получения данных - SQL-запрос
PC.CommandType:=xlCmdSQL;
//собственно сам запрос
PC.CommandText:='Select *, (NAME_USER COLLATE Cyrillic_General_CI_AS + '' '' + FolioUID) AS TT From Reports..AgentSale';
//создадим PivotTable в ячейке 'A2' и получим ссылку на ее интерфейс
PT:=PC.CreatePivotTable(WS.Range['A2',emptyparam],'PivotTable1',emptyparam,xlPivotTableVersionCurrent);
if PT.Version=xlPivotTableVersion10 then WB.ShowPivotTableFieldList:=False;
//запретим прорисовывать данные колонок и столбцов пока не определны поля данных
PT.DisplayImmediateItems:=False;
//запретили пересчитывать отчет без надобности
PT.ManualUpdate:=True;
XLS.EnableEvents:=True;
PT.ManualUpdate:=True;
//-------------------------
//создаем данные колонок
with (PT.PivotFields('NAME_ARTIC') as PivotField) do
begin
Caption := 'Наименование товара';
Orientation := xlColumnField;
end;
with (PT.PivotFields('EDIN_IZMER') as PivotField) do
begin
Caption:='Единица измерения';
Orientation:=xlColumnField;
end;
//-------------------------
//начинаем заполнять колонки
//т.к. ограничение по кол-ву строк =65535 то детализацию можно и не сворачивать
with (PT.PivotFields('TT') as PivotField) do
begin
Caption:='Название торговой точки';
Orientation:=xlRowField;
end;
//-------------------------
//ну и заполним поле данных
with PT.AddDataField(PT.PivotFields('PACKAGES'),'Кол-во уп.',xlSum) do
begin
if not XLS.UseSystemSeparators then
//если мы используем разделители Excel
//то формат такой
NumberFormat:='#'+XLS.ThousandsSeparator+'##0'+XLS.DecimalSeparator+'0'
else
//если разделители установленные в системе
//то вот так
NumberFormat:='#'+ThousandSeparator+'##0'+DecimalSeparator+'0';
end;
XLS.EnableEvents:=True;
PT.ManualUpdate:=True;
XLS.Interactive[LCID]:=True;
XLS.Disconnect;
|
|
|