หน้าเว็บ

วันศุกร์ที่ 27 เมษายน พ.ศ. 2561

Vmware : Vmawre Esxi 6.5 status invalid ไม่สามารถลบปกติได้ ด้วยการคลิกขวา ลบ หรือ Unregister ได้

Vmware : Vmawre Esxi 6.5 status invalid ไม่สามารถลบปกติได้ ด้วยการคลิกขวา ลบ หรือ Unregister ได้
แก้โดย
vmware remove virtual machine status invalid by command
1. ssh เข้าเครื่อง Server Vmware ที่ Error
2. Stop vpxa and hostd service before edit คำสั่งนี้ Server อื่น ๆ ยังสามารถเข้าใช้งานได้ตามปกติ
  1. /etc/init.d/vpxa stop
  1. /etc/init.d/hostd stop

3. เข้าไปที่ /etc/vmware/hostd
  1. cd /etc/vmware/hostd

3. แก้ไฟล์ vmInventory.xml ด้วยคำสั่ง vi backup ไฟล์เดิมไว้ก่อนแก้ไขด้วย
  1. vi vmInventory.xml

4. หา Line ที่ Vm Error แล้วกด ลบ ด้วยการกด dd ลบทั้งบรรทัดออก
เช่น
  1.  <ConfigEntry id="0002">
  2.     <objID>3</objID>
  3.     <secDomain/>
  4.     <vmxCfgPath>/vmfs/volumes/590cca43-c78bd3ac-1234-000c2908a466/VMware vCenter Server Appliance/VMware vCenter Server Appliance.vmx</vmxCfgPath>
  5.   </ConfigEntry>

5. กด :wq เพื่อออกจาก จาก คำสั่ง vi
6. Start service vpxa and hostd service
  1. /etc/init.d/vpxa start
  1. /etc/init.d/hostd start

เสร็จแล้วลองเข้าดู Vm ที่ Error จะหายไป
https://communities.vmware.com/thread/582673
คำสั่ง vi เพิ่มเติม
http://thaiopensource.org/%E0%B9%83%E0%B8%8A%E0%B9%89%E0%B8%87%E0%B8%B2%E0%B8%99-vi-editor-%E0%B9%80%E0%B8%9A%E0%B8%B7%E0%B9%89%E0%B8%AD%E0%B8%87%E0%B8%95%E0%B9%89%E0%B8%99/

วันพฤหัสบดีที่ 26 เมษายน พ.ศ. 2561

ATOM : เขียน Code arduino โดยใช้ ATOM

ATOM : เขียน Code arduino โดยใช้ ATOM
วิธีติดตั้ง
1. ติดตั้ง ATOM โดย Download
https://atom.io/
แล้วนำ .deb มาติดตั้งได้เลย

2. ติดตั้งเสร็จจะไม่มี Menu Build และ Upload ต้องติดตั้ง Package เพิ่ม
http://docs.platformio.org/en/latest/ide/atom.html#ii-clang-for-intelligent-code-completion
ใส่ platformio-ide ในช่องค้นหา แล้วกด Install
3. ติดตั้ง clang เพิ่ม
  1. apt-get install clang

เสร็จแล้วจะมี Menu PlatformIO ขึ้นมา สามารถ Build และ Upload Run Program ได้จาก Menu นี้

วันอังคารที่ 24 เมษายน พ.ศ. 2561

PHP : PHP ใส่ข้อความหรือข้อมูลในรูป ในตำแหน่งที่ต้องการ

PHP : PHP ใส่ข้อความหรือข้อมูลในรูป ในตำแหน่งที่ต้องการ
ต้องใช้ CSS ช่วย
เช่น
Html
  1. <div class="container">
  2.   <img src="img_fjords_wide.jpg" alt="Norway" style="width:100%;">
  3.   <div class="bottom-left">Bottom Left</div>
  4.   <div class="top-left">Top Left</div>
  5.   <div class="top-right">Top Right</div>
  6.   <div class="bottom-right">Bottom Right</div>
  7.   <div class="centered">Centered</div>
  8. </div>
  9.  


