2026年6月23日 星期二

V1060304A-定更定檢拆挪管制 - 自定icon – icon佔滿按鈕 - 空間 - space - css

 目的: V1060304A-定更定檢拆挪管制 - 自定icon – icon佔滿按鈕

處理說明: 1>var Tmp_Str = "<link type='text/css' rel='stylesheet' href='../JsFunction/mycss.css' >";
                      $('head').append(Tmp_Str);
     2>  var cmp_sub_btn_MOVE12 = get_cmp_btn1('右移', 'sub_btn_MOVE12', 10, 'myicon-right',);  

3> //利用 { xtype: 'panel', flex: 20, } 製造按鈕空間
       items: [
                      { xtype: 'panel', flex: 20, }, //space panel
                       cmp_sub_btn_MOVE12,
                      { xtype: 'panel', flex: 5, }, //space panel
                       cmp_sub_btn_MOVE21,
                      { xtype: 'panel', flex: 5, },//space panel
                  ]

1>mycss.css
<style type="text/css" >
#my_tbl {
    border-width: 9px;
    border-style: solid;    
}
.my_bigfont{
    font-size:  30px;
        color: yellow;
}
.my_redcolor {
    background-color: red;
    background: red;
}
.my_required {
    background: #FFDBE4;
}
.my_lightgreen {
    background: #CCFF00;
}
.myicon-right {
    background-image: url('../images/icons/right.png'); /* 圖示路徑 */
    /*background-size: cover; */ /*圖示縮放填滿 */
    background-position: center;
    width: 80% !important;
    height: 80% !important;
}
 </style >

2>V1060304A.js
 //panel22 左移/右移
    var cmp_sub_btn_MOVE21 = get_cmp_btn1('  ', 'sub_btn_MOVE21', 10, 'icon-left-select',);
    //使用自定的 mycss.css檔案
    //var cmp_sub_btn_MOVE12 = get_cmp_btn1('右移', 'sub_btn_MOVE12', 10, 'myicon-right',);  
    var cmp_sub_btn_MOVE12 = get_cmp_btn1('  ', 'sub_btn_MOVE12', 10, 'icon-right-select',);
    //panel3 下移1/上移1     下移2/上移2
    var cmp_sub_btn_MOVE13 = get_cmp_btn1('  ', 'sub_btn_MOVE13', 10, 'icon-down',);
    var cmp_sub_btn_MOVE31 = get_cmp_btn1('  ', 'sub_btn_MOVE31', 10, 'icon-up',);
    var cmp_sub_btn_MOVE23 = get_cmp_btn1('  ', 'sub_btn_MOVE23', 10, 'icon-down',);
    var cmp_sub_btn_MOVE32 = get_cmp_btn1('  ', 'sub_btn_MOVE32', 10, 'icon-up',);

   {  //sub_panel22,左/右移    //利用 製造按鈕空間{ xtype: 'panel', flex: 20, }
                                                xtype: 'panel',
                                                id: 'sub_panel22',
                                                flex: 5,
                                                layout: { type: 'vbox',align:'stretch',},
                                                border: 1,
                                                //title: 'sub_panel22',
                                                items: [                                                    
                                                    { xtype: 'panel', flex: 20, }, //space panel
                                                    //{ xtype: 'spacer' },
                                                    cmp_sub_btn_MOVE12,                                                    
                                                    { xtype: 'panel', flex: 5, }, //space panel
                                                    //{ xtype: 'spacer' },
                                                    cmp_sub_btn_MOVE21,
                                                    //{ xtype: 'spacer' },
                                                    { xtype: 'panel', flex: 5, },//space panel
                                                ]
                                            },


2026年6月21日 星期日

V1060301 – Visual Studio的 Debug 問題  按[下一步]卻停在不對的 statement , Debug/Release

 目的: V1060301 – Visual Studio Debug 問題,    [下一步]卻停在不對的 statement

處理說明: 1>Visual Studio的 組態必需為 Debug , 不可為  Release ,
                       --> 若為 Release ,則 Debug 的下一步  statement 會不正確




2026年6月17日 星期三

V1060304A- 判斷多欄位PK是否存在 Grid(store)中 – store.findBy( function(rec,id) { }) - 符合

 目的: V1060304A- 判斷多欄位PK是否存在 Grid(store) – store.findBy( function(rec,id) { })

處理說明: 1>var Tmp_index= store.findBy( function (rec,id) {      }) ;
                       若有符合條件,則傳回 符合的 index 
                            var Tmp_index = gridstore.findBy(function (rec, id) {
                                       var Tmp_bol = true;           
                                       Tmp_bol = rec.data["PROJID"].toString() == Tmp_PROJID
                                                         && rec.data["TYPE"].toString() == Tmp_TYPE
                                                         && rec.data["ITEM"].toString() == Tmp_ITEM;           
                                        return Tmp_bol;   // true : 有找到
                             });


