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