CSS
  1. /* Container holding the image and the text */
  2. .container {
  3.     position: relative;
  4.     text-align: center;
  5.     color: white;
  6. }
  7.  
  8. /* Bottom left text */
  9. .bottom-left {
  10.     position: absolute;
  11.     bottom: 8px;
  12.     left: 16px;
  13. }
  14.  
  15. /* Top left text */
  16. .top-left {
  17.     position: absolute;
  18.     top: 8px;
  19.     left: 16px;
  20. }
  21.  
  22. /* Top right text */
  23. .top-right {
  24.     position: absolute;
  25.     top: 8px;
  26.     right: 16px;
  27. }
  28.  
  29. /* Bottom right text */
  30. .bottom-right {
  31.     position: absolute;
  32.     bottom: 8px;
  33.     right: 16px;
  34. }
  35.  
  36. /* Centered text */
  37. .centered {
  38.     position: absolute;
  39.     top: 50%;
  40.     left: 50%;
  41.     transform: translate(-50%, -50%);
  42. }

https://www.w3schools.com/howto/howto_css_image_text.asp
เช่น FlangeDimensions ของออกแบบ
Html
  1. <div class='container'>
  2.   <img src='FLAT.jpg' alt='FLAT FACE' width='100%'>
  3.   <div class='F_ODValue'>$OD</div>
  4.   <div class='F_OCValue'>$OC</div>
  5.   <div class='F_hValue'>$h</div>
  6.   <div class='F_nValue'>$n</div>
  7.   <div class='F_MValue'>$M</div>
  8. </div> ";


CSS
  1. /* Container holding the image and the text */
  2. .container {
  3.     position: relative;
  4.     text-align: center;
  5.     color: white;
  6. }
  7. /* FLAT FACE */
  8. .F_ODValue {
  9.     position: absolute;
  10.     top: 19%;
  11.     left: 37%;
  12. }
  13.  
  14. .F_OCValue {
  15.     position: absolute;
  16.     top: 28%;
  17.     left: 37%;
  18. }
  19.  
  20. .F_hValue {
  21.     position: absolute;
  22.     top: 66%;
  23.     left: 74%;
  24. }
  25.  
  26. .F_nValue {
  27.     position: absolute;
  28.     top: 72%;
  29.     left: 74%;
  30. }
  31.  
  32. .F_MValue {
  33.     position: absolute;
  34.     top: 79%;
  35.     left: 74%;
  36. }
  37.  
  38. /* RAISED FACE */
  39.  
  40. .R_ODValue {
  41.     position: absolute;
  42.     top: 11%;
  43.     left: 37%;
  44. }
  45.  
  46. .R_OCValue {
  47.     position: absolute;
  48.     top: 20%;
  49.     left: 37%;
  50. }
  51.  
  52. .R_OGValue {
  53.     position: absolute;
  54.     top: 28%;
  55.     left: 37%;
  56. }
  57.  
  58. .R_hValue {
  59.     position: absolute;
  60.     top: 66%;
  61.     left: 74%;
  62. }
  63.  
  64. .R_nValue {
  65.     position: absolute;
  66.     top: 72%;
  67.     left: 74%;
  68. }
  69.  
  70. .R_MValue {
  71.     position: absolute;
  72.     top: 79%;
  73.     left: 74%;
  74. }

Phpmyadmin : เปลี่ยนรหัส User ที่ใช้ Login Phpmyadmin

Phpmyadmin : เปลี่ยนรหัส User ที่ใช้ Login Phpmyadmin

1. เข้าไปที่ Database mysql เลือก Table User จะพบ User เลือก User ที่ต้องการแล้วกด Edit
2. เปลี่ยน Password ให้เป็น Password แล้วใส่รหัสที่ต้องการ
3. คลิกที่ Home แล้วเลือก More settings
4. ที่ Tab User เลือก reload the privileges ทดลอง Login ด้วย รหัสใหม่

Phpmyadmin : Phpmyadmin สร้าง User และกำหนดสิทธิ์ให้ Database

Phpmyadmin : Phpmyadmin สร้าง User และกำหนดสิทธิ์ให้ Database
ต้องการสร้าง User และ Database ให้สำหรับ User นั้น User เดียวที่เห็น และสามารถเพิ่มลบแก้ไขข้อมูลใน Database นั้นได้ อันเดียว
อันอื่น ๆ ไม่ต้องให้เห็น
1. เลือก Database ที่ต้องการ เลือก Privileges แล้วกด Add User
2. สร้าง User ที่ต้องการ และตั้งรหัสผ่าน Host Any host ใส % คือให้เข้าได้จากทุกเครื่อง
3. ไม่ต้องติ๊ก อะไร กด GO
4. ทดลอง Login ด้วย User ที่สร้างขึ้นมาใหม่ จะพบ เฉพาะ Database ที่กำหนดให้ Database อื่น จะไม่พบ

