public int CreateStockTake2(ArrayList ParameterList, DataTable dtData, out string V_STOCKTAKE_NO, out string N_ID) { int result; bool IsRootTranscation = false; DBO.MaintainStockTakeDBO db = new MaintainStockTakeDBO(ref USEDB); string strSTOCKTAKE_NO = string.Empty; string strPID = string.Empty; ArrayList Para = new ArrayList(); try { //獨立呼叫啟動Transcation Conn = USEDB.CreateConnection(); Conn.Open(); DBT = Conn.BeginTransaction(); //ParameterList //0.V_LOCATE_SECTION_S //1.V_LOCATE_SECTION_E //2.V_STOCK_DATE //3.V_TAKEUSER_ID //4.CREATEUID //5.CREATEDATE result = db.CreateStockTake2(ParameterList, DBT, out strSTOCKTAKE_NO, out strPID); for (int i = 0; i < dtData.Rows.Count; i++) { Para.Clear(); string strLOCATE_NO = dtData.Rows[i]["LOCATE_NO"].ToString(); string strLOCATE_SECTION = dtData.Rows[i]["LOCATE_SECTION"].ToString(); string strITEM = dtData.Rows[i]["ITEM"].ToString(); string strPERIOD = dtData.Rows[i]["PERIOD"].ToString(); string strONHD_QTY = dtData.Rows[i]["ONHD_QTY"].ToString(); string strSTOCKTAKE_QTY = dtData.Rows[i]["STOCKTAKE_QTY"].ToString(); string strCOST = dtData.Rows[i]["COST"].ToString(); Para.Add(int.Parse(strPID)); Para.Add(strLOCATE_NO + strLOCATE_SECTION); Para.Add(strITEM); Para.Add(strPERIOD); Para.Add(int.Parse(strONHD_QTY)); Para.Add(int.Parse(strSTOCKTAKE_QTY)); Para.Add(strCOST.Trim() == "" ? 0 : double.Parse(strCOST)); Para.Add(ParameterList[4].ToString()); Para.Add(ParameterList[5]); result = db.InsertStockTake2(Para, DBT); } Para.Clear(); Para.Add(ParameterList[4].ToString());//V_CREATEUID Para.Add(ParameterList[5]); //D_CREATEDATE Para.Add(strSTOCKTAKE_NO); //V_STOCKTAKE_NO Para.Add(strPID); //N_ID result = db.CreateStockTake2F(Para, DBT); DBT.Commit(); V_STOCKTAKE_NO = strSTOCKTAKE_NO; N_ID = strPID; return result; } catch (Exception ex) { if (DBT != null) { DBT.Rollback(); } throw ex; } finally { if (Conn.State == ConnectionState.Connecting) { Conn.Close(); } } }