|  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() подсунуть одномерный массив, а она при этом приняла его за двумерный.   | 
|  |