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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 07.03.2012, 17:06   #1  
NickMDAX is offline
NickMDAX
Участник
 
16 / 11 (1) +
Регистрация: 12.09.2011
Адрес: Moscow
? вывод по листам Excel
Добрый вечер всем!!
Возник вопрос.
Есть шаблон *.xlt , в нем три листа, на первый лист вывожу при помощи textBuffer некоторые данные:
X++:
while select * from rPaySheetTrans
        where rPaySheetTrans.sheetTableRecId == rPaySheetTable.RecId
    {
        counter++;
        buffer.addValue(counter);
        buffer.addValue(EmplTable::find(rPaySheetTrans.Emplid).name());
        buffer.addValue(EmplBankAccount_RU::find(rPaySheetTrans.Emplid,rPaySheetTrans.EmplBankAccountId,false).AccountNum);
        buffer.addValue(rPaySheetTrans.Amount);
        amount += rPaySheetTrans.Amount;
        buffer.addNewLine();
    }
после чего нужно часть данных вывести на 2 и часть на 3 листе начиная с определенной строки и колонки.По сути тоже самое ,но других листах.Прочитав посты на форуме таки смог понять, как это сделать...очень надеюсь на помощь или подсказку!
Старый 07.03.2012, 17:50   #2  
wojzeh is offline
wojzeh
Участник
Аватар для wojzeh
Соотечественники
 
674 / 512 (19) +++++++
Регистрация: 27.04.2006
Адрес: Montreal
командой excel выбрать нужный worksheet из коллекции activeworkbook.worksheets
__________________
Felix nihil admirari
Старый 07.03.2012, 17:55   #3  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,691 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
http://forum.mazzy.ru/index.php?showtopic=385

Третий параметр - номер листа, в который надо выводить данные

PS: На всякий случай замечу, что вывод в Excel через буфер обмена - не лучшее решение. Проблема связана с тем, что сам по себе буфер обмена - это внешний (по отношению к Axapta) объект, который Вы не в состоянии контролировать. В связи с этим возникают самые разнообразные проблемы, решить которые, зачастую, просто невозможно. Нет инструментов управления этим самым буфером обмена из среды Axapta.

Более "управляемым" выглядит решение по передаче данных через предварительно созданный Com-объект RecordSet. Это чуть медленнее, чем работа с буфером обмена, но именно что "чуть". Взамен получаем полную управляемость процесса и независимость от "внешних" факторов.
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...

Последний раз редактировалось Владимир Максимов; 07.03.2012 в 18:21.
За это сообщение автора поблагодарили: NickMDAX (1).
Старый 08.03.2012, 00:19   #4  
Zabr is offline
Zabr
Участник
Axapta Retail User
 
1,202 / 345 (14) ++++++
Регистрация: 26.06.2002
Адрес: Москва
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
http://forum.mazzy.ru/index.php?showtopic=385
Нет инструментов управления этим самым буфером обмена из среды Axapta.
Что имеете в виду "нет"? записать можно, считать можно, размер узнать можно. Каких инструментов не хватает? Монопольной блокировки, чтобы буфер не использовали одновременно другие приложения?
Старый 08.03.2012, 02:10   #5  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от Zabr Посмотреть сообщение
Каких инструментов не хватает? Монопольной блокировки, чтобы буфер не использовали одновременно другие приложения?
Хотя бы. События разворачиваются во времени, винды, начиная, по крайней мере, с NT 3.51, - ОС с вытесняющей многозадачностью, на каждом втором рабочем столе - комп с многоядерным процом... В таких условиях (а тем более на каком-нить терминальном сервере) нельзя без механизма блокировок быть уверенным, что если в момент времени n вы поместили что-то в буфер обмена, то в момент времени n+1 вы вставите из буфера то же самое. Если у вас m одновременно работающих пользователей в системе, на такие "мелочи" можно закрывать глаза; при числе пользователей m*3 стоимость разруливания проблем уже может перевесить стоимость переделки механизма вывода в Excel на что-то более надежное и детерминированнное.
Старый 08.03.2012, 04:47   #6  
coolibin is offline
coolibin
Участник
 
