• Example:Import sales journal from excel by code


      1 //生成导入模板
      2 void creatTemplate()
      3 {
      4     SysExcelApplication m_application;
      5     SysExcelWorkbooks   m_workbooks;
      6     SysExcelWorkbook    m_workbook;
      7     SysExcelWorksheets  m_worksheets;
      8     SysExcelWorksheet   m_worksheet;
      9     SysExcelCells       m_cells;
     10     int                 m_row = 1;
     11     ;
     12 
     13     m_application = SysExcelApplication::construct();
     14     m_workbooks   = m_application.workbooks();
     15     m_workbook    = m_workbooks.add();
     16     m_worksheets  = m_workbook.worksheets();
     17     m_worksheet   = m_worksheets.itemFromNum(1);
     18     m_cells       = m_worksheet.cells();
     19 
     20     m_cells.item(1,1).value("Item number");
     21     m_cells.item(1,2).value("Config number");
     22     m_cells.item(1,3).value("Sales quantity");
     23 
     24     m_worksheet.name("CustomsReport");
     25     m_worksheet.columns().item(2).autoFit();
     26     m_application.visible(true);
     27 }
     28 
     29 //导入数据
     30 void clicked()
     31 {
     32     SysExcelApplication             Excel;
     33     SysExcelWorkbooks               Books;
     34     SysExcelWorkbook                Book;
     35     SysExcelWorksheets              Sheets;
     36     SysExcelWorksheet               Sheet;
     37     SysExcelCells                   Cells;
     38     SysExcelCell                    Cell;
     39     SysExcelStyles                  Styles;
     40     SysExcelStyle                   Style;
     41     int                             RowCount,RecNum,n,i;
     42 
     43     Filename                        _FilenameOpen;
     44     InventTable                     InventTable;
     45     ConfigTable                     ConfigTable;
     46     BomVersion                      BomVersion;
     47     InventDim                       t_InventDim;
     48     InventBatch                     t_InventBatch;
     49     InventStdPic                    t_InventStdPic;
     50 
     51     str                             a_ItemId[],a_ConfigId[];
     52     real                            a_Qty[];
     53 
     54     ItemId                          ItemId;
     55     Qty                             Qty;
     56     ConfigId                        ConfigId;
     57 
     58     Boolean                         isContinue = true,isBlocked;
     59 
     60     Dialog                          _Dialog;
     61     DialogField                     dlgPath;
     62     System.Exception                ex;
     63     #WINAPI
     64     FileNameFilter                  filter = ['Excel Files','*.xls;*.xlsx'];//['Image Files','*.bmp;*.jpg;*.gif;*.jpeg'];
     65     ;
     66 
     67     if(!SalesLine.ItemId)
     68         SalesLine_DS.delete();
     69     try
     70     {
     71         if(!box::yesNo("Do you have import Excel template?",DialogButton::No,'Import template'))
     72         {
     73             this.creatTemplate();
     74             return;
     75         }
     76         _FilenameOpen = Winapi::getOpenFileName(element.hWnd(),filter,WinAPI::getFolderPath(#CSIDL_Personal), "@SYS53008", '','');
     77         if(!_FilenameOpen)
     78             return ;
     79         if(!box::yesNo("Are you sure Import to AX 2009?",DialogButton::No,'Import to AX2009'))
     80             return ;
     81 
     82         Excel = SysExcelApplication::construct();
     83         Books = Excel.workbooks();
     84         Books.open(_FilenameOpen,true);
     85 
     86         Book   = Books.item(1);
     87         Sheets = Book.worksheets();
     88         Sheet  = Sheets.itemFromNum(1);
     89         Cells  = Sheet.cells();
     90 
     91         RowCount =   2;     //from second line fect data
     92 
     93         for(RowCount = 2;Cells.item(RowCount,1).value().bStr() != "";RowCount++)
     94         {
     95             n = 1;
     96 
     97             ItemId   = Cells.item(RowCount,n).value().bStr();    n++;
     98             ConfigId = Cells.item(RowCount,n).value().bStr();    n++;
     99             Qty      = Cells.item(RowCount,n).value().double();
    100 
    101             InventTable = InventTable::find(ItemId);
    102             if(InventTable)
    103             {
    104                 //if(InventTable.QVS_ItemBlock)
    105                 //    isBlocked  = true;
    106                 if(isBlocked)
    107                 {
    108                     isContinue = false;
    109                     info(strfmt("Item number %1 is blocked!",ItemId));
    110                 }
    111                 select firstonly t_InventStdPic
    112                     where t_InventStdPic.ItemId == InventTable.ItemId;
    113                 if(!t_InventStdPic)
    114                 {
    115                     isContinue = false;
    116                     info(strfmt("Item number %1 has no picture!",ItemId));
    117                 }
    118 
    119                 select firstonly ConfigTable
    120                     where ConfigTable.ItemId == InventTable.ItemId;
    121 
    122                 if(ConfigTable)
    123                 {
    124                     ConfigTable = ConfigTable::find(ItemId,ConfigId);
    125                     select firstonly BomVersion
    126                         where  BomVersion.BOMId     == ConfigTable.BOMId
    127                             && BomVersion.ItemId    == ItemId
    128                             //&& BomVersion.Active    == noYes::Yes
    129                             && BomVersion.Approved  == noYes::Yes;
    130                     if(!ConfigTable)
    131                     {
    132                         isContinue = false;
    133                         info(strfmt("Item number %1 has no configId %2!",ItemId,ConfigId));
    134                     }
    135                     if(ConfigTable.DisUsed)
    136                     {
    137                         isContinue = false;
    138                         info(strfmt("Item number %1's Config id %2 is 'DisUse'!",ItemId,ConfigId));
    139                     }
    140                     //if(!BomVersion)
    141                     //{
    142                     //    isContinue = false;
    143                     //    info(strfmt("Item number %1's BOM version %2 is DisUse''!",ItemId,ConfigTable.BOMId));
    144                     //}
    145                 }
    146             }
    147             else
    148             {
    149                 isContinue = false;
    150                 info(strfmt("Item number %1 can't been found!",ItemId,ConfigId));
    151             }
    152 
    153             if(!isContinue)
    154             {
    155                 isContinue = true;
    156                 continue;
    157             }
    158 
    159             if(ItemId && Qty)
    160             {
    161                 RecNum++;
    162 
    163                 a_ItemId[RecNum]   = ItemId;
    164                 a_ConfigId[RecNum] = ConfigId;
    165                 a_Qty[RecNum]      = Qty;
    166             }
    167         }
    168     }
    169     catch(Exception::CLRError)
    170     {
    171         Excel.quit();
    172         ex = CLRInterop::getLastException();
    173         while( ex )
    174         {
    175             info( ex.get_Message() );
    176             ex = ex.get_InnerException();
    177         }
    178     }
    179     catch(Exception::Error)
    180     {
    181         Excel.quit();
    182         global::exceptionTextFallThrough();
    183     }
    184     Excel.quit();
    185 
    186     info("------------------------------------------------");
    187     for(i = 1;i <= RecNum;i++)
    188     {
    189         SalesLine_DS.create();
    190         //SalesLine.InventDimId
    191         SalesLine.ItemId      = strupr(a_ItemId[i]);
    192 
    193         t_InventBatch.clear();
    194         select firstonly t_InventBatch
    195             where t_InventBatch.itemId  == SalesLine.ItemId  &&
    196                  (t_InventBatch.expDate == datenull()       ||
    197                   t_InventBatch.expDate >= today());
    198 
    199         t_InventDim.clear();
    200         t_InventDim.initValue();
    201         t_InventDim.configId         = a_ConfigId[i];
    202         t_InventDim.inventBatchId    = t_InventBatch.inventBatchId;
    203         t_InventDim.InventLocationId = "FPW";
    204 
    205         SalesLine.InventDimId        = InventDim::findOrCreate(t_InventDim).inventDimId;
    206         SalesLine.SalesQty           = a_Qty[i];
    207 
    208         SalesLine_DS.itemIdModified(); //这里面的逻辑非常重要
    209         SalesLine_DS.Write();
    210 
    211         //info(strfmt("%1: %2",a_ItemId[i],a_Qty[i]));
    212     }
    213 
    214     info(strfmt("Import into total of %1 records!",RecNum));
    215 
    216     SalesLine_ds.executeQuery();
    217     SalesLine_ds.research();
    218 }
  • 相关阅读:
    linux笔记
    初探hook的键盘获取
    python pyHook安装
    转: ZigBee/Z-Stack CC2530实现低功耗运行的配置简介
    三种zigbee网络架构详解
    adc verilog spi 时序
    dac verilog ad5601
    verilog 三段式状态机的技巧
    fpga 状态机 检测1011序列
    lattice diamond fpga 状态机的理解
  • 原文地址:https://www.cnblogs.com/Jinnchu/p/2663990.html
Copyright © 2020-2023  润新知