Example #1
0
        /// <summary>
        /// 删除专业和专业的子专业(递归)(已有申报奖项的专业,不允许删除)
        /// </summary>
        /// <param name="iSpecialtyID"></param>
        /// <param name="conn"></param>
        /// <param name="trans"></param>
        public static void DeleteSpecialty(int iSpecialtyID, OleDbConnection conn, OleDbTransaction trans = null)
        {
            StringBuilder sbSql = new StringBuilder();

            // 已有申报奖项的专业,不允许删除
            Dal.Models.Specialty mSpecialty = GetSpecialty(iSpecialtyID, conn, trans);

            if ((mSpecialty.PrizeCount ?? 0) > 0 || (mSpecialty.ChildCount ?? 0) > 0 || Declaration.CountInSpecialty(mSpecialty.SpecialtyID.Value, conn, trans) > 0)
            {
                throw new Exception("当前专业已有申报奖项,不能删除!");
            }
            else
            {
                // 删除专业、子专业奖项
                string strSql = " delete FROM Prize WHERE SpecialtyID = ? or SpecialtyID in (select SpecialtyID from dbo.Fn_GetChildSpecialty(?)) ";
                Dal.OleDbHlper.ExecuteNonQuery(strSql, conn, CommandType.Text, trans
                                               , new OleDbParameter("@SpecialtyID", OleDbType.Integer)
                {
                    Value = iSpecialtyID
                }
                                               , new OleDbParameter("@SpecialtyID", OleDbType.Integer)
                {
                    Value = iSpecialtyID
                });

                // 删除专业、子专业附件
                strSql = "delete from Appendix where SpecialtyID = ? or SpecialtyID in (select SpecialtyID from dbo.Fn_GetChildSpecialty(?)) ";
                Dal.OleDbHlper.ExecuteNonQuery(strSql, conn, CommandType.Text, trans
                                               , new OleDbParameter("@SpecialtyID", OleDbType.Integer)
                {
                    Value = iSpecialtyID
                }
                                               , new OleDbParameter("@SpecialtyID", OleDbType.Integer)
                {
                    Value = iSpecialtyID
                });

                // 删除专业、子专业图集
                strSql = "delete from Atlas where SpecialtyID = ? or SpecialtyID in (select SpecialtyID from dbo.Fn_GetChildSpecialty(?)) ";
                Dal.OleDbHlper.ExecuteNonQuery(strSql, conn, CommandType.Text, trans
                                               , new OleDbParameter("@SpecialtyID", OleDbType.Integer)
                {
                    Value = iSpecialtyID
                }
                                               , new OleDbParameter("@SpecialtyID", OleDbType.Integer)
                {
                    Value = iSpecialtyID
                });

                // 删除专业、子专业
                strSql = " delete FROM Specialty WHERE SpecialtyID = ? or SpecialtyID in (select SpecialtyID from dbo.Fn_GetChildSpecialty(?)) ";
                Dal.OleDbHlper.ExecuteNonQuery(strSql, conn, CommandType.Text, trans
                                               , new OleDbParameter("@SpecialtyID", OleDbType.Integer)
                {
                    Value = iSpecialtyID
                }
                                               , new OleDbParameter("@SpecialtyID", OleDbType.Integer)
                {
                    Value = iSpecialtyID
                });

                // 重排序号
                ResetOrdinal(mSpecialty.ActivityID.Value, mSpecialty.ParentID, conn, trans);
            }
        }