วันจันทร์ที่ 9 เมษายน พ.ศ. 2561

Axapta : Axapta คำสั่งผลิตทำ Jobcard แล้วเผลอติ๊ก Job Is Finish

Axapta : Axapta คำสั่งผลิตทำ Jobcard แล้วเผลอติ๊ก Job Is Finish ไปแต่ยังไม่ได้ End คำสั่งผลิต
ต้องการคีย์ ต้นทุน Jobcard เพิ่ม แต่คีย์ Jobcard ใหม่แล้วเขัาไปใน Line เลือก Job identification ไม่ได้

แก้โดย
- เข้าไปที่ Table ProdRouteJob
- หา ProdId ที่ตรงกับคำสั่งผลิตที่กำลังจะทำ
- แก้ JobStatus จาก End เป็น Start
เสร็จแล้วลองให้ ผลิตคีย์ Jobcard เพิ่ม เสร็จแล้วก็แก้กลับ จาก Start เป็น End

วันศุกร์ที่ 6 เมษายน พ.ศ. 2561

Axapta : Axapta Marge Cell And Set Backgroud LibreOffice Calc

Axapta : Axapta Marge Cell And Set Backgroud LibreOffice Calc
Code :
                   strMarge = strfmt("A%1:J%1", rows + 1);
                    oRange = oSheet.getCellRangeByName(strMarge);
                    oRange.merge(true);
                    oRange.setPropertyValue("CellBackColor", 0x00dcff);
   
                    oRange = oSheet.getCellByPosition(0, rows);
                    oRange.SetString(strfmt("ÃÒ§ҹÂÍ´¢ÒÂã¹»ÃÐà·È ( %1 )", SalesGroupName));
   
                    strMarge = strfmt("A%1:J%1", rows + 2);
                    oRange = oSheet.getCellRangeByName(strMarge);
                    oRange.merge(true);
   
                    oRange = oSheet.getCellByPosition(0, rows + 1);
                    oRange.SetString(strfmt("From : %1 To : %2", fromDate, toDate));



Code : ALL
 
    static void openOffice(Args _args)
    {
        COM OpenOffice;
        COM oDeskTop;
        COM oDocument;
        COM oSheets;
        COM oSheet;
        COM oRange;
        COM BorderStruct;
        COMVariant arg;
        COMVariant byte;
        Array arr = new Array(Types::String);
        str url;
        int i;
    ;
        OpenOffice = new Com("com.sun.star.ServiceManager");
        oDeskTop = OpenOffice.CreateInstance("com.sun.star.frame.Desktop");
   
        // create and initialize a COMVariant object
        arg  = COMVariant::createFromArray(arr);
   
    //    url = "file:///C:/Losses.xls"; //open local file
    //    url = "file://Axaptaserver/AxaptaSP4/Excel/Losses.xls"; //open share file
    //    oDocument = oDeskTop.LoadComponentFromURL(url, "_blank", 0, arg);
        oDocument = oDeskTop.LoadComponentFromURL("private:factory/scalc", "_blank", 0, arg); //create new file
        oSheets   = oDocument.getSheets();
        oSheet    = oSheets.getByIndex(0); // select sheet
   
        BorderStruct = OpenOffice.Bridge_GetStruct('com.sun.star.table.BorderLine');
        BorderStruct.Color(24567057);
        BorderStruct.LineDistance(0);
        BorderStruct.InnerLineWidth(0);
        BorderStruct.OuterLineWidth(1);
   
    //    oRange = oSheet.getCellByPosition(8,1,9,1);
        oRange = oSheet.getCellRangeByName("H2:I2"); //ทำงานกับ range
        oRange.merge(true); // สั่ง merge ได้ด้วย
        oRange.setPropertyValue("CellBackColor", 16764057);
        oRange.SetPropertyValue("LeftBorder",BorderStruct);
        oRange.SetPropertyValue("RightBorder",BorderStruct);
        oRange.SetPropertyValue("TopBorder",BorderStruct);
        oRange.SetPropertyValue("BottomBorder",BorderStruct);
    //*****************************
        for(i=1; i<10;i++)
            {
            oRange = oSheet.getCellByPosition(0,i);
            oRange.SetValue(i); //ส่งข้อมูลจำพวกตัวเลข
            oRange.setPropertyValue("CellStyle", "Result");
            oRange = oSheet.getCellByPosition(1,i);
            oRange.Setstring('????????'); //ส่งข้อมูลประเภทตัวอักษร
            oRange.setPropertyValue('CharPosture',100);
            oRange = oSheet.getCellByPosition(2,i);
            oRange.SetValue(i*i);
            oRange.setPropertyValue('CharWeight',200);
            oRange.setPropertyValue('CharUnderline',124);
            oRange = oSheet.getCellByPosition(3,i);
            oRange.SetString(date2str(today(),123,2,2,2,2,4));
            oRange.setPropertyValue("CharColor", 500);
            oRange.setPropertyValue('CharShadowed', True);
            oRange = oSheet.getCellByPosition(4,i);
            oRange.SetString(today());
            oRange.setPropertyValue("CellBackColor", 0x99CCFF);
            oRange.setPropertyValue("CharHeight", 12);
            oRange.setPropertyValue("IsTextWrapped", True);
            oRange = oSheet.getCellByPosition(5,i);
            oRange.SetString(today());
            oRange.setPropertyValue("CellStyle", "Date");
            }
    }
    

