Метод 'value' в COM-объекте класса 'Range' возвратил код ошибки 0x800A03EC (<unknown>), что означает: <unknown>. AX 2012

Я импортирую из листа Excel в AX. Итак, процесс: просмотрите записи из Excel, добавьте их во временную таблицу и заполните в сетке. Это процесс происходит. Когда я использую меньше записей, например: 1400 записей, его импорт в сетку без проблем. Когда я импортирую 66000 записей, он выдает эту ошибку выше. Может кто-нибудь предложить, что я должен сделать, чтобы я мог импортировать 60000 записей одновременно? Я попытался перезапустить AX, создать новый лист Excel, который предлагается онлайн..... Ничего не помогло.

1 ответ

Да, при разработке любого импорта Excel возникла эта проблема, когда много строк. Если есть несколько рядов, это работает отлично.

В этом случае всегда изменяйте импорт Excel для импорта CSV. Код для импорта CSV-файла никогда не подведет и отлично работает.

Здесь я оставляю пример для импорта файла CSV с 3 строками.

Код:

static void Stack(Args _args)
{
    AsciiIo               asciiIo;
    container             con;
    FileIoPermission      perm;    
    boolean               _CortarProceso;
    IO_Status             aa;    
    str                   filename;
    str                   _row1, _row2, _row3;            

    Dialog                dialog;
    DialogField           dialogFileName;

    ;

    dialog         = new Dialog("Select CSV File");
    dialogFileName = dialog.addField(ExtendedTypeStr("FilenameOpen"),"Path File:");

    if (dialog.run())
    {
        filename = dialogFileName.value();
    }

    if (!filename)
    {
        return;
    }

    perm = new FileIoPermission(filename, "R");
    perm.assert();
    asciiIo = new AsciiIo(filename, "R");
    asciiIo.inFieldDelimiter(";");

    if (asciiIo != null)
    {
          con = asciiIo.read();
          while((asciiIo.status() == IO_Status::Ok) && (!_CortarProceso)){                          
              _Row1          = conPeek(con, 1); //Row1
              _Row2          = conPeek(con, 2); //Row2
              _Row3          = conPeek(con, 3); //Row3

              if(_row1 != ""){
                  //Your Code...      
                  //Your Code...
                  //Your Code...
                  //Your Code...
                  //Your Code...
              }else{
                  _CortarProceso = true;
              }                        
              con = asciiIo.read();
          }

    }

    info("Process End");
}
Другие вопросы по тегам