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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 24.02.2011, 15:00   #1  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от tolstjak Посмотреть сообщение
Это крайний вариант.
Так, а чего? Он же никому не мешает - ни сортировке, ни обратной выгрузке куда-либо, ни работе функции ДЛСТР и т.п...

Ну, конечно, если хочется себя занять, то займите - никто Вас отговаривать не будет. Но кончится тем, что Вы поменяете ComExcelDocument_RU на выгрузку с использованием ADO и CopyFromRecordset - там этой проблемы нет
Старый 24.02.2011, 15:43   #2  
tolstjak is offline
tolstjak
Участник
 
440 / 16 (1) ++
Регистрация: 05.01.2003
Цитата:
Сообщение от Gustav Посмотреть сообщение
Так, а чего? Он же никому не мешает - ни сортировке, ни обратной выгрузке куда-либо, ни работе функции ДЛСТР и т.п...

Ну, конечно, если хочется себя занять, то займите - никто Вас отговаривать не будет. Но кончится тем, что Вы поменяете ComExcelDocument_RU на выгрузку с использованием ADO и CopyFromRecordset - там этой проблемы нет
Возможно он никому не мешает, но:
- не эстетично
- при обработке такого столбца (если по этим столбцам идет сравнение) придется избавляться от этого апострофа
Может быть написать макрос, который бы удалял это апострофы перед открытием ?
__________________
Александр
Старый 24.02.2011, 16:40   #3  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от tolstjak Посмотреть сообщение
Возможно он никому не мешает, но:
- не эстетично
Его не видно на рабочем листе. Видно только в строке редактирования текущей ячейки. Если это уж так раздражает, ну, сделайте активной какую-нибудь другую ячейку, не из этой колонки перед предъявлением таблицы пользователю. К слову сказать, младший брат Excel - OWC Spreadsheet всегда автоматически добавляет апостроф к строке, если она может быть интерпретирована как число - независимо от того, поставили ли вы его сами или отформатировали ячейку как текст.
Цитата:
Сообщение от tolstjak Посмотреть сообщение
- при обработке такого столбца (если по этим столбцам идет сравнение) придется избавляться от этого апострофа
При какой, например? Сравнение одинаковых (в остальном) значений двух ячеек, в одной из которых есть апостроф, а в другой нет, покажет полное совпадение!
Цитата:
Сообщение от tolstjak Посмотреть сообщение
Может быть написать макрос, который бы удалял это апострофы перед открытием ?
Вы попробуйте его сначала найдите макросом - свойство Value в коде будет возвращать значение без него!

P.S. Методом Range.PrefixCharacter можно найти, если таки соберетесь искать.

Последний раз редактировалось Gustav; 24.02.2011 в 16:56.
Старый 24.02.2011, 17:01   #4  
tolstjak is offline
tolstjak
Участник
 
440 / 16 (1) ++
Регистрация: 05.01.2003
Цитата:
Сообщение от Gustav Посмотреть сообщение
Его не видно на рабочем листе. ......Вы попробуйте его сначала найдите макросом - свойство Value в коде будет возвращать значение без него!
Возможно мы говорим о разных вещах:
апостроф в коде я проставляю следующим образом:

account1 = strfmt("`%1", bankGroup.BankCorrAccount_RU);

если Вы делаете по другому, пожалуйста напишите.

Может быть из-за того, что неправильно ставлю апостроф у меня в экселе все видно?
__________________
Александр
Старый 24.02.2011, 17:21   #5  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от tolstjak Посмотреть сообщение
account1 = strfmt("`%1", bankGroup.BankCorrAccount_RU);
Да-с, возник у нас терминологический казус Я назвал даму сэром, в смысле одинарную кавычку - апострофом и ввел Вас в заблуждение. Но с другой стороны ж в моем значении в самом начале указана именно одинарная кавычка. Ее и надо было попробовать...

В общем, ладно. У Вас не то, конечно. У Вас - символ с кодом 96, а надо тот, который 39.
Старый 24.02.2011, 19:10   #6  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от tolstjak Посмотреть сообщение
Может быть написать макрос, который бы удалял это апострофы перед открытием ?
Показалось занятным, соорудил джоб:
X++:
{
    ComExcelDocument_RU doc = new ComExcelDocument_RU();

    COM     xlApp;
    COM     wbook;
    COM     activeSheet;
    COM     range;

    COMEnum2Object  cellCollection;
    COM             cell;
    COMVariant      prefChar;
    ;

    doc.NewFile('',true);
    wbook = doc.getComDocument();

    xlApp = wbook.Parent();
    activeSheet = xlApp.ActiveSheet();

    range = activeSheet.Range('A1:A100');
    range.Value2("'30101810100000000859"); // 1. выводим значения с ведущим апострофом (одинарной кавычкой)

    print 'Загляните в окошко Excel';
    pause;

    range.NumberFormat('@'); // 2. форматируем заполненный диапазон как Текст

    cellCollection = new COMEnum2Object(range);

    // 3. перебирая ячейки диапазона, удаляем ведущий апостроф, если находим
    for (cell = cellCollection.getFirst(); cell; cell = cellCollection.getNext())
    {
        prefChar = cell.PrefixCharacter();
        if (prefChar.bStr() == "'")
        {
            cell.Value2(cell.Value2()); // "удаляем" = переписываем значение само на себя
        }
    }

    info('Еще раз загляните в окошко Excel');
}
НО! НО... Признаться, не очень понимаю, почему у Вас не сработало предварительное форматирование как текст:
Цитата:
Сообщение от tolstjak Посмотреть сообщение
столбец, в который выводится счет, делал текстовым- не помогает.
Вот, вроде всё работает:
X++:
{
    ComExcelDocument_RU doc = new ComExcelDocument_RU();

    COM     xlApp;
    COM     wbook;
    COM     activeSheet;
    COM     range;
    ;

    doc.NewFile('',true);
    wbook = doc.getComDocument();

    xlApp = wbook.Parent();
    activeSheet = xlApp.ActiveSheet();

    range = activeSheet.Range('A1:A100');

    range.NumberFormat('@'); // предварительное форматирование КАК ТЕКСТ ячеек вывода коррсчета
    range.Value2("30101810100000000859"); // выводим значения коррсчета БЕЗ апострофа
}
В общем, что имеем в сухом остатке? Поговорили об апострофе, короче
За это сообщение автора поблагодарили: tolstjak (1).
Старый 25.02.2011, 08:16   #7  
tolstjak is offline
tolstjak
Участник
 
440 / 16 (1) ++
Регистрация: 05.01.2003
Цитата:
Сообщение от Gustav Посмотреть сообщение
Показалось занятным, соорудил джоб:
[xpp]
В общем, что имеем в сухом остатке? Поговорили об апострофе, короче
Большое спасибо за очень развернутый ответ. Все понятно.
__________________
Александр
Теги
excel, pastespecial

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Вывод всех меток из заданного уровня на заданных языках в Excel wojzeh DAX: Программирование 0 19.03.2010 23:45
Помогите сделать действие в Excel через COM kashperuk DAX: Программирование 25 10.09.2007 15:59
dynamicsusers: DL Tips And Tricks: ADO Database Reader (Jet way) - Excel Example Blog bot DAX Blogs 0 02.08.2007 03:50
Экспорт в Excel - поле формата "Дата" Ned DAX: Программирование 15 25.04.2003 10:01
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

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

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

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