2024年5月23日 星期四

Array 新增值 *.js *.cs - - c# 判斷字串是否在長字串內

 目的: Array 新增值 - 判斷值是否在Array

處理說明:  1> *.js  , js  Array 才有 push method
                        var   PK_LIST: [], //儲存 PK欄位.欄位值
                        PK_LIST.push(Tmp_PK);

                        if  (PK_LIST.indexOf(Tmp_PK)== -1){}

                   2>*.cs , cs Arrary 無 puch method , 必需先增加Array長度, 再 Assign 欄位值
                         再 Assign  Tmp_Ary[i] = Tmp_Str
                          string[] Tmp_RPNOAF_Ary = new string[] {};      
                          Array.Resize(ref Tmp_RPNOAF_Ary, Tmp_RPNOAF_Ary.Length + 1);
                         Tmp_RPNOAF_Ary[Tmp_RPNOAF_Ary.Length - 1] = Tmp_RPNOAF;

                         if (Array.IndexOf(Tmp_RPNOAF_Ary,Tmp_RPNOAF) ==-1)  {}
                         if ("1;2;3;4;5;6;7;8;".IndexOf(Tmp_IRESAK) == -1)  {}
                     
                  3>c# 字串判斷是否存在 , 若 Tmp_IRESAK 為"", 則傳回 0 , 非 -1
                        if ("1;2;3;4;5;6;7;8;".IndexOf(Tmp_IRESAK) == -1)
                            {
                                Tmp_RtnMsg1 = Tmp_RtnMsg1 + "[檢測結果代碼]欄位值不符!!"
                                                          +"(" +Tmp_IRESAK + ")<br>";
                            }
                        --> 所以必需先判斷 Tmp_IRESAK 是否為空字串
                               if (myfunc.checkisnull(Tmp_IRESAK.Trim()))
                                {
                                  Tmp_RtnMsg1 = Tmp_RtnMsg1 + "[檢測結果代碼]欄位值不可空白!!<br>";
                                  }  


1>*.cs  string.IndexOf   &  Array.IndexOf(Tmp_Ary,Tmp_Str) 
if (Array.IndexOf(Tmp_RPNOAF_Ary,Tmp_RPNOAF) ==-1)  {}
if ("1;2;3;4;5;6;7;8;".IndexOf(Tmp_IRESAK) ==-1)  {}


 if (myfunc.checkisnull(Tmp_IRESAK.Trim()))
{
     Tmp_RtnMsg1 = Tmp_RtnMsg1 + "[檢測結果代碼]欄位值不可空白!!<br>";
}
else
{
  if ("1;2;3;4;5;6;7;8;".IndexOf(Tmp_IRESAK) == -1)
  {
  Tmp_RtnMsg1 = Tmp_RtnMsg1 + "[檢測結果代碼]欄位值不符!!(" + Tmp_IRESAK + ")<br>";
   }
}                        

2024年5月22日 星期三

V20304B SPIRE.xls 設定 Excel 背景顏色 & 本文顏色 & 欄高/欄寬 - CELL

 目的:V20304B SPIRE.xls  設定 Excel 背景顏色 &  本文顏色

處理說明: 1> 設定背景顏色 Range ["A1:E1"] and ["A2:A10"]                
                       worksheet.Range["A1:E1"].Style.Color = Color.MediumSeaGreen;         
                       worksheet.Range["A2:A10"].Style.Color = Color.LightYellow; 

                  2>設定背景顏色  cell E6 
                      using System.Drawing;
                       worksheet.Range["E6"].Style.Color = Color.Red;

                  3>設定字體顏色          
                     worksheet.Range["A2:G3"].Style.Font.Color = Color.Red;         
                   
                   sheet.Range["A1"].Text = "我是A1单元格";
                   sheet.Range[1, 2].Text = "我是第1行的第2个单元格";
                   sheet.Range[“G11”].RowHeight = 30;          //欄高
                   sheet.Range[“G11”].ColumnWidth = 40;      //欄寬
                   sheet.Range["A5:B6"].Merge();                    /欄位合併
                   worksheet.Range["A2:G3"].Style.Font.Color = Color.Red;    //字體顏色









2024年5月16日 星期四

