Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Создание и работа со сводными таблицами в Excel через Delphi: решение проблемы с добавлением полей OLAP куба

Delphi , Базы данных , Таблицы

Вопрос, поднятый в данном запросе, связан с созданием сводной таблицы в Excel с использованием языка программирования Delphi и работы с OLAP кубами. Разработчик столкнулся с проблемой, связанной с добавлением полей в сводную таблицу, что привело к ошибке "Member not Found" во время выполнения программы.

Проблема

При использовании Delphi для создания сводной таблицы в Excel, которая использует функцию подсчета уникальных значений (Distinct Count), необходимо добавить данные в модель данных Excel. Это действие, в свою очередь, создает OLAP куб в фоновом режиме. В результате, невозможно использовать стандартный компонент Excel_TLB, и приходится прибегать к использованию функций, основанных на GetActiveOLE.

Разработчик успешно выполнил подключение, создание модели данных, кэша сводной таблицы и самого объекта сводной таблицы, но столкнулся с ошибкой при попытке добавить поля в сводную таблицу. При отладке кода после создания объекта сводной таблицы в Excel отображался список возможных столбцов для использования в сводной таблице, которые были размещены на уровне "Range". Однако, попытки добавить поля вручную в коде Delphi не увенчались успехом.

Решение

После анализа проблемы было обнаружено, что параметр для доступа к полям OLAP куба должен передаваться в виде массива, а не внутри скобок. Исправленный код на Delphi для добавления полей в сводную таблицу выглядит следующим образом:

fFilter1 := myPivotTable.CubeFields('[Range].[Category]');
fFilter1.Orientation := xlPageField;

Пример кода

Ниже представлен полный пример кода на Object Pascal (Delphi), который включает в себя создание сводной таблицы в Excel, с учетом использования OLAP куба:

procedure Build_Pivot;
var
    // Переменные для работы с Excel и сводными таблицами
    XLApp: Variant;
    gConnection: Variant;
    myPivotCache, myPivotTable: Variant;
    StartCellRange: Variant;
    fFilter1, fFilter2: Variant;
    // Переменные для подключения
    SheetName, ConnRange, ConnName, ConnString, ConnCommand, ConnPath, ConnFile: String;
    ConnCount: Integer;
begin
    // Инициализация объекта Excel
    XLApp := GetActiveOleObject('Excel.Application');

    // Создание подключения к листу, если добавляем в модель данных
    SheetName := 'RawData';
    ConnRange := '$A:$H';
    ConnCount := XLApp.ActiveWorkbook.Connections.Count;
    ConnName := 'WorksheetConnection' + IntToStr(ConnCount) + '_' + SheetName + '!' + ConnRange;
    // ... (продолжение кода для создания подключения)

    // Создание кэша сводной таблицы
    myPivotCache := XLApp.ActiveWorkbook.PivotCaches.Create(xlExternal, gConnection, 7);

    // Создание объекта сводной таблицы
    StartCellRange := XLApp.ActiveWorkbook.ActiveSheet.Range['A5', 'A5'];
    myPivotTable := myPivotCache.CreatePivotTable(StartCellRange, 'PivotTable1', True, 7);

    // Добавление полей в сводную таблицу
    fFilter1 := myPivotTable.CubeFields('[Range].[Category]');
    fFilter1.Orientation := xlPageField;
    // ... (продолжение кода для настройки полей сводной таблицы)
end;

Заключение

В данной статье мы рассмотрели проблему, с которой столкнулся разработчик при работе со сводными таблицами в Excel через Delphi, а также предоставили решение, основанное на корректном доступе к полям OLAP куба. Важно помнить, что при работе с OLAP кубами необходимо передавать параметры в виде массива, что позволит избежать ошибок, связанных с неверным обращением к членам объекта.

Создано по материалам из источника по ссылке.

Вопрос касается решения проблемы с добавлением полей OLAP куба при создании сводной таблицы в Excel через программирование на Delphi.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Таблицы ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-02-05 09:01:15/0.0034070014953613/0