AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: База знаний и проекты
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 28.04.2004, 10:34   #14  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,715 / 1204 (44) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Постановка задачи, из-за которой я собственно создал этот класс ставилась так:

1) Создать массив, в котором можно в любой момент вставить столбец в указанное место.
2) Массив является неким образом сетки Excel, для последующего экспорта в Excel через буфер обмена

1) Создать массив, в котором можно в любой момент вставить столбец в указанное место.

Т.е. на этапе формирования отчета я заранее не знаю ни сколько столбцов будет вообще, ни где именно они будут располагаться (порядок следования). Это выясняется в процессе сканирования результирующей выборки (query).

Делать предварительную выборку для определения количества и порядка следования столбцов нерационально, поскольку время выполнения такого запроса сопоставимо с временем выполнения основной выборки.

Если не разделять адресацию и содержимое массива (массив массивов, синтетическая адресация в одномерном массиве и т.п.), то возникают проблемы при вставке нового столбца. Потребуется фактически скопировать содержимое ранее созданного массива в новый массив с вставкой пустых элементов как нового столбца.

Я посчитал, что это будет относительно длительная по времени операция. Поэтому я разделил адреса и содержимое массива и при вставке нового столбца меняю только адресацию НЕ ИЗМЕНЯЯ содержимого. Реализовать это без введения дополнительных объектов - невозможно. Отсюда класс для хранения как собственно содержимого массива, так и их адресов, плюс методы по их обработке.

2) Массив является неким образом сетки Excel, для последующего экспорта в Excel через буфер обмена

Метод toString имеет целью прежде всего сформировать символьную строку, которую я затем впихиваю в буфер обмена (отсюда num2chr(9) и num2char(13)).

Более того, метод конвертации в строку anyValue2str использует конвертацию через strFmt() именно для того, чтобы конвертация произошла в формате настроек системы, которые и используются в Excel. Т.е. в этом случае, например, в качестве разделителя целой и дробной части числа будет использован тот символ, который и используется в Excel и не возникнет ошибки "запись числа как текста"

Т.е. по окончании формирования массива следует что-то вроде:

textBuffer.setText(rtg_2DimArray.toStrin());

И вставка этого буфера в указанную ячейку Excel, через Ваш метод InsertText()

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

Но вообще-то, возможность хранения разнотипных данных позволяет сформировать ВЕСЬ лист Excel в одном объекте не вводя дополнительные сущности.

Цитата:
= вы будете заниматься сериализацией вашего массива?
= как вы планируете передавать ваш массив между клиентом и сервером в трехуровневой конфигурации?
Честно говоря, я не понял этих вопросов. Что подразумевается под термином "сериализация"?
Передача между клиентом и сервером вообще не планируется (если я правильно понял о чем речь). Цель данного массива - это формирование символьной строки для передачи данных в Excel через буфер обмена.
Теги
как правильно, массив

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Вспомогательный класс для импорта из Excel через ADO gl00mie DAX: База знаний и проекты 80 10.04.2017 10:55
класс InventSumDateValueReportDim Физические запасы? Poleax DAX: Программирование 12 01.07.2008 15:27
Проблема с передачей контролов из формы в класс matew DAX: Программирование 0 28.04.2008 17:37
передача переменной из класса в класс fialka DAX: Программирование 3 11.01.2007 10:59
Класс xSysLastValue Maxim Gorbunov DAX: База знаний и проекты 0 27.11.2001 17:39

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 09:24.