1>*.js
      var Tmp_PROJID = nulltoStr(cur_rec.data['PROJID']).toString();
      var Tmp_TYPE = nulltoStr(cur_rec.data['TYPE']).toString();
      var Tmp_ITEM = nulltoStr(cur_rec.data['ITEM']).toString();
      var Tmp_ASN = nulltoStr(cur_rec.data['ASN']).toString();
 
//判斷目前資料是否已存在  sub_Grid2
        var gridstore = Ext.getCmp("sub_Grid2").store;
        var Tmp_index = gridstore.findBy(function (rec, id) {
            var Tmp_bol = true;           
            Tmp_bol = rec.data["PROJID"].toString() == Tmp_PROJID
                && rec.data["TYPE"].toString() == Tmp_TYPE
                && rec.data["ITEM"].toString() == Tmp_ITEM;           
            return Tmp_bol;   // true : 有找到
        });
        if (Tmp_index > 0) {
            Tmp_Str = "機號(" + Tmp_ASN2 + ")<br>"
                + "分類(" + Tmp_TYPE + ")<br>"
                + "ITEM(" + Tmp_ITEM + ")<br>"
                //+ "定更定檢項目(" + Tmp_CHKCHG_NM + ")<br>"               
                + " 資料已存在!!<br><br>"
                + "請先將機號(" + Tmp_ASN2 + ")ITEM(" + Tmp_ITEM + ")拆挪至備份件<br> "
                + "才可將機號(" + Tmp_ASN1 + ")ITEM(" + Tmp_ITEM + ")拆挪至機號(" + Tmp_ASN2+")<br>"
                ;
            mywarnalert(Tmp_Str);
            return;
        }

 

2026年6月16日 星期二

V1060304A – sub_Grid 不分頁 && 不顯示Toolbar

 目的: V1060304A – sub_Grid 不分頁 && 不顯示Toolbar

處理說明: 1>資料不分頁:
                       DataSet ds = getDataTable(cmd, countSql, false);
                  2>Toolbar 不顯示
                       Ext.getCmp('sub_Grid1_ptb').hide();  //toolbar 名稱= Grid名稱+'_ptb';
                       Ext.getCmp('sub_Grid2_ptb').hide(); 
                       Ext.getCmp('sub_Grid3_ptb').hide();



1>*.cs

        DataSet ds = getDataTable(cmd, countSql, false);  //paging = false

2>*.js
    //隱藏 ToolBar  , //toolbar 名稱= Grid名稱+'_ptb';
    Ext.getCmp('sub_Grid1_ptb').hide();
    Ext.getCmp('sub_Grid2_ptb').hide();
    Ext.getCmp('sub_Grid3_ptb').hide();


V1060304A- 調整版面高度 – 若為 region ,則split: true 若為 hbox,vbox 則 { xtype: 'splitter',width: 2},

 目的: V1060304A- 調整版面高度  
                  若為 region ,split: true  
            若為 hbox,vbox { xtype: 'splitter',width: 2}, 

處理說明:  1> 若為 region ,split: true    , Ex: V1060304A                  


   2> 若為 hbox,vbox { xtype: 'splitter',width: 2},  Ex: V20302B

1>V1060304A.js
 {  //往上/往下按鈕 - 
                        xtype: 'panel',
                        id: 'sub_panel3',
                        height: 60,
                        split: true,
                        region: 'south',
                        layout: { type: 'hbox', align: 'stretch' },
                        border: 1,
                        //title: 'sub_panel3',
                        items: [
                            { xtype: 'panel', flex: 30, }, //space panel
                            cmp_sub_btn_DOWN1,
                            { xtype: 'panel', flex: 10, }, //space panel
                            cmp_sub_btn_UP1,
                            { xtype: 'panel', flex: 50, },//space panel
                            cmp_sub_btn_DOWN2,
                            { xtype: 'panel', flex: 10, }, //space panel
                            cmp_sub_btn_UP2,
                            { xtype: 'panel', flex: 20, }, //space panel
                            cmp_sub_btn_CLOSE,
                        ]
                    },


