Ejemplo n.º 1
0
        public DataTable QuerySwitch(QueryType QT, ArrayList ParameterList)
        {
            #region
            VDS_CRM_ORDER_TMP_DBO CRM_DBO = new VDS_CRM_ORDER_TMP_DBO(ref USEDB);

            DataTable Dt;

            try
            {
                switch (QT)
                {
                    case QueryType.GetCRMOrder_TmpSchema:
                        Dt = CRM_DBO.GetORDER_TmpSchema(ParameterList);
                        break;
                    default:
                        Dt = new DataTable();
                        break;
                }

                return Dt;
            }
            catch (Exception ex)
            {
                throw GetNewException(ex);
            }
            #endregion
        }
Ejemplo n.º 2
0
 public DataTable CRM04A_QUERRY_TEMP_TABLE(ArrayList ParameterList)
 {
     #region
     try
     {
         VDS_CRM_ORDER_TMP_DBO CRM_DBO = new VDS_CRM_ORDER_TMP_DBO(ref USEDB);
         return CRM_DBO.DO_CRM04A_QUERRY_TEMP_TABLE(ParameterList);
     }
     catch (Exception ex)
     {
         throw GetNewException(ex);
     }
     #endregion
 }
Ejemplo n.º 3
0
        /// <summary>
        /// 刪除該使用者存在於 CRM_ORDER_TMP 的舊資料,並將 EXCEL 中新資料匯入 CRM_ORDER_TMP
        /// </summary>
        /// <param name="ParameterList">刪除變數</param>
        /// <param name="RootDBT">是否有主交易,無主交易輸入null</param>
        /// <returns>回傳影響筆數</returns>
        public void DELETE_AND_INSERT_TEMP_TABLE(ArrayList ParameterList, DbTransaction RootDBT, DataTable dt_CRM_IMPORT_TMP)
        {
            #region
            bool IsRootTranscation = false;

            try
            {
                VDS_CRM_ORDER_TMP_DBO CRM_DBO = new VDS_CRM_ORDER_TMP_DBO(ref USEDB);

                //判斷是否有傳入Root Transcation 
                IsRootTranscation = (RootDBT == null) ? true : false;

                #region 啟動交易或指定RootTranscation

                if (IsRootTranscation)
                {
                    //獨立呼叫啟動Transcation
                    Conn = USEDB.CreateConnection();
                    Conn.Open();
                    DBT = Conn.BeginTransaction();
                }
                else
                {
                    DBT = RootDBT;
                }

                #endregion

                //改由檢查前執行
                //CRM_DBO.doDelete_ORDER_TMP(ParameterList, DBT);

                foreach (DataRow dRow in dt_CRM_IMPORT_TMP.Rows)
                {
                    CRM_DBO.doAdd_ORDER_TMP(dRow, DBT);
                }

                #region 交易成功

                if (IsRootTranscation)
                {
                    //獨立呼叫Transcation成立
                    DBT.Commit();
                }

                #endregion

            }
            catch (Exception ex)
            {
                #region 交易失敗

                if (IsRootTranscation)
                {
                    //獨立呼叫Transcation失敗
                    DBT.Rollback();
                }

                #endregion

                throw GetNewException(ex);
            }
            finally
            {
                #region 判斷是否關閉交易連線

                if (IsRootTranscation)
                {
                    //獨立呼叫Transcation,關閉連線
                    if (Conn.State == ConnectionState.Connecting)
                    {
                        Conn.Close();
                    }
                }

                #endregion
            }
            #endregion
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 將資料由 TEMP TABLE 新增至正式 TABLE
        /// </summary>
        /// <param name="ParameterList">變數</param>
        /// <param name="RootDBT">是否有主交易,無主交易輸入null</param>
        /// <returns>回傳結果</returns>
        public Int32 TMP_To_ORDER(ArrayList ParameterList, DbTransaction RootDBT, out string strSerialBatchNo, out DataTable dtBatchImportResult)
        {
            #region
            bool IsRootTranscation = false;
            Int32 iResult = 0;
            try
            {
                VDS_CRM_ORDER_TMP_DBO CRM_DBO = new VDS_CRM_ORDER_TMP_DBO(ref USEDB);

                //判斷是否有傳入Root Transcation 
                IsRootTranscation = (RootDBT == null) ? true : false;

                #region 啟動交易或指定RootTranscation

                if (IsRootTranscation)
                {
                    //獨立呼叫啟動Transcation
                    Conn = USEDB.CreateConnection();
                    Conn.Open();
                    DBT = Conn.BeginTransaction();
                }
                else
                {
                    DBT = RootDBT;
                }

                #endregion

                iResult = CRM_DBO.doTMP_To_ORDER(ParameterList, DBT, out strSerialBatchNo);

                #region 交易成功

                if (IsRootTranscation)
                {
                    //獨立呼叫Transcation成立
                    DBT.Commit();
                }

                #endregion


                #region 取得匯入清單

                if (strSerialBatchNo.Trim() != "")
                {
                    dtBatchImportResult = CRM_DBO.doQueryTransResult(ParameterList);
                }
                else
                {
                    dtBatchImportResult = null;
                }

                #endregion

                return iResult;

            }
            catch (Exception ex)
            {
                #region 交易失敗

                if (IsRootTranscation)
                {
                    //獨立呼叫Transcation失敗
                    DBT.Rollback();
                }

                #endregion

                throw GetNewException(ex);
            }
            finally
            {
                #region 判斷是否關閉交易連線

                if (IsRootTranscation)
                {
                    //獨立呼叫Transcation,關閉連線
                    if (Conn.State == ConnectionState.Connecting)
                    {
                        Conn.Close();
                    }
                }

                #endregion

            }
            #endregion
        }
Ejemplo n.º 5
0
        /// <summary>
        /// 檢核暫存檔資料邏輯正確性
        /// </summary>
        /// <param name="s_LoginUser"></param>
        /// <param name="V_SESSION_ID"></param>
        /// <param name="iOKConut"></param>
        /// <param name="iErrConut"></param>
        /// <returns></returns>
        public bool Check_TmpData(string s_LoginUser, string V_SESSION_ID, out Int32 iTotalCount, out Int32 iOKCount, out Int32 iErrCount)
        {
            #region
            bool bResult = false;
            iOKCount = 0;
            iErrCount = 0;

            VDS_CRM_ORDER_TMP_DBO CRM_DBO = new VDS_CRM_ORDER_TMP_DBO(ref USEDB);

            ArrayList ParameterList = new ArrayList();
            ParameterList.Add(s_LoginUser);
            ParameterList.Add(V_SESSION_ID);
            CRM_DBO.doCheck_TmpData(ParameterList, out iTotalCount, out iOKCount, out iErrCount);

            if (iErrCount != 0)
                bResult = false;
            else
                bResult = true;

            return bResult;
            #endregion
        }
Ejemplo n.º 6
0
        /// <summary>
        /// FileToTmp 效能提升版
        /// </summary>
        /// <param name="ds_Excel"></param>
        /// <param name="d_CreateDate"></param>
        /// <param name="s_LoginUser"></param>
        /// <param name="s_AP_FileName"></param>
        /// <param name="V_SESSION_ID"></param>
        /// <returns></returns>
        public ArrayList FileToTmp2(DataSet ds_Excel, DateTime d_CreateDate, string s_LoginUser, string s_AP_FileName, string V_SESSION_ID)
        {
            #region
            int i_newTable_Count = 0;
            ArrayList arl_Return = new ArrayList();
            ArrayList arr_CheckData_Table = new ArrayList();
            ArrayList arr_CheckData = new ArrayList();
            int i_FileToTemp_Total_count = 0;
            int i_FileToTemp_Right_count = 0;
            int i_FileToTemp_Wrong_count = 0;
            bool b_Check_Logic = true;
            ArrayList paramTemp = new ArrayList();

            DataTable dtTemp = new DataTable();
            string strErrMsg = "";

            Int32 iErrCount = 0;
            Int32 iPKCount = 0;

            try
            {
                ParameterList.Clear();

                DataTable dt_CRM_IMPORT_TMP = QuerySwitch(QueryType.GetCRMOrder_TmpSchema, ParameterList);

                string s_ChanNo = "";
                string s_Store = "";
                string s_Item = "";
                string s_Period = "";
                string s_PoSourceNo = "";
                string strErrMsgDataFormat = "";

                VDS_CRM_ORDER_TMP_DBO CRM_DBO = new VDS_CRM_ORDER_TMP_DBO(ref USEDB);
                ParameterList.Clear();
                ParameterList.Add(s_LoginUser);
                ParameterList.Add(V_SESSION_ID);
                CRM_DBO.doDelete_ORDER_TMP(ParameterList, null);

                DataTable dtSorted = ds_Excel.Tables[0];

                //2010/12/01 added:先進行排序再存入DB
                //DataView dvSorted = ds_Excel.Tables[0].DefaultView;
                //dvSorted.Sort = string.Format("{0},{1},{2},{3}",
                //              dvSorted.Table.Columns[3].ColumnName,
                //              dvSorted.Table.Columns[4].ColumnName,
                //              dvSorted.Table.Columns[1].ColumnName,
                //              dvSorted.Table.Columns[2].ColumnName);//ITEM,PERIOD,CHAN_NO,STORE
                //DataTable dtSorted = dvSorted.ToTable();

                foreach (System.Data.DataRow dRow in dtSorted.Rows)
                {
                    #region
                    iErrCount = 0;
                    iPKCount = 0;
                    strErrMsg = "";

                    s_ChanNo = dRow[1].ToString().Trim();
                    s_Store = dRow[2].ToString().Trim();
                    s_Item = dRow[3].ToString().Trim();
                    s_Period = dRow[4].ToString().Trim();
                    s_PoSourceNo = dRow[0].ToString().Trim();

                    if (!CheckRequiredField(dRow, iAryRequiredColumnsCheck, out strErrMsgDataFormat))//檢查必填欄位
                    {
                        #region 檢查資料格式正確性
                        arl_Return.Add("FALSE");
                        arl_Return.Add(strErrMsgDataFormat);
                        return arl_Return;
                    }
                    else if (!CheckOverFlow(dRow, iAryOverflowColumnsCheck, out strErrMsgDataFormat))//檢查是否為溢位
                    {
                        arl_Return.Add("FALSE");
                        arl_Return.Add(strErrMsgDataFormat);
                        return arl_Return;
                    }
                    else if (!CheckInputValueIsInt32(dRow, iAryRequiredColumnsCheck, out strErrMsgDataFormat))//檢查是否為數值
                    {
                        arl_Return.Add("FALSE");
                        arl_Return.Add(strErrMsgDataFormat);
                        return arl_Return;
                        #endregion
                    }
                    else
                    {
                        #region 將資料寫入 TEMP TABLE

                        DataRow dRow_Temp = dt_CRM_IMPORT_TMP.NewRow();

                        dRow_Temp["CREATEDATE"] = d_CreateDate;
                        dRow_Temp["CREATEUID"] = s_LoginUser;
                        dRow_Temp["ID"] = i_newTable_Count;
                        dRow_Temp["UPDATEDATE"] = d_CreateDate;
                        dRow_Temp["UPDATEUID"] = s_LoginUser;
                        dRow_Temp["CHAN_NO"] = dRow[1].ToString().Trim();
                        dRow_Temp["STORE"] = dRow[2].ToString().Trim();
                        dRow_Temp["ITEM"] = dRow[3].ToString().Trim();
                        dRow_Temp["PERIOD"] = dRow[4].ToString().Trim();
                        dRow_Temp["PO_SOURCE_NO"] = dRow[0].ToString().Trim();
                        dRow_Temp["REQUEST_QTY"] = dRow[5].ToString().Trim();
                        dRow_Temp["SESSION_ID"] = V_SESSION_ID;
                        dRow_Temp["DATASOURCE"] = s_AP_FileName;

                        //-------------------------------------

                        #endregion

                        dt_CRM_IMPORT_TMP.Rows.Add(dRow_Temp);
                        i_newTable_Count += 1;
                    }

                    i_FileToTemp_Total_count += 1;
                    #endregion
                }


                #region 先清除前一次,同一使用者執行的匯入暫存資訊與錯誤資訊,並將 Excel 資料匯入 TEMP TABLE

                ParameterList.Clear();
                ParameterList.Add(s_LoginUser);
                ParameterList.Add(V_SESSION_ID);

                DELETE_AND_INSERT_TEMP_TABLE(ParameterList, null, dt_CRM_IMPORT_TMP);

                #endregion


                //效能提升版的地方----------------------------------------------------------------------------------
                #region 檢查資料邏輯正確性

                bool bResult = Check_TmpData(s_LoginUser, V_SESSION_ID, out i_FileToTemp_Total_count, out i_FileToTemp_Right_count, out i_FileToTemp_Wrong_count);

                #endregion
                //效能提升版的地方----------------------------------------------------------------------------------

                arl_Return.Add("TRUE");
                arl_Return.Add(b_Check_Logic);
                arl_Return.Add(i_FileToTemp_Total_count);
                arl_Return.Add(i_FileToTemp_Right_count);
                arl_Return.Add(i_FileToTemp_Wrong_count);
            }
            catch (Exception ex)
            {
                arl_Return.Add("FALSE");
                arl_Return.Add(GetNewException(ex).Message);
            }

            return arl_Return;
            #endregion
        }
Ejemplo n.º 7
0
 public DataTable CheckBookLack(ArrayList ParameterList)
 {
     #region
     try
     {
         VDS_CRM_ORDER_TMP_DBO CRM_DBO = new VDS_CRM_ORDER_TMP_DBO(ref USEDB);
         return CRM_DBO.doCheckBookLack(ParameterList);
     }
     catch (Exception ex)
     {
         throw GetNewException(ex);
     }
     #endregion
 }
Ejemplo n.º 8
0
 public DataTable QueryTransResult(ArrayList ParameterList)
 {
     #region
     try
     {
         VDS_CRM_ORDER_TMP_DBO CRM_DBO = new VDS_CRM_ORDER_TMP_DBO(ref USEDB);
         return CRM_DBO.doQueryTransResult(ParameterList);
     }
     catch (Exception ex)
     {
         throw GetNewException(ex);
     }
     #endregion
 }