public bool UpdateDisCRMRecord( DataTable dtDisMain, DataTable dtDisItemNew, DataTable dtDisItemOld, DataTable dtDisStoreNew, DataTable dtDisStoreOld, string strDIS_NO, DbTransaction RootDBT) { #region bool bResult = false; bool IsRootTranscation = false; ArrayList ParameterList = new ArrayList(); DataCompare dc = new DataCompare(); DataTable dtDisMainDiff = null; DataTable dtDisItemDiff = null; DataTable dtDisItemAdd = null; DataTable dtDisItemDelete = null; DataTable dtDisStoreDiff = null; DataTable dtDisStoreAdd = null; DataTable dtDisStoreDelete = null; try { //判斷是否有傳入Root Transcation IsRootTranscation = (RootDBT == null) ? true : false; #region 啟動交易或指定RootTranscation //4.1) 控制 Begin Transaction if (IsRootTranscation) { //獨立呼叫啟動Transcation Conn = USEDB.CreateConnection(); Conn.Open(); DBT = Conn.BeginTransaction(); } else { DBT = RootDBT; } #endregion #region biz logical #region 4.2) 更新配本主檔並記 if (dtDisMain != null && dtDisMain.Rows.Count > 0) { MaintainDisMain BCODisMain = new MaintainDisMain(ConnectionDB); bResult = BCODisMain.UpdateDisMainFor111(dtDisMain, DBT); } else { bResult = true; } if (!bResult) throw new Exception(string.Format("MaintainDisCRMRecord.UpdateDisMainFor111:Step{0} 發生錯誤", "4.2")); #endregion #region 4.3) 更新配本商品與配本通路 #region 比較新舊值 dc.Clear(); dc.CompareA = dtDisItemNew; dc.CompareB = dtDisItemOld; dc.CompareField.AddCompareFieldRow("DIS_NO", "", true); dc.CompareField.AddCompareFieldRow("ITEM", "", true); dc.CompareField.AddCompareFieldRow("PERIOD", "", true); dc.CompareField.AddCompareFieldRow("INCLUDE_NON_EFF", "", false); dc.CompareData(); dtDisItemDiff = dc.ADiff; dtDisItemAdd = dc.AOnly; dtDisItemDelete = dc.BOnly; #endregion //處理新增 if (dtDisItemAdd != null && dtDisItemAdd.Rows.Count > 0) { #region MaintainDisItem BCODisItem = new MaintainDisItem(ConnectionDB); MaintainDisChan BCODisChan = new MaintainDisChan(ConnectionDB); bResult = BCODisItem.CreateDisItem(dtDisItemAdd, strDIS_NO, DBT); if (!bResult) throw new Exception(string.Format("MaintainDisItem.CreateDisItem:Step{0} 發生錯誤", "4.3")); foreach (DataRow dr in dtDisItemAdd.Rows) { ParameterList.Clear(); ParameterList.Add(strDIS_NO); ParameterList.Add(dr["ITEM"]); ParameterList.Add(dr["PERIOD"]); ParameterList.Add(dtDisMain.Rows[0]["RCHAN_NO"]); ParameterList.Add(DBNull.Value); ParameterList.Add(dr["CREATEDATE"]); ParameterList.Add(dr["CREATEUID"]); ParameterList.Add(DBNull.Value); ParameterList.Add(dtDisMain.Rows[0]["ST_ACCEPT_DATE"]); bResult = BCODisChan.CreateDisChan(ParameterList, DBT); if (!bResult) throw new Exception(string.Format("MaintainDisChan.CreateDisChan:Step{0} 發生錯誤", "4.3")); } } else { bResult = true; #endregion } //處理更新 if (dtDisItemDiff != null && dtDisItemDiff.Rows.Count > 0) { #region MaintainDisItem BCODisItem = new MaintainDisItem(ConnectionDB); MaintainDisChan BCODisChan = new MaintainDisChan(ConnectionDB); bResult = BCODisItem.UpdateDisItemFor111(dtDisItemDiff, DBT); if (!bResult) throw new Exception(string.Format("MaintainDisItem.UpdateDisItemFor111:Step{0} 發生錯誤", "4.3")); foreach (DataRow dr in dtDisItemDiff.Rows) { ParameterList.Clear(); //new ParameterList.Add(dr["CODE", DataRowVersion.Current]); ParameterList.Add(dr["UPDATEDATE", DataRowVersion.Current]); ParameterList.Add(dr["UPDATEUID", DataRowVersion.Current]); ParameterList.Add(dr["DIS_NO", DataRowVersion.Current]); ParameterList.Add(dr["ITEM", DataRowVersion.Current]); ParameterList.Add(dr["PERIOD", DataRowVersion.Current]); ParameterList.Add(dr["CHAN_NO", DataRowVersion.Current]); ParameterList.Add(dr["PLAN_RETURN_DATE", DataRowVersion.Current]); ParameterList.Add(dr["DIS_TYPE", DataRowVersion.Current]); ParameterList.Add(dr["PATTERN_NO", DataRowVersion.Current]); ParameterList.Add(dr["DIS_BRATE", DataRowVersion.Current]); ParameterList.Add(dr["DIS_STO_CQTY", DataRowVersion.Current]); ParameterList.Add(dr["DIS_PRE_CQTY", DataRowVersion.Current]); ParameterList.Add(dr["DIS_TOT_QTY", DataRowVersion.Current]); ParameterList.Add(dr["DIS_TOT_OQTY", DataRowVersion.Current]); ParameterList.Add(dr["DIS_TOT_PQTY", DataRowVersion.Current]); ParameterList.Add(dr["IS_LOCK", DataRowVersion.Current]); //old ParameterList.Add(dr["ID", DataRowVersion.Original]); ParameterList.Add(dr["CODE", DataRowVersion.Original]); ParameterList.Add(dr["CREATEDATE", DataRowVersion.Original]); ParameterList.Add(dr["CREATEUID", DataRowVersion.Original]); ParameterList.Add(dr["UPDATEDATE", DataRowVersion.Original]); ParameterList.Add(dr["UPDATEUID", DataRowVersion.Original]); ParameterList.Add(dr["DIS_NO", DataRowVersion.Original]); ParameterList.Add(dr["ITEM", DataRowVersion.Original]); ParameterList.Add(dr["PERIOD", DataRowVersion.Original]); ParameterList.Add(dr["CHAN_NO", DataRowVersion.Original]); ParameterList.Add(dr["PLAN_RETURN_DATE", DataRowVersion.Original]); ParameterList.Add(dr["DIS_TYPE", DataRowVersion.Original]); ParameterList.Add(dr["PATTERN_NO", DataRowVersion.Original]); ParameterList.Add(dr["DIS_BRATE", DataRowVersion.Original]); ParameterList.Add(dr["DIS_STO_CQTY", DataRowVersion.Original]); ParameterList.Add(dr["DIS_PRE_CQTY", DataRowVersion.Original]); ParameterList.Add(dr["DIS_TOT_QTY", DataRowVersion.Original]); ParameterList.Add(dr["DIS_TOT_OQTY", DataRowVersion.Original]); ParameterList.Add(dr["DIS_TOT_PQTY", DataRowVersion.Original]); ParameterList.Add(dr["IS_LOCK", DataRowVersion.Original]); bResult = BCODisChan.UpdateDisChan(ParameterList, DBT); if (!bResult) throw new Exception(string.Format("MaintainDisChan.UpdateDisChan:Step{0} 發生錯誤", "4.3")); } } else { bResult = true; #endregion } //處理刪除 if (dtDisItemDelete != null && dtDisItemDelete.Rows.Count > 0) { #region MaintainDisItem BCODisItem = new MaintainDisItem(ConnectionDB); foreach (DataRow dr in dtDisItemDelete.Rows) { #region old //ParameterList.Clear(); //ParameterList.Add(dr["ID", DataRowVersion.Original]); //ParameterList.Add(dr["CODE", DataRowVersion.Original]); //ParameterList.Add(dr["CREATEDATE", DataRowVersion.Original]); //ParameterList.Add(dr["CREATEUID", DataRowVersion.Original]); //ParameterList.Add(dr["UPDATEDATE", DataRowVersion.Original]); //ParameterList.Add(dr["UPDATEUID", DataRowVersion.Original]); //ParameterList.Add(dr["DIS_NO", DataRowVersion.Original]); //ParameterList.Add(dr["ITEM", DataRowVersion.Original]); //ParameterList.Add(dr["PERIOD", DataRowVersion.Original]); //ParameterList.Add(dtDisMain.Rows[0]["RCHAN_NO"]); //ParameterList.Add(dr["MEMO", DataRowVersion.Original]); //bResult = BCODisItem.DeleteDisCRMItem(ParameterList, DBT); //if (!bResult) // throw new Exception(string.Format("MaintainDisItem.DeleteDisCRMItem:Step{0} 發生錯誤", "4.3")); #endregion //20090930 modified ParameterList.Clear(); ParameterList.Add(dr["UPDATEDATE", DataRowVersion.Original]); ParameterList.Add(dr["UPDATEUID", DataRowVersion.Original]); ParameterList.Add(dr["DIS_NO", DataRowVersion.Original]); ParameterList.Add(dr["ITEM", DataRowVersion.Original]); ParameterList.Add(dr["PERIOD", DataRowVersion.Original]); bResult = BCODisItem.DeleteDisItemFor111(ParameterList, DBT); if (!bResult) throw new Exception(string.Format("MaintainDisItem.DeleteDisItemFor111:Step{0} 發生錯誤", "4.3")); } } else { bResult = true; #endregion } #endregion #region 4.4) 更新配本門市檔 #region 比較新舊值 dc.Clear(); dc.CompareA = dtDisStoreNew; dc.CompareB = dtDisStoreOld; dc.CompareField.AddCompareFieldRow("CODE", "", true); dc.CompareField.AddCompareFieldRow("ROUTE", "", false); dc.CompareField.AddCompareFieldRow("STEP", "", false); dc.CompareField.AddCompareFieldRow("DIS_QTY", "", false); dc.CompareData(); dtDisStoreDiff = dc.ADiff; dtDisStoreAdd = dc.AOnly; dtDisStoreDelete = dc.BOnly; #endregion //處理新增 if (dtDisStoreAdd != null && dtDisStoreAdd.Rows.Count > 0) { #region MaintainDisStore BCODisStore = new MaintainDisStore(ConnectionDB); foreach (DataRow dr in dtDisStoreAdd.Rows) { ParameterList.Clear(); ParameterList.Add(dr["CODE", DataRowVersion.Current]); ParameterList.Add(dr["UPDATEDATE", DataRowVersion.Current]); ParameterList.Add(dr["UPDATEUID", DataRowVersion.Current]); ParameterList.Add(dr["DIS_NO", DataRowVersion.Current]); ParameterList.Add(dr["ITEM", DataRowVersion.Current]); ParameterList.Add(dr["PERIOD", DataRowVersion.Current]); ParameterList.Add(dr["CHAN_NO", DataRowVersion.Current]); ParameterList.Add(dr["STORE", DataRowVersion.Current]); ParameterList.Add(dr["DIS_QTY", DataRowVersion.Current]); ParameterList.Add(dr["PO_SOURCE_NO", DataRowVersion.Current]); ParameterList.Add(dtDisMain.Rows[0]["ST_ACCEPT_DATE"]); bResult = BCODisStore.CreateDisCRMStore(ParameterList, DBT); if (!bResult) throw new Exception(string.Format("MaintainDisStore.CreateDisCRMStore:Step{0} 發生錯誤", "4.4")); } } else { bResult = true; #endregion } //處理更新 if (dtDisStoreDiff != null && dtDisStoreDiff.Rows.Count > 0) { #region MaintainDisStore BCODisStore = new MaintainDisStore(ConnectionDB); foreach (DataRow dr in dtDisStoreDiff.Rows) { ParameterList.Clear(); ParameterList.Add(dr["CODE", DataRowVersion.Current]); ParameterList.Add(dr["UPDATEDATE", DataRowVersion.Current]); ParameterList.Add(dr["UPDATEUID", DataRowVersion.Current]); ParameterList.Add(dr["DIS_NO", DataRowVersion.Current]); ParameterList.Add(dr["ITEM", DataRowVersion.Current]); ParameterList.Add(dr["PERIOD", DataRowVersion.Current]); ParameterList.Add(dr["CHAN_NO", DataRowVersion.Current]); ParameterList.Add(dr["STORE", DataRowVersion.Current]); ParameterList.Add(dr["DIS_QTY", DataRowVersion.Current]); ParameterList.Add(dr["PO_SOURCE_NO", DataRowVersion.Current]); ParameterList.Add(dtDisMain.Rows[0]["ST_ACCEPT_DATE"]); bResult = BCODisStore.CreateDisCRMStore(ParameterList, DBT); if (!bResult) throw new Exception(string.Format("MaintainDisStore.CreateDisCRMStore:Step{0} 發生錯誤", "4.4")); } } else { bResult = true; #endregion } //處理刪除 if (dtDisStoreDelete != null && dtDisStoreDelete.Rows.Count > 0) { #region MaintainDisStore BCODisStore = new MaintainDisStore(ConnectionDB); foreach (DataRow dr in dtDisStoreDelete.Rows) { ParameterList.Clear(); ParameterList.Add(dr["ID", DataRowVersion.Original]); ParameterList.Add(dr["CODE", DataRowVersion.Original]); ParameterList.Add(dr["CREATEDATE", DataRowVersion.Original]); ParameterList.Add(dr["CREATEUID", DataRowVersion.Original]); ParameterList.Add(dr["UPDATEDATE", DataRowVersion.Original]); ParameterList.Add(dr["UPDATEUID", DataRowVersion.Original]); ParameterList.Add(dr["DIS_NO", DataRowVersion.Original]); ParameterList.Add(dr["ITEM", DataRowVersion.Original]); ParameterList.Add(dr["PERIOD", DataRowVersion.Original]); ParameterList.Add(dr["CHAN_NO", DataRowVersion.Original]); ParameterList.Add(dr["STORE", DataRowVersion.Original]); ParameterList.Add(dr["DIS_QTY", DataRowVersion.Original]); ParameterList.Add(dr["PO_SOURCE_NO", DataRowVersion.Original]); bResult = BCODisStore.DeleteDisStore(ParameterList, DBT); if (!bResult) throw new Exception(string.Format("MaintainDisStore.DeleteDisStore:Step{0} 發生錯誤", "4.4")); } } else { bResult = true; #endregion } #endregion #region 4.5) 呼叫 PKG_VDS_ALO_COMM.lf_area_qty if (dtDisItemOld != null && dtDisItemOld.Rows.Count > 0) { ParameterList.Clear(); ParameterList.Add(strDIS_NO); ParameterList.Add(dtDisItemOld.Rows[0]["ITEM"]); ParameterList.Add(dtDisItemOld.Rows[0]["PERIOD"]); ParameterList.Add(dtDisMain.Rows[0]["RCHAN_NO"]); ParameterList.Add("X"); VDS_ALO_COMMON_DBO DBO_COMM = new VDS_ALO_COMMON_DBO(ref USEDB); bResult = DBO_COMM.doLp_area_disqty(ParameterList, DBT); } if (!bResult) throw new Exception(string.Format("{0} 發生失敗", "呼叫 PKG_VDS_ALO_COMM.lf_area_qty")); #endregion #region 4.6) 異動其他相關資料表 if (dtDisItemOld != null && dtDisItemOld.Rows.Count > 0) { ParameterList.Clear(); ParameterList.Add(strDIS_NO); ParameterList.Add(dtDisItemOld.Rows[0]["ITEM"]); ParameterList.Add(dtDisItemOld.Rows[0]["PERIOD"]); ParameterList.Add(dtDisItemOld.Rows[0]["ROOT_NO"]); ProcessALOCommon BCOProcessCommon = new ProcessALOCommon(ConnectionDB); bResult = BCOProcessCommon.UpdateOtherTables(ParameterList, DBT); } if (!bResult) throw new Exception(string.Format("ProcessALOCommon.UpdateOtherTables:Step{0} 發生錯誤", "4.6")); #endregion #endregion #region 交易成功 if (IsRootTranscation) { //獨立呼叫Transcation成立 DBT.Commit(); } #endregion } catch (Exception ex) { #region 交易失敗 if (IsRootTranscation) { //獨立呼叫Transcation失敗 DBT.Rollback(); } #endregion bResult = false; throw GetNewException(ex); } finally { #region 判斷是否關閉交易連線 if (IsRootTranscation) { //獨立呼叫Transcation,關閉連線 if (Conn.State == ConnectionState.Connecting) { Conn.Close(); } } #endregion } return bResult; #endregion }
public bool CreateDisCRMRecord(DataTable dtDisMain, DataTable dtDisItem, DataTable dtDisStore, out string vDisNo, DbTransaction RootDBT) { #region bool bResult = false; bool IsRootTranscation = false; try { VDS_ALO_DIS_MAIN_DBO DBO_MAIN = new VDS_ALO_DIS_MAIN_DBO(ref USEDB); VDS_ALO_DIS_ITEM_DBO DBO_ITEM = new VDS_ALO_DIS_ITEM_DBO(ref USEDB); VDS_ALO_DIS_CHAN_DBO DBO_CHAN = new VDS_ALO_DIS_CHAN_DBO(ref USEDB); VDS_ALO_DIS_STORE_DBO DBO_STORE = new VDS_ALO_DIS_STORE_DBO(ref USEDB); VDS_ALO_COMMON_DBO DBO_COMM = new VDS_ALO_COMMON_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 vDisNo = ""; string strCode = "", strCodeLast = ""; ArrayList ParameterList = new ArrayList(); //配本主檔:VDS_ALO_DIS_MAIN if (dtDisMain != null && dtDisMain.Rows.Count > 0) { ParameterList.Clear(); ParameterList.Add(dtDisMain.Rows[0]["UPDATEDATE"]); ParameterList.Add(dtDisMain.Rows[0]["UPDATEUID"]); ParameterList.Add(dtDisMain.Rows[0]["DIS_DATE"]); ParameterList.Add(dtDisMain.Rows[0]["ST_ACCEPT_DATE"]); ParameterList.Add(dtDisMain.Rows[0]["RCHAN_NO"]); ParameterList.Add(dtDisMain.Rows[0]["PO_SOURCE_NO"]); vDisNo = DBO_MAIN.doCreateDisCRMMain(ParameterList, DBT); } if (vDisNo != "") { foreach (DataRow dr in dtDisItem.Rows) { #region 配本商品檔:VDS_ALO_DIS_ITEM ParameterList.Clear(); ParameterList.Add(dr["CREATEDATE"]); ParameterList.Add(dr["CREATEUID"]); ParameterList.Add(vDisNo); ParameterList.Add(dr["ITEM"]); ParameterList.Add(dr["PERIOD"]); ParameterList.Add(DBNull.Value); ParameterList.Add(DBNull.Value); ParameterList.Add(dr["DIS_QTY"]); ParameterList.Add(dr["ACCEPT_QTY"]); ParameterList.Add(dr["DIS_STO_QTY"]); ParameterList.Add(DBNull.Value); ParameterList.Add(DBNull.Value); ParameterList.Add(DBNull.Value); ParameterList.Add(DBNull.Value); ParameterList.Add(DBNull.Value); ParameterList.Add(DBNull.Value); ParameterList.Add(DBNull.Value); ParameterList.Add(DBNull.Value); ParameterList.Add(DBNull.Value); ParameterList.Add(DBNull.Value); ParameterList.Add(dr["TAX_TYPE"]); ParameterList.Add(dr["ROOT_NO"]); ParameterList.Add(dr["PMA"]); ParameterList.Add(dr["PATTERN_NO"]); ParameterList.Add(DBNull.Value); ParameterList.Add(DBNull.Value); ParameterList.Add(DBNull.Value); ParameterList.Add(DBNull.Value); ParameterList.Add(DBNull.Value); bResult = DBO_ITEM.doCreateDisItem(ParameterList, DBT); if (!bResult) throw new Exception(string.Format("寫入 {0} 發生失敗", "配本商品檔:VDS_ALO_DIS_ITEM")); #endregion #region 配本通路檔:VDS_ALO_DIS_CHAN ParameterList.Clear(); ParameterList.Add(vDisNo); ParameterList.Add(dr["ITEM"]); ParameterList.Add(dr["PERIOD"]); ParameterList.Add(dtDisMain.Rows[0]["RCHAN_NO"]); ParameterList.Add(DBNull.Value); ParameterList.Add(dr["CREATEDATE"]); ParameterList.Add(dr["CREATEUID"]); ParameterList.Add(DBNull.Value); //2009-05-04 cyhsu add for V_DIS_PRE_CQTY ParameterList.Add(dtDisMain.Rows[0]["ST_ACCEPT_DATE"]); bResult = DBO_CHAN.doCreateDisChan(ParameterList, DBT); if (!bResult) throw new Exception(string.Format("寫入 {0} 發生失敗", "配本通路檔:VDS_ALO_DIS_CHAN")); #endregion #region 配本門市檔:VDS_ALO_DIS_STORE if (dtDisStore != null && dtDisStore.Rows.Count > 0) { foreach (DataRow dr2 in dtDisStore.Rows) { strCode = string.Format("{0}_{1}_{2}_{3}_{4}", vDisNo, dr2["ITEM"].ToString().Trim(), dr2["PERIOD"].ToString().Trim(), dtDisMain.Rows[0]["RCHAN_NO"].ToString().Trim(), dr2["STORE"].ToString().Trim()); if (strCode != strCodeLast) { ParameterList.Clear(); ParameterList.Add(strCode); ParameterList.Add(dr2["UPDATEDATE"]); ParameterList.Add(dr2["UPDATEUID"]); ParameterList.Add(vDisNo); ParameterList.Add(dr2["ITEM"]); ParameterList.Add(dr2["PERIOD"]); ParameterList.Add(dtDisMain.Rows[0]["RCHAN_NO"]); ParameterList.Add(dr2["STORE"]); //ParameterList.Add(dr2["ROUTE"]);//是否需要? doCreateDisCRMStore 參數不相符 //ParameterList.Add(dr2["STEP"]); ParameterList.Add(dr2["DIS_QTY"]); ParameterList.Add(dr2["PO_SOURCE_NO"]); ParameterList.Add(dtDisMain.Rows[0]["ST_ACCEPT_DATE"]); bResult = DBO_STORE.doCreateDisCRMStore(ParameterList, DBT); } strCodeLast = string.Format("{0}_{1}_{2}_{3}_{4}", vDisNo, dr2["ITEM"].ToString().Trim(), dr2["PERIOD"].ToString().Trim(), dtDisMain.Rows[0]["RCHAN_NO"].ToString().Trim(), dr2["STORE"].ToString().Trim()); } } if (!bResult) throw new Exception(string.Format("寫入 {0} 發生失敗", "配本門市檔:VDS_ALO_DIS_STORE")); #endregion #region 呼叫 PKG_VDS_ALO_COMM.lf_area_qty ParameterList.Clear(); ParameterList.Add(vDisNo); ParameterList.Add(dr["ITEM"]); ParameterList.Add(dr["PERIOD"]); ParameterList.Add(dtDisMain.Rows[0]["RCHAN_NO"]); ParameterList.Add("X"); bResult = DBO_COMM.doLp_area_disqty(ParameterList, DBT); if (!bResult) throw new Exception(string.Format("{0} 發生失敗", "呼叫 PKG_VDS_ALO_COMM.lf_area_qty")); #endregion } } else { throw new Exception(string.Format("{0} 發生失敗", "呼叫 PKG_VDS_ALO_DIS_MAIN.CreateDisCRMMain")); } #region 交易成功 if (IsRootTranscation) { //獨立呼叫Transcation成立 DBT.Commit(); } #endregion bResult = true; } catch (Exception ex) { #region 交易失敗 bResult = false; if (IsRootTranscation) { //獨立呼叫Transcation失敗 DBT.Rollback(); } #endregion throw GetNewException(ex); } finally { #region 判斷是否關閉交易連線 if (IsRootTranscation) { //獨立呼叫Transcation,關閉連線 if (Conn.State == ConnectionState.Connecting) { Conn.Close(); } } #endregion } return bResult; #endregion }
public bool Lp_area_disqty(ArrayList ParameterList, DbTransaction RootDBT) { #region bool bResult = false; bool IsRootTranscation = false; try { VDS_ALO_COMMON_DBO ALOM = new VDS_ALO_COMMON_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 bResult = ALOM.doLp_area_disqty(ParameterList, RootDBT); ; #region 交易成功 if (IsRootTranscation) { //獨立呼叫Transcation成立 DBT.Commit(); } #endregion } catch (Exception ex) { #region 交易失敗 bResult = false; if (IsRootTranscation) { //獨立呼叫Transcation失敗 DBT.Rollback(); } #endregion throw GetNewException(ex); } finally { #region 判斷是否關閉交易連線 if (IsRootTranscation) { //獨立呼叫Transcation,關閉連線 if (Conn.State == ConnectionState.Connecting) { Conn.Close(); } } #endregion } return bResult; #endregion }