V20302B – 調整版面 panel 的高度大小 - splitter - 版面 - 挑選人員

 目的: V20302B – 系統件除帳 工號(25284247) – 調整版面 panel 的高度大小

處理說明:  1> {  xtype: 'splitter',  width: 2,    },



1>*.js

//[顯示Email]  - 子畫面欄位
    var sub1_ShowEmail_Flds = [
        {
            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: 1, items: [
                        {
                            xtype: "textfield", id: "sub1_Subject", name: "sub1_Subject",  padding: "0 4 0 0",
                            //value: "AJT",
                        },
                    ]
                },  //end of 主旨
                {
                    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'
                    },
                    //autoScroll: true,
                    items: [
                        { // TreeView
                            xtype: "panel", flex: 4, layout: { type: 'vbox', align: 'stretch' },                            
                            autoScroll: true, items: [treepanel1]
                        },  //TreeView
                        {  //正本&副本.[左移/右移]按鈕
                            xtype: "panel", flex: 2, layout: { type: 'vbox', align: 'stretch' }, border: false,
                            //bodyStyle: 'background:blue; ',
                            items: [
                                {  //  正本.左右移的 Button
                                    xtype: 'panel', id: 'panel1_btns1', layout: { type: 'vbox', align: 'stretch' }, flex: 1, border: false,
                                    //bodyStyle: 'background:yellow; ',                                    
                                    items: [                                        
                                        {//space panel
                                            xtype: 'panel',    flex: 1,                                            
                                        },// end of 
                                        {//正本.1往右移
                                            xtype: 'button',
                                            id: 'btn1_move11',
                                            text: '往右',
                                            iconCls: 'icon-right',
                                            flex: 1,
                                            handler: function () {
                                                //console.log("Ext.getCmp('sub1_treepanel'):", Ext.getCmp('sub1_treepanel'));
                                                //var node = treepanel1.getSelectionModel().getSelectedNode();
                                                var nodes = treepanel1.getSelectionModel().getSelection();
                                                var node = nodes[0];
                                                if (checkisnull(node)) {
                                                    var Tmp_Str = "請先選擇要Email的人員!!";
                                                    mywarnalert(Tmp_Str);
                                                    return;
                                                }
                                                    
                                                //console.log("node:", node);
                                                //console.log("node.raw:", node.raw);
                                                var Tmp_Emplyid, Tmp_EmplyNM, Tmp_Notes_EMAIL;
                                                if (node.raw.leaf) {
                                                    Tmp_Emplyid = node.raw.id;
                                                    Tmp_EmplyNM = StrExtract(node.raw.text, 2, ":");
                                                    //console.log("姓名:", Tmp_EmplyNM);
                                                    var Tmp_Email = getEmp_Email(Tmp_Emplyid);
                                                    //console.log("Email:", Tmp_Email);
                                                    var Tmp_rec = { EMPLYNM: Tmp_EmplyNM, NOTES_MAIL: Tmp_Email };
                                                    var find = Ext.getCmp("sub1_Grid1").store.find('EMPLYNM', Tmp_EmplyNM);
                                                    if (find != -1) {
                                                        // 已存在,則不再加入
                                                        Tmp_Str = "人員(" + Tmp_EmplyNM + ")已存在,不可再加入";
                                                        mywarnalert(Tmp_Str);
                                                        return;
                                                    } else {
                                                        Ext.getCmp("sub1_Grid1").store.add(Tmp_rec);
                                                    };
                                                }
                                                else {
                                                    var Tmp_Str = "請先選擇要Email的人員!!";
                                                    mywarnalert(Tmp_Str);
                                                }
                                            }
                                        },// end of 往右移                                        
                                        {//正本.1往左
                                            xtype: 'button',
                                            id: 'btn1_move12',
                                            text: '往左',
                                            iconCls: 'icon-left',
                                            flex: 1,
                                            handler: function () {
                                                var nodes = Ext.getCmp("sub1_Grid1").getSelectionModel().getSelection();                                               
                                                if (nodes.length == 0) {                                                    
                                                        mywarnalert("請先選擇要左移的資料");                                                        
                                                    return;
                                                }
                                                var node = nodes[0];                                                
                                                Ext.getCmp("sub1_Grid1").store.remove(node);
                                            }
                                        },//往左移
                                        {//space panel
                                            xtype: 'panel',flex: 1,
                                        },// end of 
                                    ]
                                }, //panel_btn1
                                {  //  副本.左右移的 Button
                                    xtype: 'panel', id: 'panel1_btns2', layout: { type: 'vbox', align: 'stretch' }, flex: 1, border: false,                                    
                                    //bodyStyle: 'background:red; ',
                                    items: [
                                    {//space panel                                    
                                    xtype: 'panel', flex: 1,                                },// end of 
                                        {//副本.2往右
                                            xtype: 'button',
                                            id: 'btn1_move21',
                                            text: '往右',
                                            iconCls: 'icon-right',
                                            flex: 1,
                                            handler: function () {
                                                //console.log("Ext.getCmp('sub1_treepanel'):", Ext.getCmp('sub1_treepanel'));
                                                //var node = treepanel1.getSelectionModel().getSelectedNode();
                                                var nodes = treepanel1.getSelectionModel().getSelection();
                                                var node = nodes[0];
                                                var Tmp_Str;
                                                if (checkisnull(node)) {
                                                    Tmp_Str = "請先選擇要Email的人員!!";
                                                    mywarnalert(Tmp_Str);
                                                    return;
                                                }
                                                //console.log("node:", node);
                                                //console.log("node.raw:", node.raw);
                                                var Tmp_Emplyid, Tmp_EmplyNM, Tmp_Notes_EMAIL;
                                                if (node.raw.leaf) {
                                                    Tmp_Emplyid = node.raw.id;
                                                    Tmp_EmplyNM = StrExtract(node.raw.text, 2, ":");
                                                    //console.log("姓名:", Tmp_EmplyNM);
                                                    var Tmp_Email = getEmp_Email(Tmp_Emplyid);
                                                    //console.log("Email:", Tmp_Email);
                                                    var Tmp_rec = { EMPLYNM: Tmp_EmplyNM, NOTES_MAIL: Tmp_Email };
                                                    var find = Ext.getCmp("sub1_Grid2").store.find('EMPLYNM', Tmp_EmplyNM);
                                                    if (find != -1) {
                                                        // 已存在,則不再加入
                                                        Tmp_Str = "人員(" + Tmp_EmplyNM + ")已存在,不可再加入";
                                                        mywarnalert(Tmp_Str);
                                                        return;
                                                    } else {
                                                        Ext.getCmp("sub1_Grid2").store.add(Tmp_rec);
                                                    };
                                                    
                                                }
                                                else {
                                                    var Tmp_Str = "請先選擇要Email的人員!!";
                                                    mywarnalert(Tmp_Str);
                                                }
                                            }
                                        },// end of 往右移
                                        //{ xtype: 'panel', flex: 1, },// end of  虛 space
                                        {//副本.2往左
                                            xtype: 'button',
                                            id: 'btn1_move22',
                                            text: '往左',
                                            iconCls: 'icon-left',
                                            flex: 1,
                                            handler: function () {
                                                var nodes = Ext.getCmp("sub1_Grid2").getSelectionModel().getSelection();
                                                if (nodes.length == 0) {
                                                    mywarnalert("請先選擇要左移的資料");
                                                    return;
                                                }
                                                var node = nodes[0];
                                                Ext.getCmp("sub1_Grid2").store.remove(node);                                            
                                            }
                                        },//往左移
                                        {//space panel
                                            xtype: 'panel', flex: 1,
                                        },// end of 
                                    ]
                                }, //panel_btn2                                                        
                            ]
                        },  //按鈕
                        {  //正本,副本人員
                            xtype: "panel", flex: 4,                            
                            layout: { type: 'vbox', align: 'stretch' },                            
                            items: [
                                {
                                    xtype: "panel", flex: 1, title: '正本人員', layout: 'fit',                                  
                                    bodyStyle: 'background:yellow; ', items: [sub1_Grid1],
                                },
                                {
                                    xtype: "panel", flex: 1, title: '副本人員', layout: 'fit',                                                                       
                                    bodyStyle: 'background:blue; ', items: [sub1_Grid2],
                                },
                            ],                            
                        },  //正本副本
                    ]
                }, // end of TreeView                
            ]  //end of sub_myForm
        }]  //end of sub_ShowPN_Flds


