Exemplo n.º 1
0
 public DataTable QuerySchema()
 {
     try
     {
         DBO.STM_StoreHolidayDBO dbo = new STM_StoreHolidayDBO(ref USEDB);
         return dbo.doQuerySchema();
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
Exemplo n.º 2
0
 /// <summary>
 /// 查詢類別及日期是否已存在
 /// </summary>
 /// <param name="ParameterList"></param>
 /// <returns></returns>
 public Boolean QueryExistDB(ArrayList ParameterList)
 {
     try
     {
         DBO.STM_StoreHolidayDBO dbo = new STM_StoreHolidayDBO(ref USEDB);
         return dbo.doQueryExistDB(ParameterList);
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
Exemplo n.º 3
0
 /// <summary>
 /// 查詢日期資料
 /// </summary>
 /// <param name="ParameterList"></param>
 /// <param name="RowCountLimit"></param>
 /// <returns></returns>
 public DataTable QueryByFind(ArrayList ParameterList, int RowCountLimit)
 {
     try
     {
         DBO.STM_StoreHolidayDBO dbo = new STM_StoreHolidayDBO(ref USEDB);
         return dbo.doQueryByFind(ParameterList, RowCountLimit);
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
Exemplo n.º 4
0
        /// <summary>
        /// 處理存檔BCO
        /// </summary>
        /// <param name="RootDBT">是否有主交易,無主交易輸入null</param>
        /// <returns>回傳更新成功與否</returns>
        public bool doSave(DataTable newDt,
                         DataTable oldDt,
                         DbTransaction RootDBT)
        {
            #region
            bool IsRootTranscation = false;
            bool bResult = true;
            try
            {
                DBO.STM_StoreHolidayDBO dbo = new STM_StoreHolidayDBO(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

                if (oldDt == null || oldDt.Rows.Count == 0)
                {
                    foreach (DataRow dRow in newDt.Rows)
                    {
                        #region 在舊來源無資料,所以要呼叫 insert 明細
                        dbo.doCreate(dRow, DBT);
                        #endregion
                    }
                }
                else
                {
                    if (newDt != null)
                    {
                        #region 在newDt逐筆檢查資料,判斷是否有新增、修改的項目
                        foreach (DataRow dRow in newDt.Rows)
                        {
                            try
                            {
                                if (Convert.ToString(dRow.RowState) != Convert.ToString("Deleted"))
                                {

                                    bool storeExistFlag = false;

                                    foreach (DataRow dRow_Oringinal in oldDt.Rows)
                                    {
                                        if (dRow["ID"].ToString() == dRow_Oringinal["ID"].ToString())
                                        {
                                            if (dRow["STORE_TYPE"].ToString() != dRow_Oringinal["STORE_TYPE"].ToString() ||
                                                dRow["STORE_HOLIDAY"].ToString() != dRow_Oringinal["STORE_HOLIDAY"].ToString() 
                                                )
                                            {
                                                if (!dbo.doQueryExistDB(dRow))
                                                {
                                                    dbo.doUpdate(dRow, DBT);
                                                }
                                            }
                                            storeExistFlag = true;
                                            break;
                                        }
                                    }
                                    if (!storeExistFlag)
                                    {
                                        if (!dbo.doQueryExistDB(dRow))
                                        {
                                            dbo.doCreate(dRow, DBT);
                                        }
                                    }
                                }


                            }
                            catch (Exception ex)
                            {
                                throw ex;

                            }
                        }
                        #endregion
                    }


                    #region 在oldDt逐筆檢查資料,判斷是否存在newDt中,如無則刪除的項目
                    foreach (DataRow dRow_Oringinal in oldDt.Rows)
                    {
                        try
                        {
                            bool storeExistFlag = false;

                            foreach (DataRow dRow in newDt.Rows)
                            {
                                if (Convert.ToString(dRow.RowState) != Convert.ToString("Deleted"))
                                {

                                    if (dRow["ID"].ToString() == dRow_Oringinal["ID"].ToString())
                                    {
                                        storeExistFlag = true;
                                        break;
                                    }
                                }
                            }

                            if (!storeExistFlag)
                            {
                                #region 在新來源找不到此筆資料,所以要呼叫 delete 明細
                                dbo.doDelete(dRow_Oringinal, DBT);
                                #endregion
                            }


                        }
                        catch (Exception ex)
                        {
                            throw ex;
                        }
                    }
                    #endregion

                }

                #region 交易成功

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

                #endregion

                return bResult;

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

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

                #endregion

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

                if (IsRootTranscation)
                {
                    //獨立呼叫Transcation,關閉連線
                    if (Conn.State == ConnectionState.Connecting)
                    {
                        Conn.Close();
                    }
                }
                #endregion
            }
            #endregion
        }
Exemplo n.º 5
0
        /// <summary>
        /// 目的:查詢上傳後的成功筆數
        /// Table:VDS_STM_STORE_HOLIDAY_TMP
        /// 條件:V_CREATEUID
        /// </summary>
        //public void QueryStoreHolidayTmpImportStat(string V_CREATEUID, out int N_TMP_CNT, out int N_TAB_CNT)
        //{
        //    try
        //    {
        //        DBO.STM_StoreHolidayDBO dbo = new STM_StoreHolidayDBO(ref USEDB);
        //        //dbo.doQueryStoreHolidayTmpImportStat(V_CREATEUID, DBT, out N_TMP_CNT, out N_TAB_CNT);
        //    }
        //    catch (Exception ex)
        //    {
        //        throw ex;
        //    }
        //}

        /// <summary>
        /// 目的:查詢錯誤訊息資料
        /// Table:
        ///  B=VDS_STM_STORE_HOLIDAY_TMP
        /// 條件:[資料型態]=2:錯誤資料、[建立人員]=
        /// </summary>
        public DataTable QueryErrorByFind(string V_CREATEUID, DateTime D_CREATEDATE_S, DateTime D_CREATEDATE_E)
        {
            try
            {
                DBO.STM_StoreHolidayDBO dbo = new STM_StoreHolidayDBO(ref USEDB);
                return dbo.doQueryStoreHolidayTmpError(V_CREATEUID, D_CREATEDATE_S, D_CREATEDATE_E);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Exemplo n.º 6
0
        /// <summary>
        /// 目的:將上傳檔案內容,存入暫存檔
        /// 傳入參數:
        /// 〔@啟用日〕
        /// 1.先清除前一次,同一使用者執行的匯入暫存資訊與錯誤資訊。
        ///    相關Table:
        ///    B=VDS_STM_STORE_HOLIDAY_TMP
        /// 2.讀取匯入檔案到暫存DataSet。
        /// B.STORE_TYPE=〔@類別〕,其他欄位參照檔案格式。
        /// 3.檢查匯入檔案格式內容是否正確,如有任何錯誤,則停止上傳流程,並回傳錯誤訊息。
        ///   『XX檔案,檔案內容錯誤:@錯誤說明』 (格式請參考資料庫Table Shcema)
        ///       * 日期:檢查日期格式。
        ///       * 數字:檢查內容是否為數字。
        ///       * 文字:檢查長度是否溢位。
        ///       * 檔案欄位數是否不足。
        ///       * 兩個工作表匯入內容有任一筆錯,皆視為錯誤,整批放棄。
        ///       * 匯入表格細節說明請參考:WEB UI SPEC 文件
        /// 4. 格式檢查正確無誤後
        ///    a) 暫存檔中的[狀態]欄位調整為1:FILE TO TMP
        ///    b) 呼叫 [CheckData] ,檢查資料內容邏輯正確性
        /// 5. 無論CheckData()檢查結果是否為True,
        ///    皆將上傳檔案內容新增到資料庫Tmp Table:,
        ///    並記錄錯誤原因、匯入者、匯入日期、處理檔案名稱=上傳檔名。
        ///    c)上述匯入需一併Commit,處理期間有任何錯誤,皆視為異常,整批Rollback,並回傳錯誤訊息。
        /// 6. 上傳流程完成,回傳處理筆數訊息:上傳總筆數、成功筆數、失敗筆數。
        /// 7.如果CheckData()檢查結果=True,呼叫 [ProcessImportHoliday.TmpToDB],處理匯入正式表單。
        /// * 匯入檔案對應,請參考工作表:STM32 假日設定匯入(檔案格式)。
        /// </summary>
        public ArrayList FileToTmp(DataTable dt, DbTransaction RootDBT, string V_DATA_SOURCE, string V_CREATEUID, string V_STORE_TYPE)
        {
            bool IsRootTranscation = false;
            ArrayList arl_Return = new ArrayList();

            try
            {
                DBO.STM_StoreHolidayDBO dbo = new STM_StoreHolidayDBO(ref USEDB);
                //ErrorMsg = "";
                //判斷是否有傳入Root Transcation 
                IsRootTranscation = (RootDBT == null) ? true : false;


                #region 啟動交易或指定RootTranscation

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

                #endregion

                #region 清空VDS_STM_STORE_HOLIDAY_TMP

                dbo.doDeleteStoreHolidayTmp(V_CREATEUID, DBT);

                #endregion

                #region FileToTmp
                ArrayList ParameterList = new ArrayList();
                string V_RESULT = "1";

                if (dt != null)
                {
                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        if (V_RESULT == "1")
                        {
                            ParameterList.Clear();
                            ParameterList.Add(V_DATA_SOURCE);
                            ParameterList.Add(V_STORE_TYPE);
                            ParameterList.Add(Convert.ToDateTime(dt.Rows[i][0].ToString()));
                            ParameterList.Add(V_CREATEUID);
                            ParameterList.Add(System.DateTime.Now);
                            dbo.doCreateStoreHolidayTmp(ParameterList, DBT, out V_RESULT);
                        }
                    }
                }

                int N_TMP_CNT = 0;
                int N_TAB_CNT = 0;

                dbo.doQueryStoreHolidayTmpImportStat(V_CREATEUID, DBT, out N_TMP_CNT, out N_TAB_CNT);

                #endregion

                #region TmpToDB

                DataTable dt_Return =  dbo.doCreateStoreHoliday(V_CREATEUID, DBT);

                

                char[] delimiterChars = { '@' };
                string[] s_Return = dt_Return.Rows[0][0].ToString().Split(delimiterChars);

                for (int i = 0; i < s_Return.Length; i++)
                {
                    arl_Return.Add(s_Return[i].ToString());
                }

                arl_Return.Add(N_TMP_CNT.ToString());
                arl_Return.Add(N_TAB_CNT.ToString());

                #endregion

                #region 交易成功

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

                #endregion

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

                DBT.Rollback();
                #endregion

                arl_Return.Add("程式錯誤");
                arl_Return.Add(ex.Message);

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

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

                #endregion

            }

            return arl_Return;
        }