Job to import data from excel in Ax 2009
Below job is to update a field value in inventtable from excel.
InventTable inventTable;
int row = 1;
SysExcelApplication sysExcelApplication_Import;
SysExcelWorkbooks sysExcelWorkBooks_Import;
SysExcelWorkbook sysExcelWorkBook_Import;
SysExcelWorkSheets sysExcelWorkSheets_Import;
SysExcelWorkSheet sysExcelWorkSheet_Import;
SysExcelStyles sysExcelStyles_Import;
SysExcelStyle sysExcelStyle_Import;
SysExcelFont sysExcelFont_Import;
SysExcelCells SysExcelCells_Import;
SysExcelCell SysExcelCell_Import;
COMVariantType type_Import;
COM excelCOM;
ItemId itemId;
ItemBuyerGroupId oldItemBuyerGroupId, newItemBuyerGroupId;
int importNum=0;
int lastrow;
int i;
DialogGroup grp1;
dialog dialog;
Dialogfield dialogFileName;
FileName filename;
SysOperationProgress sysOperationProgress = new SysOperationProgress();
#Excel
#AviFiles
#OCCRetryCount
str COMVariant2Str(COMVariant _cv, int _decimals = 0, int _characters = 0, int _separator1 = 0, int _separator2 = 0)
{
switch (_cv.variantType())
{
case (COMVariantType::VT_BSTR):
return _cv.bStr();
case (COMVariantType::VT_R4):
return num2str(_cv.float(),_characters,_decimals,_separator1,_separator2);
case (COMVariantType::VT_R8):
return num2str(_cv.double(),_characters,_decimals,_separator1,_separator2);
case (COMVariantType::VT_DECIMAL):
return num2str(_cv.decimal(),_characters,_decimals,_separator1,_separator2);
case (COMVariantType::VT_DATE):
return date2str(_cv.date(),123,2,1,2,1,4);
case (COMVariantType::VT_EMPTY):
return "";
default:
throw error(strfmt("@SYS26908", _cv.variantType()));
}
return "";
}
;
try
{
dialog = new Dialog("Update item buyer group id");
grp1 = dialog.addGroup("Update item buyer group id.");
dialogFilename = dialog.addField(typeId(FilenameOpen));
dialog.filenameLookupFilter(["Excel files",#XLS,"Excel files",#XLSX]);
dialog.filenameLookupTitle("Import from Excel");
dialog.caption("Update item buyer group id");
dialogFilename.value(filename);
if(!dialog.run())
return;
filename = dialogFilename.value();
sysExcelApplication_import = sysExcelApplication::construct();
sysExcelWorkBooks_Import = sysExcelApplication_Import.workbooks();
try
{
sysExcelWorkBooks_import.open(filename);
}
catch (Exception::Error)
{
throw error("File cannot be opened.");
}
sysExcelWorkBook_import = sysExcelWorkBooks_import.item(1);
sysExcelWorkSheets_import = sysExcelWorkBook_import.worksheets();
sysExcelWorkSheet_import = sysExcelWorkSheets_import.itemFromNum(1);
SysExcelCells_import = sysExcelWorkSheet_import.cells();
//get the last row number;
excelCOM = SysExcelCells_import.comObject();
excelCOM = excelCOM.SpecialCells(11); // 11 = xlCellTypeLastCell
lastRow = excelCOM.Row(); // Row for the last cell
sysOperationProgress.setCaption('Updating item buyer group id');
sysOperationProgress.setAnimation(#AviUpdate);
sysOperationProgress.setTotal(lastRow);
for (row = 2; row <= lastRow; row ++)
{
try
{
SysExcelCell_import = SysExcelCells_import.item(row,1);
itemId = COMVariant2Str(SysExcelCell_import.value());
SysExcelCell_import = SysExcelCells_import.item(row,3);
oldItemBuyerGroupId = COMVariant2Str(SysExcelCell_import.value());
SysExcelCell_import = SysExcelCells_import.item(row,4);
newItemBuyerGroupId = COMVariant2Str(SysExcelCell_import.value());
if (itemId)
{
ttsbegin;
select firstonly forupdate inventTable
index hint itemidx
where inventTable.ItemId == itemId;
if (inventTable.RecId)
{
info(strfmt("Item buyer group %1 will change to %2 for item number %3 in row %4", inventTable.ItemBuyerGroupId, newItemBuyerGroupId, itemId, row));
inventTable.ItemBuyerGroupId = newItemBuyerGroupId;
inventTable.update();
importNum ++;
}
else
{
error(strfmt("Item number %1 in row %2 not found in InventTable", itemId, row));
}
ttscommit;
}
else
{
error(strfmt("Item number %1 in row %2 is not a string", itemId, row));
}
}
catch
{
error(strfmt("Upload Failed in row %1", row));
exceptionTextFallThrough();
sysExcelApplication_import.quit();
sysExcelApplication_import.finalize();
}
sysOperationProgress.setText(strfmt("Item buyer group id update is in progress.....") );
sysOperationProgress.setCount(row, 1);
}
info(strfmt('%1 rows were read from the excel file!', row-2));
info(strfmt('%1 items have been updated!!',importNum));
sysExcelApplication_import.quit();
sysExcelApplication_import.finalize();
}//end of try
catch (Exception::Deadlock)
{
if (xSession::currentRetryCount() >= #RetryNum)
{
exceptionTextFallThrough();
sysExcelApplication_import.quit();
sysExcelApplication_import.finalize();
throw Exception::Deadlock;
}
else
{
exceptionTextFallThrough();
sysExcelApplication_import.quit();
sysExcelApplication_import.finalize();
retry;
}
}
catch (Exception::Error)
{
exceptionTextFallThrough();
sysExcelApplication_import.quit();
sysExcelApplication_import.finalize();
}
InventTable inventTable;
int row = 1;
SysExcelApplication sysExcelApplication_Import;
SysExcelWorkbooks sysExcelWorkBooks_Import;
SysExcelWorkbook sysExcelWorkBook_Import;
SysExcelWorkSheets sysExcelWorkSheets_Import;
SysExcelWorkSheet sysExcelWorkSheet_Import;
SysExcelStyles sysExcelStyles_Import;
SysExcelStyle sysExcelStyle_Import;
SysExcelFont sysExcelFont_Import;
SysExcelCells SysExcelCells_Import;
SysExcelCell SysExcelCell_Import;
COMVariantType type_Import;
COM excelCOM;
ItemId itemId;
ItemBuyerGroupId oldItemBuyerGroupId, newItemBuyerGroupId;
int importNum=0;
int lastrow;
int i;
DialogGroup grp1;
dialog dialog;
Dialogfield dialogFileName;
FileName filename;
SysOperationProgress sysOperationProgress = new SysOperationProgress();
#Excel
#AviFiles
#OCCRetryCount
str COMVariant2Str(COMVariant _cv, int _decimals = 0, int _characters = 0, int _separator1 = 0, int _separator2 = 0)
{
switch (_cv.variantType())
{
case (COMVariantType::VT_BSTR):
return _cv.bStr();
case (COMVariantType::VT_R4):
return num2str(_cv.float(),_characters,_decimals,_separator1,_separator2);
case (COMVariantType::VT_R8):
return num2str(_cv.double(),_characters,_decimals,_separator1,_separator2);
case (COMVariantType::VT_DECIMAL):
return num2str(_cv.decimal(),_characters,_decimals,_separator1,_separator2);
case (COMVariantType::VT_DATE):
return date2str(_cv.date(),123,2,1,2,1,4);
case (COMVariantType::VT_EMPTY):
return "";
default:
throw error(strfmt("@SYS26908", _cv.variantType()));
}
return "";
}
;
try
{
dialog = new Dialog("Update item buyer group id");
grp1 = dialog.addGroup("Update item buyer group id.");
dialogFilename = dialog.addField(typeId(FilenameOpen));
dialog.filenameLookupFilter(["Excel files",#XLS,"Excel files",#XLSX]);
dialog.filenameLookupTitle("Import from Excel");
dialog.caption("Update item buyer group id");
dialogFilename.value(filename);
if(!dialog.run())
return;
filename = dialogFilename.value();
sysExcelApplication_import = sysExcelApplication::construct();
sysExcelWorkBooks_Import = sysExcelApplication_Import.workbooks();
try
{
sysExcelWorkBooks_import.open(filename);
}
catch (Exception::Error)
{
throw error("File cannot be opened.");
}
sysExcelWorkBook_import = sysExcelWorkBooks_import.item(1);
sysExcelWorkSheets_import = sysExcelWorkBook_import.worksheets();
sysExcelWorkSheet_import = sysExcelWorkSheets_import.itemFromNum(1);
SysExcelCells_import = sysExcelWorkSheet_import.cells();
//get the last row number;
excelCOM = SysExcelCells_import.comObject();
excelCOM = excelCOM.SpecialCells(11); // 11 = xlCellTypeLastCell
lastRow = excelCOM.Row(); // Row for the last cell
sysOperationProgress.setCaption('Updating item buyer group id');
sysOperationProgress.setAnimation(#AviUpdate);
sysOperationProgress.setTotal(lastRow);
for (row = 2; row <= lastRow; row ++)
{
try
{
SysExcelCell_import = SysExcelCells_import.item(row,1);
itemId = COMVariant2Str(SysExcelCell_import.value());
SysExcelCell_import = SysExcelCells_import.item(row,3);
oldItemBuyerGroupId = COMVariant2Str(SysExcelCell_import.value());
SysExcelCell_import = SysExcelCells_import.item(row,4);
newItemBuyerGroupId = COMVariant2Str(SysExcelCell_import.value());
if (itemId)
{
ttsbegin;
select firstonly forupdate inventTable
index hint itemidx
where inventTable.ItemId == itemId;
if (inventTable.RecId)
{
info(strfmt("Item buyer group %1 will change to %2 for item number %3 in row %4", inventTable.ItemBuyerGroupId, newItemBuyerGroupId, itemId, row));
inventTable.ItemBuyerGroupId = newItemBuyerGroupId;
inventTable.update();
importNum ++;
}
else
{
error(strfmt("Item number %1 in row %2 not found in InventTable", itemId, row));
}
ttscommit;
}
else
{
error(strfmt("Item number %1 in row %2 is not a string", itemId, row));
}
}
catch
{
error(strfmt("Upload Failed in row %1", row));
exceptionTextFallThrough();
sysExcelApplication_import.quit();
sysExcelApplication_import.finalize();
}
sysOperationProgress.setText(strfmt("Item buyer group id update is in progress.....") );
sysOperationProgress.setCount(row, 1);
}
info(strfmt('%1 rows were read from the excel file!', row-2));
info(strfmt('%1 items have been updated!!',importNum));
sysExcelApplication_import.quit();
sysExcelApplication_import.finalize();
}//end of try
catch (Exception::Deadlock)
{
if (xSession::currentRetryCount() >= #RetryNum)
{
exceptionTextFallThrough();
sysExcelApplication_import.quit();
sysExcelApplication_import.finalize();
throw Exception::Deadlock;
}
else
{
exceptionTextFallThrough();
sysExcelApplication_import.quit();
sysExcelApplication_import.finalize();
retry;
}
}
catch (Exception::Error)
{
exceptionTextFallThrough();
sysExcelApplication_import.quit();
sysExcelApplication_import.finalize();
}
Comments
Post a Comment