public void FileToTmpC(DataTable dtTemp, DbTransaction RootDBT, string V_CREATEUID, out string ErrorMsg) { bool IsRootTranscation = false; try { DBO.VDS_STM36_DBO dbo = new VDS_STM36_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 清空暫存檔 dbo.doDeleteTemp(V_CREATEUID, DBT); #endregion #region FileToTmp ArrayList ParameterList = new ArrayList(); if (dtTemp != null) { for (int i = 0; i < dtTemp.Rows.Count; i++) { Double doubleVal; DateTime dt; ErrorMsg = ""; string STORE =dtTemp.Rows[i]["STORE"].ToString().Trim(); string ITEM =dtTemp.Rows[i]["ITEM"].ToString().Trim(); string PERIOD =dtTemp.Rows[i]["PERIOD"].ToString().Trim(); string PERIOD_END =dtTemp.Rows[i]["PERIOD_END"].ToString().Trim(); string EFF_START =dtTemp.Rows[i]["EFF_START"].ToString().Trim(); string EFF_END =dtTemp.Rows[i]["EFF_END"].ToString().Trim(); string PRICE_DISCOUNT =dtTemp.Rows[i]["PRICE_DISCOUNT"].ToString().Trim(); string FIX_PRICE_DISCOUNT =dtTemp.Rows[i]["FIX_PRICE_DISCOUNT"].ToString().Trim(); string VENDOR_SUB =dtTemp.Rows[i]["VENDOR_SUB"].ToString().Trim(); if (STORE == string.Empty) { ErrorMsg = "店號/店群欄位為必填;"; } else if(STORE.Length > 6) { ErrorMsg += "店號/店群欄位最多6個字元;"; STORE = ""; } else if ((!IsNumber(STORE.Substring(1,STORE.Length-1)) || !IsWord(STORE.Substring(0, 1))) && dtTemp.Rows[i]["IMPORT_KIND"].ToString()=="5") { ErrorMsg += "店號第一碼是英文字或數字,第二碼後都要是數字 !!"; } else if ((!IsWord(STORE.Substring(0, STORE.Length))) && dtTemp.Rows[i]["IMPORT_KIND"].ToString() == "4") { ErrorMsg += "店群欄位格式錯誤;"; } if (ITEM == string.Empty) { ErrorMsg += "品號欄位為必填;"; } else if (ITEM.Length > 6) { ErrorMsg += "品號欄位最多6個字元;"; ITEM = ""; } else if (Double.TryParse(ITEM, out doubleVal) == false) { ErrorMsg += "品號欄位格式錯誤;"; ITEM = ""; } if (PERIOD == string.Empty) { ErrorMsg += "期別起欄位為必填;"; } else if (PERIOD.Length > 6) { ErrorMsg += "期別起欄位最多6個字元;"; PERIOD = ""; } else if (Double.TryParse(PERIOD, out doubleVal) == false) { ErrorMsg += "期別起欄位格式錯誤;"; PERIOD = ""; } if (PERIOD_END == string.Empty) { ErrorMsg += "期別迄欄位為必填;"; } else if (PERIOD_END.Length > 6) { ErrorMsg += "期別迄欄位最多6個字元;"; PERIOD_END = ""; } else if (Double.TryParse(PERIOD_END, out doubleVal) == false) { ErrorMsg += "期別迄欄位格式錯誤;"; PERIOD_END = ""; } if(EFF_START==string.Empty) { ErrorMsg += "折扣開始日欄位為必填;"; EFF_START = "1000/01/01"; } else if(DateTime.TryParse(EFF_START, out dt) == false) { ErrorMsg += "折扣開始日欄位格式錯誤;"; EFF_START = "1000/01/01"; } else { EFF_START = DateTime.ParseExact(DateTime.Parse(EFF_START).ToString("yyyy/MM/dd"), "yyyy/MM/dd", null).ToString("yyyy/MM/dd"); if (DateTime.Parse(EFF_START) < DateTime.Now.Date) { ErrorMsg += "折扣開始日不可小於等於系統日;"; } } if(EFF_END==string.Empty) { ErrorMsg += "折扣結束日欄位為必填;"; EFF_END = "9999/12/31"; } else if (DateTime.TryParse(EFF_END, out dt) == false) { ErrorMsg += "折扣結束日欄位格式錯誤;"; EFF_END = "9999/12/31"; } else { EFF_END = DateTime.ParseExact(DateTime.Parse(EFF_END).ToString("yyyy/MM/dd"), "yyyy/MM/dd", null).ToString("yyyy/MM/dd"); if (String.Compare(EFF_START, EFF_END, true) > 0) { ErrorMsg += "折扣區間結束日不可大於開始日;"; } } if((PRICE_DISCOUNT==string.Empty && FIX_PRICE_DISCOUNT==string.Empty) || (PRICE_DISCOUNT!=string.Empty && FIX_PRICE_DISCOUNT!=string.Empty)) { ErrorMsg += "折扣率與指定牌價須擇一填寫;"; PRICE_DISCOUNT = "0"; FIX_PRICE_DISCOUNT = "0"; } else { if(PRICE_DISCOUNT!=string.Empty) { if(Double.TryParse(PRICE_DISCOUNT,out doubleVal)==false) { ErrorMsg += "折扣率格式錯誤;"; PRICE_DISCOUNT = "0"; } else { double N_PRICE_DISCOUNT=Convert.ToDouble(PRICE_DISCOUNT); if(N_PRICE_DISCOUNT<0|| N_PRICE_DISCOUNT>100) { ErrorMsg += "折扣率需介於0~100之間;"; PRICE_DISCOUNT = "0"; } } } else { if(Double.TryParse(FIX_PRICE_DISCOUNT,out doubleVal)==false) { ErrorMsg += "指定牌價格式錯誤;"; FIX_PRICE_DISCOUNT = "0"; } else { double N_FIX_PRICE_DISCOUNT=Convert.ToDouble(FIX_PRICE_DISCOUNT); if(N_FIX_PRICE_DISCOUNT<0) { ErrorMsg += "指定牌價需大於0;"; FIX_PRICE_DISCOUNT = "0"; } } } } if(VENDOR_SUB!=string.Empty) { if(Double.TryParse(VENDOR_SUB,out doubleVal)==false) { ErrorMsg += "供應商補貼格式錯誤;"; VENDOR_SUB = "0"; } else { double N_VENDOR_SUB=Convert.ToDouble(VENDOR_SUB); if(N_VENDOR_SUB<0|| N_VENDOR_SUB>100) { ErrorMsg += "供應商補貼需介於0~100之間;"; VENDOR_SUB = "0"; } } } ParameterList.Clear(); ParameterList.Add(dtTemp.Rows[i]["CODE"].ToString()); ParameterList.Add(dtTemp.Rows[i]["ROW_NUM"].ToString()); ParameterList.Add(dtTemp.Rows[i]["IMPORT_KIND"].ToString()); ParameterList.Add(STORE); ParameterList.Add(ITEM); ParameterList.Add(PERIOD); ParameterList.Add(PERIOD_END); ParameterList.Add(EFF_START); ParameterList.Add(EFF_END); ParameterList.Add(PRICE_DISCOUNT); ParameterList.Add(FIX_PRICE_DISCOUNT); ParameterList.Add(VENDOR_SUB); ParameterList.Add(dtTemp.Rows[i]["CREATEDATE"].ToString()); ParameterList.Add(dtTemp.Rows[i]["CREATEUID"].ToString()); ParameterList.Add(ErrorMsg); ParameterList.Add(dtTemp.Rows[i]["DATASOURCE"].ToString()); ParameterList.Add(dtTemp.Rows[i]["STATUS"].ToString()); if(ErrorMsg=="") { ParameterList.Add(dtTemp.Rows[i]["DATATYPE"].ToString()); } else { ParameterList.Add("2"); } dbo.doCreateTemp(ParameterList, DBT); } } #endregion if (IsRootTranscation) { //獨立呼叫Transcation成立 DBT.Commit(); IsRootTranscation = false; } CheckData2(V_CREATEUID);//單次匯入 } catch (Exception ex) { #region 交易失敗 if (IsRootTranscation == true) DBT.Rollback(); #endregion throw ex; } finally { #region 判斷是否關閉交易連線 //獨立呼叫Transcation,關閉連線 if (Conn.State == ConnectionState.Connecting) { Conn.Close(); } #endregion } }
public void FileToTmp(DataTable dtTemp, DbTransaction RootDBT, string V_CREATEUID, out string ErrorMsg) { bool IsRootTranscation = false; try { DBO.VDS_STM36_DBO dbo = new VDS_STM36_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 清空暫存檔 dbo.doDeleteTemp(V_CREATEUID, DBT); #endregion #region FileToTmp ArrayList ParameterList = new ArrayList(); if (dtTemp != null) { for (int i = 0; i < dtTemp.Rows.Count; i++) { ParameterList.Clear(); ParameterList.Add(dtTemp.Rows[i]["CODE"].ToString()); ParameterList.Add(dtTemp.Rows[i]["ROW_NUM"].ToString()); ParameterList.Add(dtTemp.Rows[i]["IMPORT_KIND"].ToString()); ParameterList.Add(dtTemp.Rows[i]["STORE"].ToString()); ParameterList.Add(dtTemp.Rows[i]["ITEM"].ToString()); ParameterList.Add(dtTemp.Rows[i]["PERIOD"].ToString()); ParameterList.Add(dtTemp.Rows[i]["PERIOD_END"].ToString()); ParameterList.Add(dtTemp.Rows[i]["EFF_START"].ToString()); ParameterList.Add(dtTemp.Rows[i]["EFF_END"].ToString()); ParameterList.Add(dtTemp.Rows[i]["PRICE_DISCOUNT"]).ToString(); ParameterList.Add(dtTemp.Rows[i]["FIX_PRICE_DISCOUNT"].ToString()); ParameterList.Add(dtTemp.Rows[i]["VENDOR_SUB"].ToString()); ParameterList.Add(dtTemp.Rows[i]["CREATEDATE"].ToString()); ParameterList.Add(dtTemp.Rows[i]["CREATEUID"].ToString()); ParameterList.Add(dtTemp.Rows[i]["ERROR_MEMO"].ToString()); ParameterList.Add(dtTemp.Rows[i]["DATASOURCE"].ToString()); ParameterList.Add(dtTemp.Rows[i]["STATUS"].ToString()); ParameterList.Add(dtTemp.Rows[i]["DATATYPE"].ToString()); dbo.doCreateTemp(ParameterList, DBT); } } #endregion if (IsRootTranscation) { //獨立呼叫Transcation成立 DBT.Commit(); IsRootTranscation = false; } CheckData(V_CREATEUID);//交叉匯入 } catch (Exception ex) { #region 交易失敗 if (IsRootTranscation == true) DBT.Rollback(); #endregion throw ex; } finally { #region 判斷是否關閉交易連線 //獨立呼叫Transcation,關閉連線 if (Conn.State == ConnectionState.Connecting) { Conn.Close(); } #endregion } }