private void btnLoad_Click(object sender, EventArgs e) { if (MainClass.IsCryptoMain() || MainClass.IsPasha()) { try { using (PriemEntities context = new PriemEntities()) { using (TransactionScope transaction = new TransactionScope(TransactionScopeOption.RequiresNew)) { int marksCount = 0; foreach (DataGridViewRow dgvr in dgvMarks.Rows) { string balWr = dgvr.Cells["Баллы (письм)"].Value == null ? string.Empty : dgvr.Cells["Баллы (письм)"].Value.ToString(); string balOr = dgvr.Cells["Баллы (устные)"].Value == null ? string.Empty : dgvr.Cells["Баллы (устные)"].Value.ToString(); string valWr = dgvr.Cells["Баллы(письм) по аппеляции"].Value == null ? string.Empty : dgvr.Cells["Баллы(письм) по аппеляции"].Value.ToString(); string valOr = dgvr.Cells["Баллы (устные) по аппеляции"].Value == null ? string.Empty : dgvr.Cells["Баллы (устные) по аппеляции"].Value.ToString(); if (string.IsNullOrEmpty(balWr) && string.IsNullOrEmpty(balOr)) { continue; } if (string.IsNullOrEmpty(valWr) && string.IsNullOrEmpty(valOr)) { continue; } Guid persId = new Guid(dgvr.Cells["PersonId"].Value.ToString()); int persNum = int.Parse(dgvr.Cells["Номер"].Value.ToString()); int mrkWrTmp; int mrkOrTmp; int?mrkWr; int?mrkOr; if (string.IsNullOrEmpty(valWr)) { mrkWr = null; } else if (!(int.TryParse(valWr, out mrkWrTmp) && mrkWrTmp >= 0 && mrkWrTmp < 101)) { dgvMarks.CurrentCell = dgvr.Cells["Баллы(письм) по аппеляции"]; WinFormsServ.Error(dgvr.Cells["ФИО"].Value.ToString() + ": неправильно введены данные"); return; } else { mrkWr = mrkWrTmp; } if (string.IsNullOrEmpty(valOr)) { mrkOr = null; } else if (!(int.TryParse(valOr, out mrkOrTmp) && mrkOrTmp >= 0 && mrkOrTmp < 101)) { dgvMarks.CurrentCell = dgvr.Cells["Баллы (устные) по аппеляции"]; WinFormsServ.Error(dgvr.Cells["ФИО"].Value.ToString() + ": неправильно введены данные"); return; } else { mrkOr = mrkOrTmp; } context.ExamsVedHistory_UpdateMarkAppeal(_vedId, persId, persNum, mrkWr); context.ExamsVedHistory_UpdateMarkOralAppeal(_vedId, persId, persNum, mrkOr); DataSet ds = bdc.GetDataSet(string.Format("SELECT Id, EntryId FROM ed.qAbiturient WHERE PersonId = '{0}' AND FacultyId={1} {2}", persId.ToString(), _facultyId, _studybasisId == "" ? "" : " AND ed.qAbiturient.StudyBasisId = " + _studybasisId)); foreach (DataRow row in ds.Tables[0].Rows) { string examInPr = Exams.GetExamInEntryId(_examId, row["EntryId"].ToString()); Guid abitId = new Guid(row["Id"].ToString()); if (string.IsNullOrEmpty(examInPr)) { continue; } int examInEntryId = int.Parse(examInPr); int?sumMark = 0; if (mrkWr == null && mrkOr == null) { sumMark = null; } else { sumMark = (mrkWr ?? 0) + (mrkOr ?? 0); } int cnt = (from mrk in context.qMark where mrk.ExamInEntryId == examInEntryId && mrk.AbiturientId == abitId select mrk).Count(); if (cnt > 0) { context.Mark_updateByAbVedId(abitId, examInEntryId, sumMark, _dateExam, _vedId); marksCount++; } } } transaction.Complete(); MessageBox.Show(marksCount + " записей изменено.", "Выполнено"); } } } catch (Exception exc) { WinFormsServ.Error("Ошибка сохранения данных: \n" + exc.Message); return; } } }