28.04.2004, 17:34 | #21 |
Участник
|
Если Вы считаете, что я сижу и выдумываю себе задания, то Вы несколько ошибаетесь.
Задача ставилась вывести отчет сгруппированный по нескольким признакам, где в качестве столбца идут коды аналитики в алфавитном порядке. Пользователи особо настаивали именно на алфавитном порядке следования столбцов. Т.е. исходный запрос имеет примерно такой вид: SELECT ... GROUP BY Field1,Field2,Dimension[1],Dimension[2] При этом Dimension[2] должны выводится как столбцы отчета (требование пользователей!) Вот в связи с обязательным требованием вывода Dimension[2] в алфавитном порядке и возникла задача перестановки столбцов. PS: То, что это нельзя назвать массивом в том смысле, в котором этот термин употребляется в Axapta я прекрасно понимаю. Да хоть горшком назови! Главное что он делает именно то, что мне нужно. PPS: Есть еще ряд аналогичных отчетов, где в качестве столбцов выступают уже не коды аналитики, а другие критерии. Но с тем же требованием алфавитного порядка следования. Отсюда желание сделать это через отдельный класс. |
|
28.04.2004, 18:01 | #22 |
Участник
|
теперь я вообще ничего не понимаю
Цитата:
Изначально опубликовано Владимир Максимов
SELECT ... GROUP BY Field1,Field2,Dimension[1],Dimension[2] Вот в связи с обязательным требованием вывода Dimension[2] в алфавитном порядке и возникла задача перестановки столбцов. Или вы хотите получить алфавитный порядок в целом для того, чтобы столбцы сделать? Если да, то нафига делаете все одним запросом? Ваша задача вообще НЕ ТАК РЕШАЕТСЯ! Она решается двумя запросами и вообще БЕЗ перестановок! Подобный алгоритм еще у Кнута был описан. Я, пожалуй, выключусь из обсуждения. За проект огромное спасибо. |
|
28.04.2004, 18:30 | #23 |
Участник
|
Цитата:
Изначально опубликовано mazzy
(с хитрым прищуром) Чем в момент передачи двумерный массив отличается от одномерного? Сергей, если функция ожидает на входе определенный объект (двумерный вариантный массив), то как ей можно подсунуть одномерный? Весь смысл - передать одним большим куском даные в Excel, а не заниматься перебором. По-моему здесь нет предмета для спора ... |
|
28.04.2004, 18:32 | #24 |
Участник
|
Пример результата запроса:
1 , 1 1 , 3 2 , 2 Для выводя результата запроса в отчет я сканирую этот результат: для значение 1 вывел два столбца 1 и 3, следующая строка требует ввести столбец 2, которого просто не было в первой строке. Сделать предварительный запрос для получения количества и порядка следования столбцов я не могу (почему - это отдельная тема, которая вызовет еще более глобальное обсуждение). Впрочем, действительно, пора заканчивать. Если кому-нибудь понадобиться этот класс, может пользоваться. Я его сделал поскольку не видел другого пути решения проблемы. Данное обсуждение не дало ничего нового в этом смысле. Все предложенные варианты я рассматривал прежде чем написать то, что написал. |
|
28.04.2004, 18:41 | #25 |
Участник
|
Цитата:
Изначально опубликовано Владимир Максимов
Главное что он делает именно то, что мне нужно. |
|
30.04.2004, 13:40 | #26 |
Moderator
|
Цитата:
Чем в момент передачи двумерный массив отличается от одномерного?
Если брать самый обыкновенный массив, как набор значений одного типа непрерывно расположенных в памяти, - то ничем. Цитата:
если функция ожидает на входе определенный объект (двумерный вариантный массив), то как ей можно подсунуть одномерный?
Другое дело, если это не просто массив, а какая-то хитрая обертка над ним..... но если так рассуждать, то в Дельфях и строка - это уже не просто последовательность байт в памяти..... |
|
30.04.2004, 14:17 | #27 |
Участник
|
Привет, Андрей!
Вообще, изначально я писал про двумерный вариантный массив который можно было бы подсунуть в качестве значения range в Excel. (Разницу между вариантным массивом и массивом вариант напоминать наверное не стоит. Думаю в Delphi с этим сталкиваться приходилось.) Такой массив я планировал когда-то получить из обычного через функцию PHP код:
Удачи, Дмитрий. |
|
30.04.2004, 15:01 | #28 |
Moderator
|
Не, по моему ты несколько не понял мою мысль. Я писал про то, что хранение данных и упаковка из в SAFEARRAY довольно независимые друг от друга вещи.
|
|
30.04.2004, 17:33 | #29 |
Moderator
|
Цитата:
....про двумерный вариантный массив который можно было бы подсунуть в качестве значения range в Excel
Если сформировать xml и открыть его в Excel - то формирование происходит значительно быстрее и на мой взгляд гораздо проще. |
|
30.04.2004, 19:05 | #30 |
Участник
|
Про Excel я вспомнил к слову. Просто когда-то давно из Delphi я передавал данные в Excel через вариантный массив, а в Axapta с этим вышел небольшой облом. Вариант с xml вполне нормальный, мы с Юрой его даже пробовали. По скорости примерно также как и через буфер. Так что, кому что нравится...
p.s. Насчет массивов я с тобой и не спорил. То что передается указатель понятно. Вопрос как функции ComVariant::createFromArray() подсунуть одномерный массив, а она при этом приняла его за двумерный. |
|
Теги |
как правильно, массив |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|