Owntracks : owntracks deleate User/Device

Owntracks : owntracks deleate User/Device
Delete List :
  1. cd /var/spool/owntracks/recorder/store/last/scivalve
  1. rm -r "name delete"


Delete DB : ข้อมูลจุด อยู่ใน .rce
  1. cd /var/spool/owntracks/recorder/store/rec/scivalve
  1. rm -r "name delete"


https://github.com/owntracks/recorder/issues/147

วันพฤหัสบดีที่ 5 เมษายน พ.ศ. 2561

Axapta :: ใส่สี Control ใน Grid

Axapta :: ใส่สี Control ใน Grid

It is possible to use colours in grids on Axapta forms. This can be a useful method to highlight particular rows, or grid cells within a row, based on the data in the record.
Highlighting complete rows
The method .displayOption() method on a form datasource can be over-ridden to control the appearance of an single row in a grid. It is possible to set the background or foreground (text) colour. Since this is a form datasource method, the FormRowDisplayOption affects not only the grid, but also the other controls on this form connected to the datasource.

    public void displayOption(Common _record, FormRowDisplayOption _options)
    {
        _options.backColor(WinApi::RGB2int(255,0,0)); // red 
    }


Highlighting individual grid cells
To highlight one or more individual cells, use the ._options.affectedElementsByControl() method to limit the effect to only the cells in which you are interested.

Note that while this method can display the same colour in multiple cells, there is no way to display different colours in a single row.

    public void displayOption(Common _record, FormRowDisplayOption _options)
    {
        _options.backColor(WinApi::RGB2int(255,255,0)); // Yellow 
        _options.affectedElementsByControl(Control_Name.id());
        _options.affectedElementsByControl(Another_Control_Name.id());
    }

ต้องกำหนด Properties ใน Field ตรง AutoDeclaration เป็น Yes ด้วย
เช่น
public void displayOption(Common _record, FormRowDisplayOption _options)
{
    InventJournalTrans  myInventJournalTrans = _record;

    ;
    super(_record, _options);

    if(myInventJournalTrans.OrderQty != (myInventJournalTrans.Qty * -1)){
        _options.textColor(WinApi::RGB2int(255, 0, 0)); // Red
        _options.affectedElementsByControl(InventJournalTrans_Qty.id());
    }
}

http://www.axaptapedia.com/Using_colours_in_grids

วันอังคารที่ 3 เมษายน พ.ศ. 2561

Axapta : Update ต้นทุนค่าแรงเมื่อเพิ่มเงินเดือนพนักงาน

ต้องทำใน Local ก่อน และ Backup ข้อมูลทั้ง Table ในของจริงก่อนจะเอาเข้า
1. Up แบบ Import File ทำไฟล์ แล้วเอาเข้ากรณีเพิ่มใหม่หรือยังไม่มี MC
https://intranet.sci.com/blog.php?u=578&b=1129

