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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 03.12.2009, 18:29   #1  
Maximin is offline
Maximin
NavAx
NavAx Club
 
415 / 361 (13) ++++++
Регистрация: 09.10.2002
Адрес: Москва
По-моему, у тех пользователей, у кого стоит 2007, настроена русская системная локаль с разделителем целой и дробной частей - запятой.
В силу этого этот формат должен выглядеть как # ##0,00 - через запятую.
А у тех, у кого 2003 - английская(и у вас в том числе), так что формат с точкой - прокатывает.
Надо настроить единообразно разделитель либо проверять локаль.
Вообще кучеряво будет, если при формировании формата юзать WinAPI и определять текущий разделитель.
__________________
Жизнь прекрасна! Если, конечно, правильно подобрать антидепрессанты...

Последний раз редактировалось Maximin; 03.12.2009 в 18:32.
За это сообщение автора поблагодарили: propeller (1).
Старый 04.12.2009, 11:54   #2  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,712 / 1201 (44) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от Maximin Посмотреть сообщение
Вообще кучеряво будет, если при формировании формата юзать WinAPI и определять текущий разделитель.
Проще определять текущий разделитель через настройки собственно Excel через метод

m_comApplication.International()

Не знаю, сработает ли это в 2007, но для 2003 в классе ComExcelDocument_RU я добавил такой метод

X++:
// 1
// Возвращает указанную региональную настройку
// Поскольку различные региональные настройки имеют разный тип, то используется контейнер из одного элемента
// Возвожные значения параметра смотри в справке по Visual Basic в Excel на свойство International
// Наиболее нужные
/*
xlDecimalSeparator      = 3 - символ разделитель целой и дробной части
xlThousandsSeparator    = 4 - символ разделитель троек цифр
xlDateSeparator         = 17 - символ разделитель в датах
xlTimeSeparator         = 18 - символ разделитель часов и минут
xlGeneralFormatName     = 26 - строка имени основного формата данных (обычно General)
xl24HourClock           = 33 - true - если часы отображаются в 24 часовом формате, false - если в 12 часовом
xl4DigitYears           = 43 - true - если отображаются 4 знака года, false - если 2
xlDateOrder             = 32 - как отображается дата: 0 - месяц/день/год, 1 - день/месяц/год, 2 - год/месяц/день
*/
container getInternational(int _international)
{
    COMVariant  comInternational;
    container   con = connull();
    ;

    if (m_comApplication)
    {
        try
        {
            comInternational = m_comApplication.International(_international);
            switch (comInternational.variantType())
            {
                case COMVariantType::VT_BOOL:
                {
                    con = conIns(con,1,comInternational.boolean());
                    break;
                }
                case COMVariantType::VT_BSTR:
                {
                    con = conIns(con,1,comInternational.bStr());
                    break;
                }
                case COMVariantType::VT_DATE:
                {
                    con = conIns(con,1,comInternational.date());
                    break;
                }
                case COMVariantType::VT_DECIMAL:
                {
                    con = conIns(con,1,comInternational.decimal());
                    break;
                }
                case COMVariantType::VT_INT:
                {
                    con = conIns(con,1,comInternational.int());
                    break;
                }
            }    // switch (comInternational.variantType())

        }
        catch (Exception::Error || Exception::Internal)
        {
            throw error("Ошибка в функции " + funcname());
        }
    }    // if (m_comApplication)
    return con;
}
Т.е. в методе класса ExcelDocument.setCellFormat() делать анализ текущего символа-разделителя и заменять его в маске шаблона
За это сообщение автора поблагодарили: Maximin (1).
Теги
ado, excel, программно, форматирование

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Excel, группировки: как программно изменить расположение итоговых данных? CDan DAX: Программирование 5 29.08.2008 18:14
Выравнивание ячейки в excel tnv DAX: Программирование 10 27.09.2006 14:48
формат числа в Excel (+с условием) somebody DAX: Программирование 7 18.05.2004 11:33
Чтение Excel-ячейки в Аксапте (2.5) через COM AKIS DAX: Программирование 3 25.03.2004 20:18
Ячейки Excel YVAS DAX: Программирование 2 05.08.2003 10:00

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

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

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