2024年5月7日 星期二

V80204A – [工作中心報工匯出]鈕 - 匯出Excle欄位值-不套表 - [數值]非[文字] - NumberFormat -數值欄位 -不套表 - 直接匯出標題

 目的: V80204A – [工作中心報工匯出] - 匯出Excle欄位值 - [數值][文字]

處理說明: 1> c#
                       sheet1.Range[myfunc.GetExcelPos(8, i + 1)].Text = dt.Rows[i]["SROTP"].ToString();
                        //設定[QTY] : 數值欄位
                        sheet1.Range[myfunc.GetExcelPos(9, i + 1)].Value = dt.Rows[i]["QTY"].ToString();
                        sheet1.Range[myfunc.GetExcelPos(9, i + 1)].NumberFormat = "#,##0.00";





1> c#
  [HttpPost]
        public void WC_ALS_OutFile()
        {
            var c = HttpContext.Current;
            NameValueCollection nvc = c.Request.Form;

           sheet1.Range[myfunc.GetExcelPos(6, i + 1)].Text = dt.Rows[i]["MKDESCPT"].ToString();
           sheet1.Range[myfunc.GetExcelPos(7, i + 1)].Text = dt.Rows[i]["WBS"].ToString();
           sheet1.Range[myfunc.GetExcelPos(8, i + 1)].Text = dt.Rows[i]["SROTP"].ToString();
            //設定[QTY] : 數值欄位
            sheet1.Range[myfunc.GetExcelPos(9, i + 1)].Value = dt.Rows[i]["QTY"].ToString();
            sheet1.Range[myfunc.GetExcelPos(9, i + 1)].NumberFormat = "#,##0.00";
                    //range.Value = "1175575.40";

         //sheet1.Range[myfunc.GetExcelPos(16, i + 1)].Text = dt.Rows[i]["ALS_HR_"].ToString();
           sheet1.Range[myfunc.GetExcelPos(16, i + 1)].Value = dt.Rows[i]["ALS_HR_"].ToString();
            sheet1.Range[myfunc.GetExcelPos(16, i + 1)].NumberFormat = "#,##0.00";

2024年5月2日 星期四

javaScript 變數範圍 - var -let

 目的: javaScript 變數範圍

 處理說明:  1> var 

 ECMAScript 2015 以前的 JavaScript 版本裡,並沒有定義區塊描述 (block statement) 的變數有效範圍。更精確的說,之前版本所定義的變數,其特性相當於全域變數
 不只在宣告的區塊或函數裡面有效 ,
其變數值還會超出宣告區塊而影響到全部的描述碼。

                2>let
當使用了 let 這個區域變數宣告方式變數 y 的有效範圍只有在 if { } 的範圍內,因此輸出結果是 ReferenceError。



Ex1: var
        if (true) 
              { var x = 5; } 
        console.log(x);        // x is 5

Ex:2: let
         if (true) 
            { let y = 5; } 
           console.log(y); // ReferenceError: y is not defined (y沒有被定義)

Ex3:
var myvar = "my value"; 
(function () { 
       console.log(myvar); // undefined , 不會產生錯誤訊息,但是欄位值未定義
       var myvar = "local value"; 
})();

Ex4: ※區域變數會在執行之後自動銷毀,並同步釋放記憶
function fName(aName) {
var number = aName * 10; //區域變數
console.log(number); //驗證變數
}

fName(10); //帶入參數,執行函式
console.log(number) //--> 會Error

V20304 – 顯示資料後,自動勾選第1筆資料 - onload - Selection

目的: V20304 – 顯示資料後,自動勾選第1筆資料

處理說明: 1> onload
                              Ext.getCmp('grid_M').store.on("load", function (me, records, successful, eOpts) {
                                if (successful) {
                                    //console.log("Ext.getCmp('sub_Grid').store", Ext.getCmp('sub_Grid').store);
                                    //console.log("Ext.getCmp('sub_Grid').store.data", Ext.getCmp('sub_Grid').store.data);
                                    var Tmp_rec;
                                    if (Ext.getCmp('grid_M').store.data.length > 0) {
                                        Tmp_rec = records[0];
                                        //Tmp_rec = Ext.getCmp('grid_M').store.getAt(0);
                                        Tmp_rec.set('CHECK', true);

                                        //Ext.getCmp('grid_M').getSelectionModel().select(0);                
                                    }  // enf of if
                                }   // end of if success
                            });  // end of on load





2024年5月1日 星期三

V20304A- 取得 store欄位值, 取得字元(.) 發生的次數

 目的: V20304A- 取得 store 的欄位值, 取得字元(.) 發生的次數

處理說明: 1>取得 store 的欄位值
                      -->方法1: ds1.data.item[i].data["ITMNO"]
                      Tmp_ITMNO = nulltoStr(ds1.data.items[i].data["ITMNO"]);

                      --> 方法2:   rec=ds1.getAt(i)             => =ds1.data.items[i]
                                          rec.data["ITMNO"] ;
                        for (var i=0;i<ds1.getTotalCount(); i++){
                          var rec = ds1.getAt(i);
                          rec.data["NOTES_MAIL"].toString();
                         }

                                    2>取得字元(.) 發生的次數
                                          Tmp_ITMNO_dot_cnt = Tmp_ITMNO.split(".").length - 1;



1>*.js
var CALL_TALHR_CAL = function () {
        myalert(" click 工時合計");
        //1>判斷主步序(1.xx) 的工時>0 時, 不可以有明細步序(1.xx.xx)
        var mysubstore = Ext.getCmp('sub_Grid').store;
        var Tmp_cnt = mysubstore.data.length;
        console.log("mysubstore.count : ", Tmp_cnt);
        console.log("mysubstore.data.items : ", mysubstore.data.items);
        var i;
        var Tmp_Str;
        var Tmp_ITMNO,Tmp_RQHR,Tmp_ITMNO_NEXT;
        var Tmp_ITMNO_dot_cnt, Tmp_ITMNO_NEXT_dot_cnt;        
        for (i = 0; i < Tmp_cnt; i++) {
            Tmp_ITMNO = nulltoStr(mysubstore.data.items[i].data["ITMNO"]);
            console.log("i: ", i);
            console.log("Tmp_ITMNO: ", Tmp_ITMNO);
            Tmp_ITMNO_dot_cnt = Tmp_ITMNO.split(".").length - 1;
            console.log("Tmp_ITMNO_dot_cnt: ", Tmp_ITMNO_dot_cnt);
            //1>>若為主步序(1.xx)且需求工時>0
            if (Tmp_ITMNO_dot_cnt == 1) {  //為主步序
                Tmp_RQHR = Number(nulltoStr(mysubstore.data.items[i].data["RQHR"]));
                console.log("Tmp_RQHR : ", Tmp_RQHR);
                if (Tmp_RQHR > 0) {   //為主步序,且[需求時數]>0, 判斷是否有明細步序
                    Tmp_ITMNO_NEXT = nulltoStr(mysubstore.data.items[i + 1].data["ITMNO"]);
                    console.log("Tmp_ITMNO_NEXT : ", Tmp_ITMNO_NEXT);
                    Tmp_ITMNO_NEXT_dot_cnt = Tmp_ITMNO_NEXT.split(".").length - 1;
                    console.log("Tmp_ITMNO_NEXT_dot_cnt: ", Tmp_ITMNO_NEXT_dot_cnt);
                    if (Tmp_ITMNO_NEXT_dot_cnt >= 2) { //有明細步序
                    Tmp_Str = "項次(" + Tmp_ITMNO + ")的需求工時(" + Tmp_RQHR.toString() + ")<br>"
                                        +"因本項次有子步序(" + Tmp_ITMNO + ".xx)<br> "
                                       + "則本項次(主步序)的需求工時必需為 0 或 空白 <br>"
                                       + "敬請檢核 !!<br>";
                        mywarnalert(Tmp_Str);
                    }
                }
            }
            }        // end of for (i=0)        
    };  // end of CALL_TALHR_CAL    
    Ext.getCmp("sub_TALHR_CAL").handler = CALL_TALHR_CAL;