2025年12月30日 星期二

V20305O - 撥發單位查詢 -挑選欄位 SQL - SP_NSN@TLS_245 的處理 - @ 的不同資料庫 - 挑選欄位處理 - DBLINK

 目的: V20305O - 撥發單位查詢 -挑選件號  SQL -  SP_NSN@TLS_245

處理說明:1>設定 DBLINK = TLSEU
                     若為測試區,則會自動加 '5'             
                 2>當成一般 Table 處理  SP_NSN
                 3>其他 挑選欄位時,DBLINK會自動還原 成預設值(AMMEU5)
                 4>SQL 修改如下, - 設定 DBLINK 
                      string Tmp_Sql = "  SELECT  DISTINCT  PN   "
                                                + " FROM     SP_NSN  "
                                                + " WHERE   1=1 "
                                                + " ORDER  BY   PN  ";
                      string n = funId + "_sub_PN";
                      DBLINK = "TLSEU";
                      DataSet ds = setupPickDs(n, Tmp_Sql, new string[] { "SP_NSN" }); 



1>*.cs

    [HttpPost]
        public dynamic get_sub_PNPick(string PN = "", int isComplete = 0)
        {
            //列出所有申請單(PN)
string Tmp_Sql = "  SELECT  DISTINCT  PN   "
                        + " FROM     SP_NSN@TLS_245  "
                        + " WHERE   1=1 "
                        + " ORDER  BY   PN  ";
            DataSet ds = setupPickDs(n, Tmp_Sql, new string[] { "SP_NSN@TLS_245" });
            //--> 會出現錯誤訊息 , 修改如下藍字,即可 - DBLINK='TLSEU'
 
            string Tmp_Sql = "  SELECT  DISTINCT  PN   "
                         + " FROM     SP_NSN  "
                         + " WHERE   1=1 "
                         + " ORDER  BY   PN  ";
            string n = funId + "_sub_PN";
            DBLINK = "TLSEU";
            DataSet ds = setupPickDs(n, Tmp_Sql, new string[] { "SP_NSN" });
            if (PN != null && !PN.Equals(""))
            {
                if (isComplete == 1)矩形圖說文字: 若直接寫 SP_NSN@TLS_245
à 
會出現錯誤                {
                    ds = getPickDsbyCondi(n, "PN='" + PN + "'");
                }
                else
                {
                    ds = getPickDsbyCondi(n, "PN  LIKE '%" + PN + "%'");
                }
            }
            return ds;
        }  // end of  get_V20305P_PNPick

2025年12月16日 星期二

SAP系統HANA昇級的時程 -

一. 目的: SAP系統HANA昇級的時程  - 

二.時程:
     目前AIDC和 SAP系統沒有簽維護合約
     2026/02/28 : SAP Table 倒出至AIDC.ERPI資料庫 , Zxxxx的Table 直接開在 ERPI資料庫,
                          不再存在 SAP  Table
     2026/06/30:  AMM系統子功能調整至 ERPI 資料庫
     2030: SAP系統不再支援現行版本(Oracle)


三.修調備註:
      1> J欄標題改為[落差影響不可接受理由]
           K欄:[可接受,調整方式]
      2>Web子功能開啟時成畫面一直線  
           Chrome: 清榮
           Edge: 公司要求


2025年12月14日 星期日

V20201AA – 簡單子畫面- Radiobox - 互斥

 目的: V20201AA – 簡單子畫面- Radiobox

處理說明: 1> var cmp_sub_lbl_AA1 = get_cmp_lbl0("拆檢案專案日期選項:",200);
         var cmp_sub_rd1 = get_cmp_rd1("工廠實際接收日期+2個月", "sub_rd1", 150, true, "0 5 0 20"); 
         cmp_sub_rd1.checked = true;