2. แบบมี ข้อมูลอยู่แล้วแต่ต้องการ Update ค่าแรง ใช้ Code ทำเป็น Job Run ทำไฟล์ โดยใช้ EmpId,ต้นทุนค่าแรง
Code

    static void UpdateCostcategoryOT(Args _args)
    {
            AsciiIO             myFile;
            AsciiIO             OKFile;
            AsciiIO             NOFile;
            int                 i,n;
            int                 intRecId;
            container           RecData;
            container           contTmp;
            ItemId              myMC;
            EmplId              myEmplId;
            Price               myCost;
            InventTable         inventTable;
            RouteCostCategory   routeCostCategory;
   
            ;
   
            myFile=new AsciiIO("D:\\2018_Update.csv","r");
            myfile.inFieldDelimiter(",");
            while(myFile.status() == IO_Status::Ok)
                RecData += myFile.read();
            myFile = null;
   
   
            OKFile=new AsciiIO("D:\\OK-Update.txt","a");
            NOFile=new AsciiIO("D:\\NO-Update.txt","a");
            for(i=1; i <= conlen(RecData); i++){
   
                myCost =  conpeek(RecData, i);
                i++;
                myEmplId =  conpeek(RecData, i);
   
                SELECT * FROM routeCostCategory
                WHERE routeCostCategory.EmplId == myEmplId;
   
                if(routeCostCategory.RecId){
                    //print(strfmt("%1 : %2 \t OK",i,myEmplId));
                    OKFile.write(strfmt("%1\t%2\t%3",myEmplId, routeCostCategory.CostPrice, myCost));
                    ttsbegin;
   
    // #####  Cost Amount ######
                    WHILE
                    SELECT FORUPDATE * FROM routeCostCategory
                    WHERE routeCostCategory.EmplId == myEmplId
                    {
                        routeCostCategory.CostPrice = myCost;
                        routeCostCategory.update();
                    }
    // #####  Cost Amount OT 1.5 ######
                    WHILE
                    SELECT FORUPDATE * FROM routeCostCategory
                    WHERE routeCostCategory.EmplId == myEmplId
                    && (routeCostCategory.CostCategoryId LIKE '*1.5' || routeCostCategory.CostCategoryId LIKE 'OT1.5*')
                    {
                        routeCostCategory.CostPrice = myCost * 1.5;
                        routeCostCategory.update();
                    }
    // #####  Cost Amount OT 2.0 ######
                    WHILE
                    SELECT FORUPDATE * FROM routeCostCategory
                    WHERE routeCostCategory.EmplId == myEmplId
                    && (routeCostCategory.CostCategoryId LIKE '*2.0' || routeCostCategory.CostCategoryId LIKE 'OT2.0*')
                    {
                        routeCostCategory.CostPrice = myCost * 2.0;
                        routeCostCategory.update();
                    }
    // #####  Cost Amount OT 3.0 ######
                    WHILE
                    SELECT FORUPDATE * FROM routeCostCategory
                    WHERE routeCostCategory.EmplId == myEmplId
                    && (routeCostCategory.CostCategoryId LIKE '*3.0' || routeCostCategory.CostCategoryId LIKE 'OT3.0*')
                    {
                        routeCostCategory.CostPrice = myCost * 3.0;
                        routeCostCategory.update();
                    }
                    ttscommit;
   
                }else{
                    //print(strfmt("%1 : %2 \t NO",i,myEmplId));
                    NoFile.write(strfmt("%1,%2",myEmplId, myCost));
                }
   
   
   
            }
            OKFile = null;
            NOFile = null;
            box::info(" Complete","File2SQL");
    //    pause;
   
    }



3. เปลี่ยนแท่นเปลี่ยนคน ต้องทำ
3.1. ได้ไฟล์มาทำไฟล์ เอารหัสพนักงานเข้าไป Check ว่ามีพนังานอยู่หรือไม่ ถ้าไม่มีตรวจสอบอาจใส่รหัสผิด หรือต้องเพิ่มข้อมูลใหม่ในข้อ 1.
ใช้ MC,EmpId
Code

    static void UpdateCostcategoryCheckMC(Args _args)
    {
            AsciiIO             myFile;
            AsciiIO             OKFile;
            AsciiIO             NOFile;
            int                 i,n;
            int                 intRecId;
            container           RecData;
            container           contTmp;
            ItemId              myMC;
            EmplId              myEmplId;
            Price               myCost;
            InventTable         inventTable;
            RouteCostCategory   routeCostCategory;
   
            ;
   
            myFile=new AsciiIO("D:\\CheckMC.csv","r");
            myfile.inFieldDelimiter(",");
            while(myFile.status() == IO_Status::Ok)
                RecData += myFile.read();
            myFile = null;
   
   
            OKFile=new AsciiIO("D:\\CheckMCOK.txt","a");
            NOFile=new AsciiIO("D:\\CheckMCNO.txt","a");
            for(i=1; i <= conlen(RecData); i++){
   
                myMC =  conpeek(RecData,i);
                i++;
                myEmplId =  conpeek(RecData,i);
   
                SELECT * FROM routeCostCategory
                WHERE routeCostCategory.CostCategoryId == myMC;
                if(routeCostCategory.RecId){
                    print(strfmt("%1 : %2 \t OK",i,myEmplId));
                    OKFile.write(strfmt("%1\t%2\t%3",myMC, myEmplId, routeCostCategory.EmplId));
                    /*ttsbegin;
                    WHILE SELECT FORUPDATE * FROM routeCostCategory
                    WHERE routeCostCategory.EmplId == myEmplId
                    {
                    routeCostCategory.CostPrice = myCost;
                    routeCostCategory.update();
                    }
                    ttscommit;*/
                }else{
                    print(strfmt("%1 : %2 \t NO",i,myEmplId));
                    NoFile.write(strfmt("%1,%2",myMC, myEmplId));
                }
   
   
   
            }
            OKFile = null;
            NOFile = null;
            box::info(" Complete","File2SQL");
    //    pause;
   
    }