2>V20304B.js - 系統件除帳
{
  xtype:'panel',bodyStyle: "background-color:transparent;", border: false, 
layout: {  type: "vbox",  align: 'stretch' }, padding: "5",
            id: 'sub1_myForm', items: [
 {
                    xtype: "fieldcontainer", fieldLabel: "內容", labelWidth: 60, layout: "fit", flex: 3, items: [
                        {
                            id: "sub1_content", name: "sub1_content", xtype: "textareafield",  padding: "0 4 0 0", 
                            //value: "AJT",
                        },
                    ]
                }, // end of 內容
  {
                    xtype: 'splitter',
                    width: 2,
                },
                {  //下方 TreeView, 左右移,正本/副本
                    xtype: "panel", flex: 5,
                    layout: {
                        type: 'hbox',
                        align: 'stretch'
                    },

2026年6月15日 星期一

V1060304A – [定更/定檢拆挪管制]鈕- 版面設計 - layout: 'border', - region: 'north'

 目的: V1060304A – [定更/定檢拆挪管制]- 版面設計

處理說明: 1>
                  2>



1>*.js

var sub_V1060304A_Flds = [
            {
                type: 'panel', bodyStyle: "background-color:transparent;", border: 5, padding: "1",
                layout: 'border',
                items: [
                    {  //專案別
                        xtype: 'panel', id: 'sub_panel1', region: 'north', layout: 'hbox',
                        height: 60,
                        border: 2,
                        title: 'sub_panel1',
                        items: [                            
                                cmp_sub_PROJID, cmp_sub_rd1, cmp_sub_rd2,                            
                        ]  //end of sub_panel1.items,
                    },  // end of sub_panel1                        
                    {  //機號1 --> 機號2
                        xtype: 'panel',
                        id: 'sub_panel2',
                        region: 'center',
                        layout: 'hbox',                        
                        border: 1,
                        title: 'sub_panel2',
                        items: [                            
                                    {  //sub_panel21,,實體定更定檢清單1
                                                xtype: 'panel',
                                                id: 'sub_panel21',                                                
                                                flex: 45,
                                                layout: 'vbox',
                                                border: 1,
                                                title: 'sub_panel21',
                                                items: [
                                                ]
                                            },
                                            {  //sub_panel22,左/右移
                                                xtype: 'panel',
                                                id: 'sub_panel22',
                                                flex: 10,
                                                layout: 'vbox',
                                                border: 1,
                                                title: 'sub_panel22',
                                                items: [
                                                ]
                                            },
                                            {  //sub_panel23,實體定更定檢清單2
                                                xtype: 'panel',
                                                id: 'sub_panel23',
                                                flex: 45,
                                                layout: 'vbox',
                                                border: 1,
                                                title: 'sub_panel23',
                                                items: [
                                                ]
                                            },                                        
                                ], // end of sub_panel2.items                            
                    },
                    {  //往上/往下按鈕 - 
                        xtype: 'panel',
                        id: 'sub_panel3',
                        height: 60,
                        region: 'south',
                        layout: 'hbox',
                        border: 1,
                        title: 'sub_panel3',
                        items: [
                        ]
                    },
                    {  //備份件清單 - Grid
                        xtype: 'panel',
                        id: 'sub_panel4',
                        region: 'south',
                        layout: 'fit',
                        height: 120,                        
                        border: 1,
                        title: 'sub_panel4',
                        items: [
                        ]
                    },
                ] // end of   layout: "vbox", padding: "5", items: [
            }  //end of  sub_ShowPN_Flds , items[{
        ]      //end of  var sub_ShowPN_Flds    

2026年6月14日 星期日

V1060301 – 以 ITEM 排序 1,2,3,.,9,9-1,10,10-1,..117,117-1,117-1A,117-A,118(依數字順序) - 字母排序 - 依數字排序 - 每頁筆數

目的: V1060301 – 如何以 ITEM 排序  1,2,3,..10,10-1,..117,117-1,117-1A,117-A,118(依數字順序)

      不可 1,10,100,117,..,2,3, (依字母順序)

處理說明: 1>依 ITEM 的數字排序(1,2,3,9,9-1,10,10-1,11,..101,102,)
                       ORDER BY PROJID,TYPE,
CAST((case when instr(ITEM,'-')>0 then substring(ITEM,1,instr(ITEM,'-')-1) else ITEM end) as INTEGER)

                  2>每頁 30筆,非 32筆(RNK)  - 因為 ITEM(9,9-1的 RNK 一樣(9),造成每頁筆數不對)
SELECT RNK,   
       PROJID ,TYPE ,ITEM ,WUC ,CHKCHG_NM ,CHKCHG_TM ,   
       SITEM ,CHKCHG_TEXT ,PN ,IS_MULTI ,TMBASE1 ,   
       TMFEQ1 ,TMUNIT1 ,TMBASE2 ,TMFEQ2 ,TMUNIT2 ,   
       PTMVAL1 ,PTMUNIT1 ,PTMVAL2 ,PTMUNIT2 ,REMARK ,   
       MKID ,MKDT ,ENG_LR ,HAS_FCHK ,FCHK_VAL ,   
       IS_SER ,IS_CANCEL ,CANCEL_REASON  
FROM ( SELECT  rownum as RNK,   
               PROJID ,TYPE ,ITEM ,WUC ,CHKCHG_NM ,CHKCHG_TM ,   
               SITEM ,CHKCHG_TEXT ,PN ,IS_MULTI ,TMBASE1 ,   
               TMFEQ1 ,TMUNIT1 ,TMBASE2 ,TMFEQ2 ,TMUNIT2 ,   
               PTMVAL1 ,PTMUNIT1 ,PTMVAL2 ,PTMUNIT2 ,REMARK ,   
               MKID ,MKDT ,ENG_LR ,HAS_FCHK ,FCHK_VAL ,   
               IS_SER ,IS_CANCEL ,CANCEL_REASON   
        FROM  (    select     PROJID ,TYPE ,ITEM ,WUC ,CHKCHG_NM ,CHKCHG_TM ,   
                              SITEM ,CHKCHG_TEXT ,PN ,IS_MULTI ,TMBASE1 ,   
                              TMFEQ1 ,TMUNIT1 ,TMBASE2 ,TMFEQ2 ,TMUNIT2 ,   
                              PTMVAL1 ,PTMUNIT1 ,PTMVAL2 ,PTMUNIT2 ,REMARK ,   
                              MKID ,MKDT ,ENG_LR ,HAS_FCHK ,FCHK_VAL ,   
                              IS_SER ,IS_CANCEL ,CANCEL_REASON   
                   FROM  AMM_CHKCHG  A   
                   WHERE  1=1   
                   AND   PROJID  LIKE '%AJT%'  
                   ORDER  BY PROJID,TYPE,CAST((case when instr(ITEM,'-')>0 then substring(ITEM,1,instr(ITEM,'-')-1) else ITEM end) as INTEGER)    
              ) 
     ) 










1>SQL:  --> (若有 - ,則ITEM去除 - 以後文字, , 若無 -, 則用 ITEM) 轉成數字 ,排序

select  PROJID,TYPE,
(case when instr(ITEM,'-')>0 then substring(ITEM,1,instr(ITEM,'-')-1) else ITEM end) as ITEM_,
CAST((case when instr(ITEM,'-')>0 then substring(ITEM,1,instr(ITEM,'-')-1) else ITEM end) as INTEGER) as ITEM__,   
                   ITEM ,WUC ,CHKCHG_NM ,CHKCHG_TM ,   
                   SITEM ,CHKCHG_TEXT ,PN ,IS_MULTI ,TMBASE1 ,   
                   TMFEQ1 ,TMUNIT1 ,TMBASE2 ,TMFEQ2 ,TMUNIT2 ,   
                   PTMVAL1 ,PTMUNIT1 ,PTMVAL2 ,PTMUNIT2 ,REMARK ,   
                   MKID ,MKDT ,ENG_LR ,HAS_FCHK ,FCHK_VAL ,   
                   IS_SER ,IS_CANCEL ,CANCEL_REASON   
           FROM  AMM_CHKCHG  A   
           WHERE  1=1   
           AND   PROJID  LIKE '%AJT%'
)
ORDER  BY PROJID,TYPE,ITEM__



c# SQL: RNK 必需依目前的順序排序,不可重複
(Ex: ITEM: 9 , 9-1 的 RNK 會一樣(9),造成每頁32筆)

select dense_rank() over(order by PROJID,TYPE,
CAST((case when instr(ITEM,'-')>0 then substring(ITEM,1,instr(ITEM,'-')-1) else ITEM end) as INTEGER)) as RNK,"
                                                  + "   PROJID ,TYPE ,ITEM ,WUC ,CHKCHG_NM ,CHKCHG_TM ,"
                                                     + "   SITEM ,CHKCHG_TEXT ,PN ,IS_MULTI ,TMBASE1 ,"
                                                     + "   TMFEQ1 ,TMUNIT1 ,TMBASE2 ,TMFEQ2 ,TMUNIT2 ,"
                                                     + "   PTMVAL1 ,PTMUNIT1 ,PTMVAL2 ,PTMUNIT2 ,REMARK ,"
                                                     + "   MKID ,MKDT ,ENG_LR ,HAS_FCHK ,FCHK_VAL ,"
                                                     + "   IS_SER ,IS_CANCEL ,CANCEL_REASON "
                                      + "  FROM  AMM_CHKCHG  A "
                                      + "  WHERE  1=1  ";

V1060301 – 專案別 – 必填欄位 , 不可空白 -background: #FFDBE4;

 目的: V1060301 – 專案別 必填欄位 , 不可空白 -background:  #FFDBE4; 

處理說明: 1>底色: background:  #FFDBE4; 


1>*.js
     Ext.getCmp("s_PROJID").fieldStyle = "background:  #FFDBE4;";
 
--> 為什麼如下 statment  沒有反應,底色未顯示 粉紅色
       Ext.getCmp("s_PROJID").InuptEI.addCls("required") ;  
       Ext.getCmp("s_PROJID").addCls("required") ;  


2026年6月9日 星期二

V1060302A - DATE_ADD - 搜尋字串 StrExtract , 且只在 *.js 中搜尋

目的: 搜尋字串 StrExtract , 且只在 *.js 中搜尋
          --> 按 Ctrl+Shift+F 或 [編輯]à[尋找和取代] à[在檔案中搜尋]
          --> 設定檔案類型(*.js)

處理說明: 1>按 Ctrl+Shift+F  --> 檔案類型 *.js



1>*.js
function DATE_ADD(par_DT, par_UNIT,par_VAL) {
    var Tmp_YYYY, Tmp_MM, Tmp_DD;
    var Tmp_YYYY1, Tmp_MM1, Tmp_DD1;
    var Tmp_ADD_YY1, Tmp_ADD_MM1;
    var Tmp_DT = DatetoStr(par_DT, "Y/m/d");    
    Tmp_YYYY = Number(StrExtract1(Tmp_DT, 1, "/"));
    Tmp_MM = Number(StrExtract1(Tmp_DT, 2, "/"));
    Tmp_DD = Number(StrExtract1(Tmp_DT, 3, "/"));
    Tmp_YYYY1 = Tmp_YYYY; Tmp_MM1 = Tmp_MM; Tmp_DD1 = Tmp_DD;



V1060305A – 結案 *.js – StrExtract函式在myfunc.js 及 V_UTIL.js 均有宣告 - 函式名稱重複宣告

 目的: V1060305A – 結案 *.js – StrExtract函式在myfunc.js V_UTIL.js 均有宣告
                       *.js  會呼叫最後載入的 StrExtract 函式

處理說明:  1>將myfunc.js 的 StrExtract  改名為 StrExtract1 , 避免呼叫到  V_UTIL.js 的函式
                                            導致錯誤
                                     2>myfunc.js    StrExtract  傳回字串
                                     3>V_UTIL.js     StrExtract  傳回Array
                   2>一般畫面(V30702A.js)  開頭程式時,都會先載入  myfunc.js(最後載入)
                       --> 所以會呼叫到  myfunc.js 的  StrExtract 函式 ,  非  V_UTIL.js 函式
                       --> 所以不會 Error 
                   3>myfunc.js  的 DATE_ADD 函式,呼叫  StrExtract 函式
                       --> 則可能會呼叫到  V_UTIL.js 的 StrExtract 函式
                       --> 因為 myfunc.js 載入時, 
                             不可再 Ext.Loader.loadScript({    url: '../Scripts/myfunc.js'});


1>*.js
var Tmp_L_CHKCHG_DT = nulltoStr(par_rec.data['L_CHKCHG_DT']).toString();
var Tmp_L_CHKCHG_DT2 = DATE_ADD(Tmp_L_CHKCHG_DT, Tmp_TMUNIT, Tmp_TMFEQ);

function DATE_ADD(par_DT, par_UNIT,par_VAL) {
    var Tmp_YYYY, Tmp_MM, Tmp_DD;
    var Tmp_YYYY1, Tmp_MM1, Tmp_DD1;
    var Tmp_ADD_YY1, Tmp_ADD_MM1;
    var Tmp_DT = DatetoStr(par_DT, "Y/m/d");    
    Tmp_YYYY = Number(StrExtract1(Tmp_DT, 1, "/"));
    Tmp_MM = Number(StrExtract1(Tmp_DT, 2, "/"));
    Tmp_DD = Number(StrExtract1(Tmp_DT, 3, "/"));
    Tmp_YYYY1 = Tmp_YYYY; Tmp_MM1 = Tmp_MM; Tmp_DD1 = Tmp_DD;
    switch (par_UNIT) {
        case "A":  //年
        {
            Tmp_YYYY1 = Tmp_YYYY + parseInt(par_VAL);
            break;
        }
        case "B":  //月
            {
                Tmp_MM1 = Tmp_MM + parseInt(par_VAL);
                Tmp_ADD_YY1 = Math.trunc((Tmp_MM1) / 12);  //取商數
                Tmp_YYYY1 = Tmp_YYYY + Tmp_ADD_YY1;
                Tmp_MM1 = Math.trunc((Tmp_MM1) % 12);  //取餘數
                break;
            }
        case "C":  //天
            {
                //日期函式 Tmp_DT.setDate( )  ; 日期不對  
                //Tmp_DD1 = Tmp_DD1 + par_VAL;                
                var Tmp_DT = new Date(par_DT);
                var Tmp_DD = Tmp_DT.getDate();
                //console.log("2 Tmp_DT:", Tmp_DT);
                //Tmp_DD 及 par_VAL 必需先轉成數值,才可以累加
                Tmp_DT.setDate(parseInt(Tmp_DD) + parseInt(par_VAL));   
                //console.log("3 Tmp_DT.setDate():", Tmp_DT);
                Tmp_YYYY1 = Tmp_DT.getFullYear();   // 年份 (例如 2026)
                Tmp_MM1 = Tmp_DT.getMonth() + 1; // 月份 (0~11,要 +1 才是正常月份)
                Tmp_DD1 = Tmp_DT.getDate();        // 日期 (1~31)                
                break;
            }
    }// end of switch (par_UNIT)    
    return Tmp_YYYY1.toString().padStart(4, "0") + "/" + Tmp_MM1.toString().padStart(2, "0") + "/" + Tmp_DD1.toString().padStart(2, "0");
}  // end of  function DATE_ADD(par_DT, par_UNIT,par_VAL) {

2026年6月8日 星期一

V1060305A – 結案 – 流水號.前面補 ‘0’ – GET_NEXT_SERNO - String.PadLeft(5, '0')

 目的:V1060305A – 結案 流水號 前面補 ‘0’ – GET_NEXT_SERNO  

處理說明: 1> 流水號 5 碼 - 前面補 '0'
                        Tmp_NEXT_SERNO_Str = Tmp_NEXT_SERNO.ToString().PadLeft(5, '0'); 



1>*.cs
//取得  AMM_CHKCHG_ASN_BAK.MAX(BAK_SERNO)   最大值+1
public string GET_NEXT_SERNO(string par_PROJID,string par_TYPE,string par_ITEM,string par_ASN)
        {
            string Tmp_Sql;
            string Tmp_MAX_SERNO_STR;
            Int32 Tmp_MAX_SERNO, Tmp_NEXT_SERNO;
            string Tmp_NEXT_SERNO_Str;
            Tmp_Sql = " SELECT   MAX(CAST(BAK_SERNO as integer ))  "
                            + "  FROM    AMM_CHKCHG_ASN_BAK   "
                            +"   WHERE  PROJID="+myfunc.AA(par_PROJID)
                            +"   AND        TYPE=" + myfunc.AA(par_TYPE)
                            +"   AND        ITEM= " + myfunc.AA(par_ITEM)
                            + "   AND        ASN=" + myfunc.AA(par_ASN)
                            ;
            Tmp_MAX_SERNO_STR = myfunc.SqlValue(Tmp_Sql);
            Tmp_MAX_SERNO = myfunc.str2int(Tmp_MAX_SERNO_STR);
            if (myfunc.checkisnull(Tmp_MAX_SERNO.ToString()))
            {
                Tmp_NEXT_SERNO = 1;
            }
            else
            {
                Tmp_NEXT_SERNO = Tmp_MAX_SERNO + 1;
            };
            Tmp_NEXT_SERNO_Str = Tmp_NEXT_SERNO.ToString().PadLeft(5, '0'); ;
            return Tmp_NEXT_SERNO_Str;
        }  // end of  GET_NEXT_SERNO

V1060305A – 專案定更定檢結案 – 關閉子畫面 & 重新顯示 - fireHandler & fireEvent - getUrlStr - Update

 目的: V1060305A – 專案定更定檢結案 關閉子畫面 & 重新顯示  - fireHandler & fireEvent

處理說明: 1>關閉子畫面 & 重新顯示  - fireHandler & fireEvent
                      Ext.getCmp("btn_Show").fireHandler();
                      Ext.getCmp("sub_V1060305A_CancelBtn").fireEvent('click');


1>*.js
  var Tmp_url = '../api/V1060305AAPI/UPDATE_AMM_CHKCHG_ASN';        
  var Tmp_RtnStr = getUrlStr(Tmp_url, np, "更新 實體定更定檢件屆期檔(AMM_CHKCHG_ASN)");
        if (!checkRtnOK(Tmp_RtnStr)) {
            mywarnalert(Tmp_RtnStr);
            return;
        }
        else {
            mysuccessalert(Tmp_RtnStr);
            Ext.getCmp("btn_Show").fireHandler();
            Ext.getCmp("sub_V1060305A_CancelBtn").fireEvent('click');
        }


2>*.cs
[HttpPost]
        public dynamic UPDATE_AMM_CHKCHG_ASN()
        {
            //取得參數值
            var c = HttpContext.Current;
            NameValueCollection nvc = c.Request.Form;
            string Tmp_PROJID = nvc["PROJID"];
            string Tmp_TYPE = nvc["TYPE"];
            string Tmp_ITEM = nvc["ITEM"];
            string Tmp_ASN = nvc["ASN"];
            string Tmp_IS_MULTI = nvc["IS_MULTI"];
            //更新 AMM_CHKCHG_ASN 的欄位值
            string Tmp_UPD_FLD_STR1,Tmp_UPD_FLD_VAL1;
            string Tmp_UPD_FLD_STR2, Tmp_UPD_FLD_VAL2;
            string Tmp_TMVAL1, Tmp_TMVAL2;
            
            Tmp_UPD_FLD_STR1 = nvc["UPD_FLD_STR1"];
            Tmp_UPD_FLD_VAL1 = nvc["UPD_FLD_VAL1"];
            Tmp_UPD_FLD_STR2 = nvc["UPD_FLD_STR2"];
            Tmp_UPD_FLD_VAL2 = nvc["UPD_FLD_VAL2"];
            Tmp_TMVAL1= nvc["TMVAL1"];
            Tmp_TMVAL2 = nvc["TMVAL2"];

            string n = funId + "_UPDATE_AMM_CHKCHG_ASN";
            string Tmp_Sql="";
            string Tmp_RtnMsg;
            try
            {
                //備份每筆工單                
                int Tmp_cnt;                
                string Tmp_NEXT_SERNO;
                Tmp_NEXT_SERNO = GET_NEXT_SERNO(Tmp_PROJID, Tmp_TYPE, Tmp_ITEM, Tmp_ASN);

                string Tmp_SERNO, Tmp_IS_IN_FCHK, Tmp_INS_DT, Tmp_MK_DT, Tmp_STK_DT;
                string Tmp_L_CHKCHG_DT;
                string Tmp_L_FLYHR, Tmp_L_FLYAC, Tmp_L_ENGHR, Tmp_L_APUHR, Tmp_L_APUAC, Tmp_L_APUDT;
                string Tmp_L_FLYDT, Tmp_L_TURBOAC, Tmp_CHKCHG_STS, Tmp_REMARK;
                string Tmp_MKID, Tmp_MKDT, Tmp_CLSID, Tmp_CLSDT;
                


                DataTable dt = new DataTable();
                Tmp_Sql = " SELECT   PROJID,TYPE,ITEM,ASN, "
                                               + "  SERNO,IS_IN_FCHK,INS_DT,MK_DT,STK_DT, "
                                               + "  L_CHKCHG_DT,TMVAL1,TMVAL2,"
                                               + "  L_FLYHR,L_FLYAC,L_ENGHR,L_APUHR,L_APUAC,L_APUDT,"
                                               + "  L_FLYDT,L_TURBOAC,CHKCHG_STS,REMARK,"
                                               + "  MKID,MKDT,CLSID,CLSDT "
                                 + "  FROM   AMM_CHKCHG_ASN   "
                                 + "  WHERE  1 = 1  "                                 
                                + "   AND       PROJID = " + myfunc.AA(Tmp_PROJID)
                                + "   AND       TYPE = " + myfunc.AA(Tmp_TYPE)
                                + "   AND        ITEM = " + myfunc.AA(Tmp_ITEM)
                                + "    AND        ASN=" + myfunc.AA(Tmp_ASN);
                dt = myfunc.SqlOpen(dt, Tmp_Sql);
                foreach (DataRow dr in dt.Rows)
                {
                    Tmp_SERNO = dr["SERNO"].ToString();
                    Tmp_IS_IN_FCHK = dr["IS_IN_FCHK"].ToString();
                    Tmp_INS_DT = dr["INS_DT"].ToString();
                    Tmp_MK_DT = dr["MK_DT"].ToString();
                    Tmp_STK_DT = dr["STK_DT"].ToString();
                    Tmp_L_CHKCHG_DT = dr["L_CHKCHG_DT"].ToString();
                    Tmp_TMVAL1 = dr["TMVAL1"].ToString();
                    Tmp_TMVAL2 = dr["TMVAL2"].ToString();
                    //+ "  L_FLYHR,L_FLYAC,L_ENGHR,L_APUHR,L_APUAC,L_APUDT,"
                    Tmp_L_FLYHR = dr["L_FLYHR"].ToString();
                    Tmp_L_FLYAC = dr["L_FLYAC"].ToString();
                    Tmp_L_ENGHR = dr["L_ENGHR"].ToString();
                    Tmp_L_APUHR = dr["L_APUHR"].ToString();
                    Tmp_L_APUAC = dr["L_APUAC"].ToString();
                    Tmp_L_APUDT = dr["L_APUDT"].ToString();
                    //+"  L_FLYDT,L_TURBOAC,CHKCHG_STS,REMARK,"
                    Tmp_L_FLYDT = dr["L_FLYDT"].ToString();
                    Tmp_L_TURBOAC = dr["L_TURBOAC"].ToString();
                    Tmp_CHKCHG_STS = dr["CHKCHG_STS"].ToString();
                    Tmp_REMARK = dr["REMARK"].ToString();
                    //+ "  MKID,MKDT,CLSID,CLSDT "
                    Tmp_MKID = dr["MKID"].ToString();
                    Tmp_MKDT = dr["MKDT"].ToString();
                    Tmp_CLSID = dr["CLSID"].ToString();
                    Tmp_CLSDT = dr["CLSDT"].ToString();
                    //STEP1:  備份  AMM_CHKCHG_ASN 資料 至 AMM_CHKCHG_ASN_BAK
                    Tmp_Sql = " INSERT INTO   AMM_CHKCHG_ASN_BAK "
                               + "  ( PROJID,TYPE,ITEM,ASN,BAK_SERNO, "
                                  + "  SERNO,IS_IN_FCHK,INS_DT,MK_DT,STK_DT, "
                                  + "  L_CHKCHG_DT,TMVAL1,TMVAL2,"
                                  + "  L_FLYHR,L_FLYAC,L_ENGHR,L_APUHR,L_APUAC,L_APUDT,"
                                  + "  L_FLYDT,L_TURBOAC,CHKCHG_STS,REMARK,"
                                  + "  MKID,MKDT,CLSID,CLSDT "
                                  + " ) "
                               + " VALUES "
                               + "  (" + myfunc.AA(Tmp_PROJID) + "," + myfunc.AA(Tmp_TYPE) + "," + myfunc.AA(Tmp_ITEM) + "," + myfunc.AA(Tmp_ASN) + "," + myfunc.AA(Tmp_NEXT_SERNO) + ","
                                        + myfunc.AA(Tmp_SERNO) + "," + myfunc.AA(Tmp_IS_IN_FCHK) + "," + myfunc.AA(Tmp_INS_DT) + "," + myfunc.AA(Tmp_MK_DT) + "," + myfunc.AA(Tmp_STK_DT) + ","
                                        + myfunc.AA(Tmp_L_CHKCHG_DT) + "," + myfunc.AA(Tmp_TMVAL1) + "," + myfunc.AA(Tmp_TMVAL2) + ","
                                        + myfunc.AA(Tmp_L_FLYHR) + "," + myfunc.AA(Tmp_L_FLYAC) + "," + myfunc.AA(Tmp_L_ENGHR) + "," + myfunc.AA(Tmp_L_APUHR) + "," + myfunc.AA(Tmp_L_APUAC) + "," + myfunc.AA(Tmp_L_APUDT) + ","
                                        + myfunc.AA(Tmp_L_FLYDT) + "," + myfunc.AA(Tmp_L_TURBOAC) + "," + myfunc.AA(Tmp_CHKCHG_STS) + "," + myfunc.AA(Tmp_REMARK) + ","
                                        + myfunc.AA(Tmp_MKID) + "," + myfunc.AA(Tmp_MKDT) + "," + myfunc.AA(Tmp_CLSID) + "," + myfunc.AA(Tmp_CLSDT)
                                + ")";
                    myfunc.SqlExec(Tmp_Sql);
                }   // end of  foreach (DataRow dr in dt.Rows)

                //STEP2: 更新 AMM_CHKCHG_ASN 資枓.
                Tmp_Sql = "  UPDATE   AMM_CHKCHG_ASN "
                               + "   SET   " + Tmp_UPD_FLD_STR1 + "=" + myfunc.AA(Tmp_UPD_FLD_VAL1) + ","
                                                 + "TMVAL1=" + myfunc.AA(Tmp_TMVAL1) ;
                if (Tmp_IS_MULTI == "Y")
                {
                    Tmp_Sql = Tmp_Sql + ","
                                                     + Tmp_UPD_FLD_STR2 + "=" + myfunc.AA(Tmp_UPD_FLD_VAL2) + ","
                                                      + " TMVAL2=" + myfunc.AA(Tmp_TMVAL2);
                }
                Tmp_Sql=Tmp_Sql
                               + " WHERE   PROJID=" + myfunc.AA(Tmp_PROJID)
                               + "  AND       TYPE=" + myfunc.AA(Tmp_TYPE)
                               + "  AND        ITEM=" + myfunc.AA(Tmp_ITEM)
                               + "  AND       ASN=" + myfunc.AA(Tmp_ASN);
                myfunc.SqlExec(Tmp_Sql);
                Tmp_RtnMsg = "專案別(" + Tmp_PROJID + ")<br>"
                                        +"分類(" +Tmp_TYPE+")<br>"
                                        +"ITEM("+Tmp_ITEM+")<br>"
                                        +"機號("+Tmp_ASN+")<br>"
                                         +"結案更新完成 !!<br>";
            }  // end of try
            catch (Exception e)
            {
                Tmp_RtnMsg = myfunc.Get1ORA(e.Message);
                Tmp_RtnMsg = "錯誤: 結案更新失敗!!<br>"                                         
                                         + Tmp_RtnMsg
                                         +"SQL如下:<br>"
                                         +Tmp_Sql;
            }
            return Tmp_RtnMsg;            
        }  // end of UPDATE_AMM_CHKCHG_ASN