1>*.js
function CALL_V20201AA() {
    console.log(" 1 inside - Call_V20201AA 加入排程: ");
    //panel11 - 拆檢案專案日期選項
    var cmp_sub_lbl_AA1 = get_cmp_lbl0("拆檢案專案日期選項:",200);
    var cmp_sub_rd1 = get_cmp_rd1("工廠實際接收日期+2個月", "sub_rd1", 150, true, "0 5 0 20");
    cmp_sub_rd1.checked = true;
    var cmp_sub_rd2_panel = get_cmp_panel1(200);
    var cmp_sub_rd2 = get_cmp_rd1("自行輸入", "sub_rd2", 50, false, "0 5 0 20");
    var cmp_sub_rd2_PROJDT = get_cmp_dt0('sub_rd2_PROJDT', 100);

    cmp_sub_rd2_panel.items.push(cmp_sub_rd2, cmp_sub_rd2_PROJDT);
    var cmp_sub_lbl_SPARE = get_cmp_lbl0(":");
       
    var sub_V20201AA_Flds = [
        {
            type: 'panel', bodyStyle: "background-color:transparent;", border: 5, padding: "1",
            layout: 'border',
            items: [
                {
                    xtype: 'panel', id: 'sub_panelAA1', region: 'center', 
                    height: 100,
                    //layout: { type: 'vbox', align: 'stretch' },
                    layout: { type: 'vbox',},
                    items: [
                        cmp_sub_lbl_AA1,
                        cmp_sub_rd1,
                        cmp_sub_rd2_panel,
                        cmp_sub_lbl_SPARE
                    ],
                },               
            ]
        }
    ];

2>互斥
Ext.getCmp("sub_rd1").on('change', function (me, newValue, oldValue, eOpts) {
        if (newValue == true) {
            Ext.getCmp("sub_rd2").setValue(false);
        }
    }
    );  // end of  cmp_sub_rd1.on("change"

    Ext.getCmp("sub_rd2").on('change', function (me, newValue, oldValue, eOpts) {
        if (newValue == true) {
            Ext.getCmp("sub_rd1").setValue(false);
        }
    }
    );  // end of  cmp_sub_rd1.on("change"



2025年12月11日 星期四

V20201A – 排程資料匯入-子畫面 – [全部選取][全部取消] - LoadMask - 顯示稍候訊息,Async不可設為false

 目的: V20201A – 排程資料匯入-子畫面 – [全部選取][全部取消] - LoadMask
處理說明: 1>LoadMask 顯示資料 --> Async 不可設為 false

                  2>子畫面.[全部選取][全部取消
                       2.1>[分頁] : par_paging=true;
                              Ext.getCmp('sub_Grid1').store.getProxy().url = '../../api/V20201AAPI/get_sub_data1?par_paging=true';
                         2.1>[不分頁] : par_paging=false;
                              Ext.getCmp('sub_Grid1').store.getProxy().url = '../../api/V20201AAPI/get_sub_data1?par_paging=false';



1>*.js
 var sub_V20201A_Btns = [
        { //2023/07/14 microed , 將 V120201 改成 雅嵐版本 - 分頁勾選
            xtype: 'button', text: '全部選取', id: 'sub_SelAllBtn', iconCls: 'icon-check',
            listeners: {
                click: function () {
                    var Tmp_Proc_Msg = "[全部選取]資料處理中..,請稍候!!";
                    var Proc_Msg = new Ext.LoadMask(Ext.getBody(),
                        { msg: Tmp_Proc_Msg, }
                    );
                    Proc_Msg.show();                    
                    Ext.getCmp('sub_Grid1').store.each(function (rec) {
                        rec.set('CHECK', true);
                    });
                    //將 所有資料.PK 加入 CHK_PK_OBJ.PK_LIST
                    Ext.Ajax.request({
                        url: '../api/V20201AAPI/get_sub_Data1?par_paging=false',
                        method: 'POST',
                        params: { all: 1 },
                        //async: false, //--> 會導致訊息 " 請稍候 ", 無法顯示訊息 & 等候訊息顯示/隱藏
                        failure: function (response, opts) {
                            Proc_Msg.hide();
                        },
                        success: function (response, opts) {
                            CHK_PK_OBJ1.PK_LIST = [];
                            var obj = Ext.decode(response.responseText);
                            obj.T1.forEach(function (item, i) {
                                var Tmp_PK = item['FMNO'] + "&" + item['AMMNO'];
                                CHK_PK_OBJ1.PK_LIST.push(Tmp_PK);
                                CHK_PK_OBJ1.ALL_LIST.push(item);
                            });
                            Proc_Msg.hide();
                        }
                    });
                } //end of click of 全部選取
            }
        }, //end of 全部選取
        {
            xtype: 'button', text: '全部取消', id: 'sub_unSelAllBtn', iconCls: 'icon-check',
            listeners: {
                click: function () {
                    //unSelAllBtn_click();                    
                    Ext.getCmp('sub_Grid1').store.each(function (rec) {
                        rec.set('CHECK', false);
                    });
                    CHK_PK_OBJ1.PK_LIST = [];
                    CHK_PK_OBJ1.ALL_LIST = [];
                }
            }
        }, //end of 全部取消

   

2025年12月8日 星期一

V20201A-排程資料匯入 1> checkbox:互斥 [v]已發工 [ ]未發工 2> 新增CaluField - dr - DataRow

 目的: V20201A-排程資料匯入 1> checkbox:互斥 [v]已發工  [ ]未發工    2> 新增CaluField

處理說明: 1> checkbox:互斥 
                        [v]已發工  [ ]未發工
   Ext.getCmp("sub_chk_AMMSTS1").on('change', function (me, newValue, oldValue, eOpts) {
        if (newValue==true) {
            Ext.getCmp("sub_chk_AMMSTS2").setValue(false);

        }
    }
    );  // end of  cmp_chk_AMMSTS.items[0].on("change"

                  2> CaluField : 發工人員姓名(SAPMAN_)
ds.Tables["T1"].Columns.Add("CREMPLYID_", typeof(object)); //管制人員姓名 
 int Tmp_cnt1 = ds.Tables["T1"].Rows.Count;
 for (int i = 0; i < Tmp_cnt1; i++)
                {
                    DataRow dr1 = ds.Tables["T1"].Rows[i];
                    Tmp_TYPEAF = dr1["TYPEAF"].ToString();

 


1>*.js

var cmp_sub_chk_AMMSTS1 = get_cmp_chk1('已發工', 'sub_chk_AMMSTS1', 80, "false", "0 10 0 50");
var cmp_sub_chk_AMMSTS2 = get_cmp_chk1('未發工', 'sub_chk_AMMSTS2', 80, "false", "0 10 0 50");

     // [V]已發工[]未未工 : 互斥 true / false 控制
    Ext.getCmp("sub_chk_AMMSTS1").on('change', function (me, newValue, oldValue, eOpts) {
        if (newValue==true) {
            Ext.getCmp("sub_chk_AMMSTS2").setValue(false);

        }
    }
    );  // end of  cmp_chk_AMMSTS.items[0].on("change"
    Ext.getCmp("sub_chk_AMMSTS2").on('change', function (me, newValue, oldValue, eOpts) {
        if (newValue==true) {
            Ext.getCmp("sub_chk_AMMSTS1").setValue(false);
        }
    }
    );  // end of  cmp_chk_AMMSTS.items[0].on("change"





2>*.cs
ds.Tables["T1"].Columns.Add("PROJDT_", typeof(object)); //約別 TYPEAF_
ds.Tables["T1"].Columns.Add("CREMPLYID_", typeof(object)); //管制人員姓名 ds.Tables["T1"].Columns.Add("SAPMAN_", typeof(object)); //發工人員姓名

  string Tmp_CREMPLYID_, Tmp_SAPMAN_;
                int Tmp_cnt1 = ds.Tables["T1"].Rows.Count;
                for (int i = 0; i < Tmp_cnt1; i++)
                {
                    DataRow dr1 = ds.Tables["T1"].Rows[i];
                    Tmp_TYPEAF = dr1["TYPEAF"].ToString();
                    Tmp_CREMPLYID = dr1["CREMPLYID"].ToString();
                    Tmp_SAPMAN = dr1["SAPMAN"].ToString();
                    Tmp_Sql = " SELECT  EMPLYNM "
                                   + "  FROM   HR_EMPLYM "
                                   + "  WHERE  EMPLYID=" + myfunc.AA(Tmp_CREMPLYID);
                    Tmp_CREMPLYID_ = myfunc.SqlValue(Tmp_Sql);
                    Tmp_Sql = " SELECT  EMPLYNM "
                                   + "  FROM   HR_EMPLYM "
                                   + "  WHERE  EMPLYID=" + myfunc.AA(Tmp_SAPMAN);
                    Tmp_SAPMAN_ = myfunc.SqlValue(Tmp_Sql);
                    //case  when B.TYPEAF=3 then B.CRNRAF  
                    //when B.TYPEAF = 4 then B.CMNRAF end 'PROJDT'
                    if (Tmp_TYPEAF=="3")
                    {
                        Tmp_PROJDT_= ds.Tables["T1"].Rows[i]["CRNRAF"].ToString();
                    }
                    if (Tmp_TYPEAF == "3")
                    {
                        Tmp_PROJDT_ = ds.Tables["T1"].Rows[i]["CMNRAF"].ToString();
                    }
                    dr1["PROJDT_"] = Tmp_PROJDT_;
                    dr1["CREMPLYID_"] = Tmp_CREMPLYID_;
                    dr1["SAPMAN_"] = Tmp_SAPMAN_;
                }

2025年12月1日 星期一

Google Blogger : 操作說明 - title:子畫面,Grid - sort:published

 目的: Google Blogger : 操作說明  - title:子畫面,Grid    - sort:published

處理說明: 1>title: 子畫面,Grid    - 在title 有子畫面 & Grid的文章
                  2>sort: published         - 依最近的文章先顯示