3.2. ได้ไฟล์ที่จะ Update เปลี่ยนแท่น Format : MC,EmpId,EmpIdAX เขียน Code Update เปลี่ยนแท่น จะเปลี่ยนจาก Emp อีกคนเป็นอีกคน ทุก รายการที่ MC เดียวกัน แล้วค่อยไป Update ค่าแรงในข้อ 2.
Code    
    static void UpdateCostcategoryMC(Args _args)
    {
            AsciiIO             myFile;
            AsciiIO             OKFile;
            AsciiIO             NOFile;
            int                 i,n;
            int                 intRecId;
            container           RecData;
            container           contTmp;
            ItemId              myMC;
            ItemId              myMCUpdate;
            EmplId              myEmplId;
            EmplId              myEmplIdAX;
            Price               myCost;
            InventTable         inventTable;
            RouteCostCategory   routeCostCategory;
   
            ;
   
            myFile=new AsciiIO("D:\\UpdateMC.csv","r");
            myfile.inFieldDelimiter(",");
            while(myFile.status() == IO_Status::Ok)
                RecData += myFile.read();
            myFile = null;
   
            OKFile=new AsciiIO("D:\\UpdateMCOK.txt","a");
            NOFile=new AsciiIO("D:\\UpdateMCNO.txt","a");
            for(i=1; i <= conlen(RecData); i++){
   
                myMC = conpeek(RecData,i);
                i++;
                myEmplId =  conpeek(RecData,i);
                i++;
                myEmplIdAX =  conpeek(RecData,i);
   
                myMCUpdate = strfmt('*%1*', myMC);
                ttsbegin;
                WHILE
                SELECT FORUPDATE * FROM routeCostCategory
                WHERE routeCostCategory.EmplId == myEmplIdAX
                    && routeCostCategory.CostCategoryId LIKE myMCUpdate
                {
                    if(routeCostCategory.RecId){
   
                        //print(strfmt("%1 : %2 \t OK",i,myEmplId));
                        OKFile.write(strfmt("%1\t%2\t%3",myMC, myEmplId, myEmplIdAX));
   
                        routeCostCategory.EmplId = myEmplId;
                        routeCostCategory.update();
                    } else {
                        //print(strfmt("%1 : %2 \t NO",i,myEmplId));
                        NoFile.write(strfmt("%1,%2",myMC, myEmplId, myEmplIdAX));
                    }
                }
                ttscommit;
            }
            OKFile = null;
            NOFile = null;
            box::info(" Complete","File2SQL");
    //    pause;
   
    }



4.พนักงานออกไปแล้ว เขียน Code Reset รหัสและค่าแรง โดยเปลี่ยนรหัสพนักงาน
Code

    static void UpdateCostcategoryByEmpId(Args _args)
    {
            EmplId              myEmplId;
            Price               myCost;
            InventTable         inventTable;
            RouteCostCategory   routeCostCategory;
   
            ;
   
            ttsbegin;
                WHILE SELECT FORUPDATE * FROM routeCostCategory
                WHERE routeCostCategory.EmplId == '4273-5'
                {
                routeCostCategory.EmplId = '';
                routeCostCategory.CostPrice = 0;
                routeCostCategory.update();
                }
            ttscommit;
   
            box::info(" Complete","File2SQL");
    }