예제 #1
0
 /// <summary>
 /// 目的:查詢上傳後的成功筆數
 /// Table:VDS_VDM_VCMS_MAIN_TMP
 /// 條件:V_CREATEUID
 /// </summary>
 public void QueryRouteStoreTmpImportStat(string V_CREATEUID, out int N_TMP_CNT, out int N_TAB_CNT)
 {
     try
     {
         DBO.STM_STM24_DBO dbo = new STM_STM24_DBO(ref USEDB);
         dbo.doQueryRouteStoreTmpImportStat(V_CREATEUID, out N_TMP_CNT, out N_TAB_CNT);
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
예제 #2
0
		/// <summary>
		/// 目的:查詢錯誤訊息資料
		/// Table:
		///  B=VDS_STM_ROUTE_STORE_TMP
		/// 條件:[資料型態]=2:錯誤資料、[建立人員]=
		/// </summary>
        public DataTable QueryErrorByFind(string V_CREATEUID, DateTime D_CREATEDATE_S, DateTime D_CREATEDATE_E)
        {
            try
            {
                DBO.STM_STM24_DBO dbo = new STM_STM24_DBO(ref USEDB);
                return dbo.doQueryRouteStoreTmpError(V_CREATEUID, D_CREATEDATE_S, D_CREATEDATE_E);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
예제 #3
0
		/// <summary>
		/// 目的:將上傳檔案內容,存入暫存檔
		/// 傳入參數:
		/// 〔@啟用日〕
		/// 1.先清除前一次,同一使用者執行的匯入暫存資訊與錯誤資訊。
		///    相關Table:
		///    B=VDS_STM_ROUTE_STORE_TMP
		/// 2.讀取匯入檔案到暫存DataSet。
		/// B.EFF_START=〔@啟用日〕,其他欄位參照檔案格式。
		/// 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,呼叫 [ProcessImportRoute.TmpToDB],處理匯入正式表單。
		/// * 匯入檔案對應,請參考工作表:STM24 路線路順匯入(檔案格式)。
		/// </summary>
        public void FileToTmp(DataTable dt, DbTransaction RootDBT, string V_DATA_SOURCE, string V_CREATEUID, string V_EFF_START,out string ErrorMsg)
        {
            bool IsRootTranscation = false;

            try
            {
                DBO.STM_STM24_DBO dbo = new STM_STM24_DBO(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_VDM_VCMS_MAIN_TMP

                dbo.doDeleteRouteStoreTmp(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_EFF_START);
                            ParameterList.Add(dt.Rows[i][0].ToString());
                            ParameterList.Add(V_CREATEUID);
                            ParameterList.Add(System.DateTime.Now);
                            dbo.doCreateRouteStoreTmp(ParameterList, DBT, out V_RESULT);
                        }
                    }
                }
                #endregion

                #region TmpToDB

                dbo.doCreateRouteStore(V_CREATEUID, DBT, out V_RESULT);
                
                if (V_RESULT == "0")
                    ErrorMsg = "轉入正式路線路順失敗,請檢視異常報表!";
                #endregion

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




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

                DBT.Rollback();
                #endregion

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

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

                #endregion

            }
        }