public DataTable QueryByPick(string PickNo, out int FunNo, out string RemoveNo, out string RemoveReason, out string RemoveDate, out string UpdateID, out string UpdateDate, out string Result, out int MainID, out string UpdateTime)
 {
     try
     {
         DBO.VDS_IVM16_DBO BCOIVM = new DBO.VDS_IVM16_DBO(ref USEDB);
         DataTable dtResult = BCOIVM.QueryByPick(PickNo, out FunNo, out RemoveNo, out RemoveReason, out RemoveDate, out UpdateID, out UpdateDate, out Result, out MainID, out UpdateTime);
         return dtResult;
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
        /// <summary>
        /// 依照揀貨單號建立移轉單
        /// </summary>
        /// <param name="UserID"></param>
        /// <param name="RemoveDate"></param>
        /// <param name="RemoveReason"></param>
        /// <param name="PickNo"></param>
        /// <param name="RootDBT"></param>
        /// <param name="RemoveNo"></param>
        /// <param name="ErrorList"></param>
        /// <returns></returns>
        public bool CreateRemoveByPick(string UserID, string RemoveDate, string RemoveReason, string FunNo, string PickNo,string UpdateTime, DbTransaction RootDBT, out string RemoveNo, out ArrayList ErrorList)
        {
            RemoveNo = string.Empty;

            string MainID = string.Empty;

            bool IsOK = false;

            bool IsRootTranscation = false;

            ArrayList ParameterList = new ArrayList();

            ArrayList ItemQtyList = new ArrayList();

            try
            {
                IsRootTranscation = (RootDBT == null) ? true : false;

                #region 啟動交易或指定RootTranscation

                if (IsRootTranscation)
                {
                    //獨立呼叫啟動Transcation
                    Conn = USEDB.CreateConnection();
                    Conn.Open();
                    DBT = Conn.BeginTransaction();
                }
                else
                {
                    DBT = RootDBT;
                }

                #endregion


                DBO.VDS_IVM16_DBO BCOIVM = new DBO.VDS_IVM16_DBO(ref USEDB);

                ParameterList.Clear();
                ParameterList.Add(PickNo);
                DataTable dtCreate = BCOIVM.GetRemoveDataByPick(ParameterList);

                DBO.MaintainRemoveData BCO = new DBO.MaintainRemoveData(strConn);

                ParameterList.Clear();
                ParameterList.Add(UserID);
                ParameterList.Add(RemoveDate);
                ParameterList.Add(RemoveReason);

                if (FunNo == "8" || FunNo == "6")
                {
                    //拆開之前判斷有沒有空間
                    //建立新的DATATABLE儲存SUMMARY的移出儲位及儲位數量
                    DataTable dtSpace = new DataTable();
                    dtSpace.Columns.Add("OutLocateSection");
                    dtSpace.Columns.Add("InLocateSection"); //充數欄位
                    dtSpace.Columns.Add("Item");
                    dtSpace.Columns.Add("Period");
                    dtSpace.Columns.Add("Remove_Qty");

                    //計算移出欄位數量,並加總

                    for (int i = 0; i < dtCreate.Rows.Count; i++)
                    {
                        string OutLocateSection = dtCreate.Rows[i][0].ToString();
                        string InLocateSection = "";
                        string Item = dtCreate.Rows[i][2].ToString();
                        string Period = dtCreate.Rows[i][3].ToString();
                        string RemoveQty = dtCreate.Rows[i][4].ToString();

                        bool HaveSec = false;
                        int U = -1;

                        for (int x = 0; x < dtSpace.Rows.Count; x++)
                        {
                            if (OutLocateSection == dtSpace.Rows[x]["OutLocateSection"].ToString() &&
                               Item == dtSpace.Rows[x]["Item"].ToString() &&
                               Period == dtSpace.Rows[x]["Period"].ToString())
                            {
                                HaveSec = true;
                                U = x;
                            }
                        }

                        if (HaveSec == true)
                        {
                            dtSpace.Rows[U]["Remove_Qty"] = int.Parse(dtSpace.Rows[U]["Remove_Qty"].ToString()) + int.Parse(RemoveQty);
                        }
                        else
                        {
                            DataRow drSpace = dtSpace.NewRow();
                            drSpace["OutLocateSection"] = OutLocateSection;
                            drSpace["InLocateSection"] = InLocateSection;
                            drSpace["Item"] = Item;
                            drSpace["Period"] = Period;
                            drSpace["Remove_Qty"] = RemoveQty;
                            dtSpace.Rows.Add(drSpace);
                        }
                    }

                    bool HaveSpace = BCO.CheckSpace(dtSpace, out ErrorList, out ItemQtyList);

                    if (HaveSpace == true)
                    {
                        ParameterList.Add("Y");
                        DataTable dtResult = SplitSectionSecData(dtCreate);
                        IsOK = BCO.CreateRemoveData(ParameterList, dtResult, DBT, out MainID, out RemoveNo, out ErrorList);
                    }
                    else
                    {
                        IsOK = false;
                    }
                }
                else
                {
                    IsOK = BCO.CreateRemoveData(ParameterList, dtCreate, DBT, out MainID, out RemoveNo, out ErrorList);
                }

                if (IsOK == false)
                {
                    return false;
                }

                ParameterList.Clear();
                ParameterList.Add(UserID);
                ParameterList.Add(PickNo);
                ParameterList.Add(RemoveNo);
                ParameterList.Add(RemoveDate);
                ParameterList.Add(UpdateTime);
                BCOIVM.UpdateRemoveNoByPickNo(ParameterList, DBT);

                #region 交易成功

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

                return true;

                #endregion

            }
            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
            }
        }
        /// <summary>
        /// 根據使用者輸入的揀貨單號建立移轉單
        /// </summary>
        /// <param name="UserID">使用者名稱</param>
        /// <param name="RemoveData">移轉單日期</param>
        /// <param name="RemoveReason">移轉原因</param>
        /// <param name="PickNo">揀貨單號</param>
        /// <param name="UpdateTime">更新時間(辨認是否有兩人以上編輯資料)</param>
        /// <param name="RootDBT">交易</param>
        /// <param name="RemoveNo">回傳1.移轉單號</param>
        /// <param name="ErrorList">回轉2.庫存不足的ITEMList(逗點分隔)</param>
        /// <returns>Boolean True:成功 False:失敗</returns>
        public bool CreateRemoveByPickNo(string UserID, string RemoveDate, string RemoveReason, string PickNo, string UpdateTime, DbTransaction RootDBT, out string RemoveNo, out string ErrorList)
        {
            RemoveNo = string.Empty; //移轉單號
            bool IsOk = false; //是否新增成功
            bool IsRootTranscation = false;
            ErrorList = string.Empty;

            ArrayList ParameterList = new ArrayList();

            try
            {
                IsRootTranscation = (RootDBT == null) ? true : false;

                #region 啟動交易或指定RootTranscation

                if (IsRootTranscation)
                {
                    //獨立呼叫啟動Transcation
                    Conn = USEDB.CreateConnection();
                    Conn.Open();
                    DBT = Conn.BeginTransaction();
                }
                else
                {
                    DBT = RootDBT;
                }

                #endregion


                DBO.VDS_IVM15_DBO BCOIVM = new DBO.VDS_IVM15_DBO(ref USEDB);
                ParameterList.Clear();
                ParameterList.Add(PickNo);
                ParameterList.Add(RemoveReason);
                ParameterList.Add(UserID);

                int RecCount = BCOIVM.CreateRemoveByPickNo(ParameterList, out RemoveNo, out ErrorList, DBT);

                if (ErrorList.Length != 0)
                {
                    if (IsRootTranscation)
                    {
                        //獨立呼叫Transcation失敗
                        DBT.Rollback();
                        return false;
                    }
                    else
                    {
                        throw new Exception(ErrorList);
                    }
                }

                DBO.VDS_IVM16_DBO BCO = new DBO.VDS_IVM16_DBO(ref USEDB);

                ParameterList.Clear();
                ParameterList.Add(UserID);
                ParameterList.Add(PickNo);
                ParameterList.Add(RemoveNo);
                ParameterList.Add(RemoveDate);
                ParameterList.Add(UpdateTime);
                BCO.UpdateRemoveNoByPickNo(ParameterList, DBT);

                #region 交易成功

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

                return true;

                #endregion

            }
            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
            }

        }