264 / 68 (3) ++++
Регистрация: 07.04.2005
На многозадачных компьютерах работают многозадачные пользователи, пока отчет строится, им может быть нужно с другими документами работать. Я теперь понял, что это было, когда на одной инсталляции во время построения отчетов нельзя было буфером пользоваться. Отчеты причем строились десятками минут. Если это так работает, то, думаю, подход с буфером можно применять только при очень крайней необходимости.
Старый 11.03.2012, 09:42   #7  
ice is offline
ice
Участник
Аватар для ice
Лучший по профессии 2014
 
1,731 / 406 (17) +++++++
Регистрация: 23.03.2006
У каждого пользователя в системе свой буфер обмена. При использовании текстового буфера, буфер обмена используется на самом последнем этапе (в зависимости от архитектуры отчета), а долгое время уходит на выборку данных. При вставке из текстового буфера в Excel может быть потеря или искажение данных, тк Excel любит преобразовывать данные в нужный ему тип
Старый 11.03.2012, 10:56   #8  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,691 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от Zabr Посмотреть сообщение
Что имеете в виду "нет"? записать можно, считать можно, размер узнать можно. Каких инструментов не хватает? Монопольной блокировки, чтобы буфер не использовали одновременно другие приложения?
На самом деле Вы не может ничего записать в буфер обмена. Вы можете только передать информацию в буфер обмена. Но Вы не можете получить "обратную связь". В смысле, убедиться, что переданная информация действительно записана в буфер обмена. Максимум, что Вы можете узнать, это что "посылка отправлена". Но вот "доставлена" ли она Вы не знаете. Нет средств контроля.

Ситуация как в анекдоте. "Пуля вышла из ствола. Проблемы на Вашей стороне" Тот факт, что в "мишень" не попали (в буфер обмена ничего не записалось) - никого не интересует...

Еще один очень неприятный момент. Перед тем как что-то посылать в буфер обмена он должен быть инициализирован. Должен существовать. Из среды Axapta Вы никак не можете определить факт его существования. Я столкнулся с этой проблемой при работе на бездисковых станциях. Как оказалось, в момент включения этих станций буфер обмена просто не существует. Пришлось устраивать "пляски с бубном" чтобы хоть иногда заставлять его инициализироваться.

Ну, и то, на что уже обратили внимание. Процесс закрузки данных в буфер обмена может быть достаточно длительным по времени. И пользователь может вмешаться в этот процесс банально нажав Ctrl+C, затем Ctrl+V.

Обратите внимание, что по приведенной ссылке процесс копирования через буфер обмена зациклен. Это как раз один из вариантов "бубна", поскольку нет других средств контроля. Приходится изворачиваться...
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
Старый 11.03.2012, 13:48   #9  
iCloud is offline
iCloud
Enjoy!
Аватар для iCloud
MCP
Злыдни
 
195 / 111 (4) +++++
Регистрация: 06.03.2012
Можно так:
X++:
//первая вставка данных

    buffer.excelOutput();

    buffer.blockReset();

    buffer.setSheetNo(2);

//вторая вставка данных

    buffer.excelOutput();

    buffer.excelFinishOutput();
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Вывод всех меток из заданного уровня на заданных языках в Excel wojzeh DAX: Программирование 0 19.03.2010 23:45
Вывод картинки в Excel Zlojbarsuk DAX: Программирование 1 14.08.2008 14:21
Маленькое замечание про вывод в Excel NNB DAX: Программирование 11 23.06.2008 16:23
Вывод в Excel в определнный Worksheet... soin DAX: Программирование 1 22.10.2004 13:53
Excel быстрый вывод Кирилл DAX: Программирование 14 03.06.2004 12:23

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

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

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