2026年6月25日 星期四

V1060301 – 編輯-存檔-允許編輯PK欄位 – PROJID+TYPE+ITEM - 修改PK

 目的: V1060301 – 編輯-存檔-允許編輯PK欄位 – PROJID+TYPE+ITEM
            - 若PK Table(AMM_CHKCHG)  已有 子 Table(AMM_CHKCHG_ASN)
               --> 修改 PK ,則會出現錯誤訊息,不允許修改            

處理說明: 1>*.js  - beforeEdit : 將 PK的舊欄位值傳至後端
                      Ext.getCmp('btn_save').beforeEdit = function () {
                        //isCheck = S_DB.doSave('Update');
                        //doSave: function (actType_S, apiName, pkFunctionName, oKeyArr)
                        //oDKeyArr:要修改的PK,在JS樣板會自動加上o_並起一併傳到C#(EX:'SCITM')
                        isCheck = S_DB.doSave('Update', undefined, undefined, ['ITEM']);
                        return isCheck;
                       };
                   2>*.cs - Update
 [HttpPost]
        public void Update()
        {
            var c = System.Web.HttpContext.Current;
            NameValueCollection nvc = c.Request.Form;
            //string[] arrCondition = getPK();
            //excuteUpdate(nvc, DBTable, arrCondition);
            string[] arrCondition = new string[] { "PROJID","TYPE" };  //不含會異動的PK
            NameValueCollection i_nvc = new NameValueCollection();  //不含異動的o_PK
            string[] arr_key = nvc.AllKeys;

            Dictionary<string, dynamic> oldParamDict = new Dictionary<string, dynamic>();
            for (int i = 0; i < arr_key.Length; i++)
            {
                if ((arr_key[i].IndexOf("o_") >= 0))
                {
                    oldParamDict.Add(arr_key[i], nvc[arr_key[i]]);
                }
                else
                {
                    i_nvc[arr_key[i]] = nvc[arr_key[i]];
                }
            }
            excuteUpdate(i_nvc, "AMM_CHKCHG", arrCondition, null, true, oldParamDict);
        }


1>*.js  - 將 PK 的舊值傳至後端
Ext.getCmp('btn_save').beforeEdit = function () {
        //isCheck = S_DB.doSave('Update');
        //doSave: function (actType_S, apiName, pkFunctionName, oKeyArr)
        //oDKeyArr:要修改的PK,在JS樣板會自動加上o_並起一併傳到C#(EX:'SCITM')
        isCheck = S_DB.doSave('Update', undefined, undefined, ['PROJID','TYPE','ITEM']);
        return isCheck;
    };

2>*.cs- 透過 executeUpdate 參數- 組合出 SQL
     UPDATE  AMM_CHKCHG
     SET          PROJID=:PRJID
                      TYPE=:TYPE
                      ITEM=:ITEM 
                      CHKCHG_TM=:CHKCHG_TM
     WHERE   PROJID=:o_PROJID
     AND         TYPE=:o_TYPE
     AND          ITEM=:o_ITEM

-->
[HttpPost]
        public void Update()
        {
            var c = System.Web.HttpContext.Current;
            NameValueCollection nvc = c.Request.Form;
            //string[] arrCondition = getPK();
            //excuteUpdate(nvc, DBTable, arrCondition);
            //string[] arrCondition = new string[] { "PROJID","TYPE" };  //會異動到的key值(ITEM)不要寫進去
            string[] arrCondition = new string[] {};  //會動到的key值不要寫進去
            NameValueCollection i_nvc = new NameValueCollection();
            string[] arr_key = nvc.AllKeys;

            Dictionary<string, dynamic> oldParamDict = new Dictionary<string, dynamic>();
            for (int i = 0; i < arr_key.Length; i++)
            {
                if ((arr_key[i].IndexOf("o_") >= 0))
                {
                    oldParamDict.Add(arr_key[i], nvc[arr_key[i]]);
                }
                else
                {
                    i_nvc[arr_key[i]] = nvc[arr_key[i]];
                }
            }
//public string excuteUpdate(NameValueCollection nvc, string tableName, string[] arrCondition, Dictionary<string, dynamic> dict = null, bool isExcute = true, Dictionary<string, dynamic> oldParamDict = null, OracleConnection i_conn = null)
            excuteUpdate(i_nvc, "AMM_CHKCHG", arrCondition, null, true, oldParamDict);
        }



沒有留言:

張貼留言