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,..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>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:

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;