/// <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); } }