public DataTable QuerySwitch(QueryType QT, ArrayList ParameterList ) { DBO.STM_StoreMappingDBO dbo = new STM_StoreMappingDBO(ref USEDB); DataTable Dt; try { switch (QT) { case QueryType.ALL: Dt = dbo.doQueryAll(); break; case QueryType.CODE: Dt = dbo.doQueryByCode(ParameterList); break; case QueryType.ID: Dt = dbo.doQueryByID(ParameterList); break; default: Dt = new DataTable(); break; } return Dt; } catch (Exception ex) { throw ex; } }
public DataTable QueryByCode(ArrayList ParameterList) { try { DBO.STM_StoreMappingDBO dbo = new STM_StoreMappingDBO(ref USEDB); return dbo.doQueryByCode(ParameterList); } catch (Exception ex) { throw ex; } }
public DataTable QueryByALL() { try { DBO.STM_StoreMappingDBO dbo = new STM_StoreMappingDBO(ref USEDB); return dbo.doQueryAll(); } catch (Exception ex) { throw ex; } }
/// <summary> /// 處理存檔BCO /// </summary> /// <param name="ParameterList">輸入變數</param> /// <param name="RootDBT">是否有主交易,無主交易輸入null</param> /// <returns>回傳更新成功與否</returns> public bool doSave(ArrayList ParameterList, DataTable newDt, DataTable oldDt, DbTransaction RootDBT) { #region bool IsRootTranscation = false; bool bResult = true; try { DBO.STM_StoreMappingDBO dbo = new STM_StoreMappingDBO(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 ParameterList.Add(oldDt.Columns.Contains("SPEC_CHAN_NO") ? "Y" : "N"); ParameterList.Add(oldDt.Columns.Contains("SPEC_STORE") ? "Y" : "N"); ParameterList.Add(newDt.Columns.Contains("SPEC_CHAN_NO") ? "Y" : "N"); ParameterList.Add(newDt.Columns.Contains("SPEC_STORE") ? "Y" : "N"); if (oldDt == null || oldDt.Rows.Count == 0) { foreach (DataRow dRow in newDt.Rows) { #region 在舊來源無資料,所以要呼叫 insert 明細 dbo.doCreate(ParameterList, 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["STORE"].ToString() == dRow_Oringinal["STORE"].ToString()) { if (dRow["GROUP_NO"].ToString() != dRow_Oringinal["GROUP_NO"].ToString() || dRow["CHAN_NO"].ToString() != dRow_Oringinal["CHAN_NO"].ToString() || (newDt.Columns.Contains("SPEC_CHAN_NO") ? dRow["SPEC_CHAN_NO"].ToString() : "") != (oldDt.Columns.Contains("SPEC_CHAN_NO") ? dRow_Oringinal["SPEC_CHAN_NO"].ToString() : "") || (newDt.Columns.Contains("SPEC_STORE") ? dRow["SPEC_STORE"].ToString() : "") != (oldDt.Columns.Contains("SPEC_STORE") ? dRow_Oringinal["SPEC_STORE"].ToString() : "")) { dbo.doUpdate(ParameterList, dRow, dRow_Oringinal, DBT); } storeExistFlag = true; break; } } if (!storeExistFlag) { dbo.doCreate(ParameterList, 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["STORE"].ToString() == dRow_Oringinal["STORE"].ToString()) { storeExistFlag = true; break; } } } if (!storeExistFlag) { #region 在新來源找不到此筆資料,所以要呼叫 delete 明細 dbo.doDelete(dRow_Oringinal, DBT,(oldDt.Columns.Contains("SPEC_CHAN_NO") ? "Y" : "N"),(oldDt.Columns.Contains("SPEC_STORE") ? "Y" : "N")); #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 }
public DataTable QueryByFind(ArrayList ParameterList, int RowCountLimit) { try { DBO.STM_StoreMappingDBO dbo = new STM_StoreMappingDBO(ref USEDB); return dbo.doQueryByFind(ParameterList, RowCountLimit); } catch (Exception ex) { throw ex; } }