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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 28.04.2004, 17:34   #21  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,701 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Если Вы считаете, что я сижу и выдумываю себе задания, то Вы несколько ошибаетесь.

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

Т.е. исходный запрос имеет примерно такой вид:

SELECT ... GROUP BY Field1,Field2,Dimension[1],Dimension[2]

При этом Dimension[2] должны выводится как столбцы отчета (требование пользователей!)

Вот в связи с обязательным требованием вывода Dimension[2] в алфавитном порядке и возникла задача перестановки столбцов.

PS:
То, что это нельзя назвать массивом в том смысле, в котором этот термин употребляется в Axapta я прекрасно понимаю. Да хоть горшком назови! Главное что он делает именно то, что мне нужно.

PPS:
Есть еще ряд аналогичных отчетов, где в качестве столбцов выступают уже не коды аналитики, а другие критерии. Но с тем же требованием алфавитного порядка следования. Отсюда желание сделать это через отдельный класс.
Старый 28.04.2004, 18:01   #22  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
теперь я вообще ничего не понимаю

Цитата:
Изначально опубликовано Владимир Максимов
SELECT ... GROUP BY Field1,Field2,Dimension[1],Dimension[2]

Вот в связи с обязательным требованием вывода Dimension[2] в алфавитном порядке и возникла задача перестановки столбцов.
А разве Group By не возвращает столбцы Dimension[2] в алфавитном порядке?

Или вы хотите получить алфавитный порядок в целом для того, чтобы столбцы сделать? Если да, то нафига делаете все одним запросом?

Ваша задача вообще НЕ ТАК РЕШАЕТСЯ!
Она решается двумя запросами и вообще БЕЗ перестановок!
Подобный алгоритм еще у Кнута был описан.

Я, пожалуй, выключусь из обсуждения.
За проект огромное спасибо.
Старый 28.04.2004, 18:30   #23  
dn is offline
dn
Участник
Самостоятельные клиенты AX
 
486 / 159 (6) ++++++
Регистрация: 26.03.2003
Адрес: Москва
Цитата:
Изначально опубликовано mazzy

(с хитрым прищуром)
Чем в момент передачи двумерный массив отличается от одномерного?
Своим внутренним представлением.
Сергей, если функция ожидает на входе определенный объект (двумерный вариантный массив), то как ей можно подсунуть одномерный? Весь смысл - передать одним большим куском даные в Excel, а не заниматься перебором. По-моему здесь нет предмета для спора ...
Старый 28.04.2004, 18:32   #24  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,701 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Пример результата запроса:

1 , 1
1 , 3
2 , 2

Для выводя результата запроса в отчет я сканирую этот результат: для значение 1 вывел два столбца 1 и 3, следующая строка требует ввести столбец 2, которого просто не было в первой строке.

Сделать предварительный запрос для получения количества и порядка следования столбцов я не могу (почему - это отдельная тема, которая вызовет еще более глобальное обсуждение).

Впрочем, действительно, пора заканчивать. Если кому-нибудь понадобиться этот класс, может пользоваться. Я его сделал поскольку не видел другого пути решения проблемы. Данное обсуждение не дало ничего нового в этом смысле. Все предложенные варианты я рассматривал прежде чем написать то, что написал.
Старый 28.04.2004, 18:41   #25  
dn is offline
dn
Участник
Самостоятельные клиенты AX
 
486 / 159 (6) ++++++
Регистрация: 26.03.2003
Адрес: Москва
Цитата:
Изначально опубликовано Владимир Максимов
Главное что он делает именно то, что мне нужно.
Можно до бесконечности обсуждать как сделать что-то лучше. Но коли всё уже работает предлагаю на этом и остановиться ...
Старый 30.04.2004, 13:40   #26  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Цитата:
Чем в момент передачи двумерный массив отличается от одномерного?
Зависит от языка программирования, а точнее от того, как реализованы эти массивы
Если брать самый обыкновенный массив, как набор значений одного типа непрерывно расположенных в памяти, - то ничем.

Цитата:
если функция ожидает на входе определенный объект (двумерный вариантный массив), то как ей можно подсунуть одномерный?
При данном, классическом, определении массива - запросто можно. Более того, как правило, передается не сам массив, а всего лишь указатель на него (или на область памяти где он расположен - что одно и то же). Например в C++ этот прием очень часто используется.
Другое дело, если это не просто массив, а какая-то хитрая обертка над ним..... но если так рассуждать, то в Дельфях и строка - это уже не просто последовательность байт в памяти.....
Старый 30.04.2004, 14:17   #27  
dn is offline
dn
Участник
Самостоятельные клиенты AX
 
486 / 159 (6) ++++++
Регистрация: 26.03.2003
Адрес: Москва
Привет, Андрей!

Вообще, изначально я писал про двумерный вариантный массив который можно было бы подсунуть в качестве значения range в Excel. (Разницу между вариантным массивом и массивом вариант напоминать наверное не стоит. Думаю в Delphi с этим сталкиваться приходилось.) Такой массив я планировал когда-то получить из обычного через функцию
PHP код:
ComVariant::createFromArray(Array _array
Для однострочного range, где достаточно одномерного массива, всё прокатило, а вот передать данные в многострочный range мне таким образом не удалось. Так что приходится использовать специальную вставку через буфер обмена...

Удачи,
Дмитрий.
Старый 30.04.2004, 15:01   #28  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Не, по моему ты несколько не понял мою мысль. Я писал про то, что хранение данных и упаковка из в SAFEARRAY довольно независимые друг от друга вещи.
Старый 30.04.2004, 17:33   #29  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Цитата:
....про двумерный вариантный массив который можно было бы подсунуть в качестве значения range в Excel
И, кстати говоря.... если уж так много разговоров идет про выгрузку в excel и про сопряженные с этим трудности....
Если сформировать xml и открыть его в Excel - то формирование происходит значительно быстрее и на мой взгляд гораздо проще.
Старый 30.04.2004, 19:05   #30  
dn is offline
dn
Участник
Самостоятельные клиенты AX
 
486 / 159 (6) ++++++
Регистрация: 26.03.2003
Адрес: Москва
Про Excel я вспомнил к слову. Просто когда-то давно из Delphi я передавал данные в Excel через вариантный массив, а в Axapta с этим вышел небольшой облом. Вариант с xml вполне нормальный, мы с Юрой его даже пробовали. По скорости примерно также как и через буфер. Так что, кому что нравится...

p.s. Насчет массивов я с тобой и не спорил. То что передается указатель понятно.
Вопрос как функции ComVariant::createFromArray() подсунуть одномерный массив, а она при этом приняла его за двумерный.
Теги
как правильно, массив

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Вспомогательный класс для импорта из 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, время: 07:18.