private void buttonX3_Click(object sender, EventArgs e) { if (MsgBox.Show("您確定要刪除此學年成績?", "", MessageBoxButtons.YesNo) == DialogResult.No) { return; } foreach (XmlElement var in QueryScore.GetSchoolYearEntryScoreBySchoolYearGradeYear(int.Parse(listView1.SelectedItems[0].SubItems[0].Text), int.Parse(listView1.SelectedItems[0].SubItems[1].Text), _CurrentID).GetContent().GetElements("SchoolYearEntryScore")) { RemoveScore.DeleteSchoolYearEntityScore(var.SelectSingleNode("@ID").InnerText); } foreach (XmlElement var in QueryScore.GetSchoolYearSubjectScoreBySchoolYearGradeYear(int.Parse(listView1.SelectedItems[0].SubItems[0].Text), int.Parse(listView1.SelectedItems[0].SubItems[1].Text), _CurrentID).GetContent().GetElements("SchoolYearSubjectScore")) { RemoveScore.DeleteSchoolYearSubjectScore(var.SelectSingleNode("@ID").InnerText); } // 刪除學年成績 log StringBuilder deleteDesc = new StringBuilder(""); deleteDesc.AppendLine("學生姓名:" + Student.Instance.Items[_CurrentID].Name + " "); deleteDesc.AppendLine("刪除 " + listView1.SelectedItems[0].SubItems[0].Text + " 學年度 學年成績"); CurrentUser.Instance.AppLog.Write(EntityType.Student, EntityAction.Delete, _CurrentID, deleteDesc.ToString(), Title, ""); EventHub.Instance.InvokScoreChanged(_CurrentID); }
public override bool Fill() { SubProgress progress = new SubProgress(MainProgress, WeightTable.GetJobWeight("GetYearSubject")); try { Utility.StartTime("GetYearSubject"); progress.ReportMessage("取得學年科目成績資料…"); List <List <string> > packages = Utility.SplitGetPackage(Students, PackageSize); int offset = 1; foreach (List <string> eachPackage in packages) { if (MainProgress.Cancellation) { return(false); //這個部份要看的必須是 MainProgress。 } DSXmlHelper response = QueryScore.GetSchoolYearSubjectScore(true, Parameters.SchoolYear, eachPackage.ToArray()); foreach (XmlElement eachStudent in response.GetElements("SchoolYearSubjectScore")) { DSXmlHelper hlpScore = new DSXmlHelper(eachStudent); string studentId = hlpScore.GetText("RefStudentId"); string scoreId = hlpScore.GetText("@ID"); if (Students.ContainsKey(studentId)) { Student student = Students[studentId]; student.YearSubjects.ScoreRecordIdentity = scoreId; string scoresPath = "ScoreInfo/SchoolYearSubjectScore/Subject"; foreach (XmlElement eachScore in eachStudent.SelectNodes(scoresPath)) { YearSubjectScore objScore = new YearSubjectScore(eachScore); if (!student.YearSubjects.AddSubject(objScore)) { LogDuplicateSubject(progress, student, objScore); } } } } progress.ReportProgress((int)(((float)offset / packages.Count) * 100)); offset++; } progress.ReportProgress(100); Utility.EndTime("GetYearSubject"); return(true); } catch (Exception ex) { progress.ReportException(ex); return(false); } }
public override bool Fill() { SubProgress progress = new SubProgress(MainProgress, WeightTable.GetJobWeight("GetSemsMoral")); try { Utility.StartTime("GetSemsMoral"); progress.ReportMessage("取得學期德行成績資料…"); List <List <string> > packages = Utility.SplitGetPackage(Students, PackageSize); int offset = 1; foreach (List <string> eachPackage in packages) { if (MainProgress.Cancellation) { return(false); //這個部份要看的必須是 MainProgress。 } DSXmlHelper response = QueryScore.GetSemesterEntryScoreBySemester(true, Parameters.SchoolYear, Parameters.Semester, QueryScore.EntryGroup.行為, eachPackage.ToArray()); foreach (XmlElement eachStudent in response.GetElements("SemesterEntryScore")) { DSXmlHelper hlpScore = new DSXmlHelper(eachStudent); string studentId = hlpScore.GetText("RefStudentId"); string scoreId = hlpScore.GetText("@ID"); if (Students.ContainsKey(studentId)) { Student student = Students[studentId]; student.SemsMoral = new SemesterEntry("德行", eachStudent); } } progress.ReportProgress((int)(((float)offset / packages.Count) * 100)); offset++; } progress.ReportProgress(100); Utility.EndTime("GetSemsMoral"); return(true); } catch (Exception ex) { progress.ReportException(ex); return(false); } }
private void ReLoad(object sender, EventArgs e) { _SubjectScoreID = ""; _EntryScoreID1 = ""; _EntryScoreID2 = ""; if (!ValidateSchoolYear()) { return; } #region 科目成績 dataGridViewX1.Rows.Clear(); DSXmlHelper _SubjectResponse = QueryScore.GetSchoolYearSubjectScore(true, comboBoxEx1.Text, _StudentID); if (_SubjectResponse.GetElement("SchoolYearSubjectScore") != null) { if (comboBoxEx3.Text == "") { comboBoxEx3.Text = _SubjectResponse.GetElement("SchoolYearSubjectScore/GradeYear").InnerText; } else { if (comboBoxEx3.Text != _SubjectResponse.GetElement("SchoolYearSubjectScore/GradeYear").InnerText) { MsgBox.Show("發現同一學年度出現兩筆不同成績年級之資料。"); } } #region 建立排名相關物件 _subject_rating = new SubjectScoreToolTipProvider(_SubjectResponse.GetElement("SchoolYearSubjectScore/ClassRating"), _SubjectResponse.GetElement("SchoolYearSubjectScore/DeptRating"), _SubjectResponse.GetElement("SchoolYearSubjectScore/YearRating")); #endregion beforeXml.AddElement("SubjectGradeYear", "GradeYear", comboBoxEx3.Text); _SubjectScoreID = _SubjectResponse.GetElement("SchoolYearSubjectScore").GetAttribute("ID"); foreach (XmlElement var in _SubjectResponse.GetElements("SchoolYearSubjectScore/ScoreInfo/SchoolYearSubjectScore/Subject")) { beforeXml.AddElement("SubjectCollection", var); DataGridViewRow row = new DataGridViewRow(); row.CreateCells(dataGridViewX1, var.GetAttribute("科目"), var.GetAttribute("學年成績"), var.GetAttribute("結算成績") == "" ? var.GetAttribute("學年成績") : var.GetAttribute("結算成績"), var.GetAttribute("補考成績"), var.GetAttribute("重修成績"), var.GetAttribute("校部定"), var.GetAttribute("必選修"), var.GetAttribute("識別學分數") ); row.Cells[0].ToolTipText = _subject_rating.GetTooltip(row); dataGridViewX1.Rows.Add(row); } } #endregion #region 分項成績 textBoxX1.Text = ""; textBoxX2.Text = ""; textBoxX3.Text = ""; textBoxX4.Text = ""; textBoxX5.Text = ""; textBoxX6.Text = ""; textBoxX7.Text = ""; DSXmlHelper _EntryResponse = QueryScore.GetSchoolYearEntryScore(true, comboBoxEx1.Text, null, _StudentID); foreach (XmlElement var in _EntryResponse.GetElements("SchoolYearEntryScore")) { if (comboBoxEx3.Text == "") { comboBoxEx3.Text = var.SelectSingleNode("GradeYear").InnerText; } else { if (comboBoxEx3.Text != var.SelectSingleNode("GradeYear").InnerText) { MsgBox.Show("發現同一學年度出現兩筆不同成績年級之資料。"); } } string id = var.GetAttribute("ID"); switch (var.SelectSingleNode("EntryGroup").InnerText) { case "學習": _EntryScoreID1 = id; _score_rating = new EntryScoreToolTipProvider("學業", var); break; case "行為": _EntryScoreID2 = id; _moral_rating = new EntryScoreToolTipProvider("德行", var); break; default: throw new Exception("拎唄謀洗鰓機雷EntryGroup: \"" + var.SelectSingleNode("EntryGroup").InnerText + "\""); } foreach (XmlNode score in var.SelectNodes("ScoreInfo/SchoolYearEntryScore/Entry")) { XmlElement element = (XmlElement)score; beforeXml.AddElement("EntryCollection", element); #region 依分項填入格子 switch (element.GetAttribute("分項")) { case "學業": textBoxX1.Text = element.GetAttribute("成績"); _score_rating.SetTooltip(textBoxX1); _score_rating.SetTooltip(labelX3); break; case "體育": textBoxX3.Text = element.GetAttribute("成績"); break; case "國防通識": textBoxX4.Text = element.GetAttribute("成績"); break; case "健康與護理": textBoxX5.Text = element.GetAttribute("成績"); break; case "實習科目": textBoxX6.Text = element.GetAttribute("成績"); break; case "專業科目": textBoxX7.Text = element.GetAttribute("成績"); break; case "德行": textBoxX2.Text = element.GetAttribute("成績"); _moral_rating.SetTooltip(textBoxX2); _moral_rating.SetTooltip(labelX4); break; default: //throw new Exception("拎唄謀洗鰓機雷分項: " + element.GetAttribute("分項")); break; } #endregion } } #endregion }
void _bkwEntryLoader_DoWork(object sender, DoWorkEventArgs e) { e.Result = QueryScore.GetSchoolYearEntryScore(e.Argument.ToString()); }
void _bkwSubjectLoader_DoWork(object sender, DoWorkEventArgs e) { e.Result = QueryScore.GetSemesterSubjectScore(e.Argument.ToString()); }
private void btnArchive_Click(object sender, EventArgs e) { CreateUDTTable(); //寫入log StringBuilder sb_log = new StringBuilder(); //封存 (複製sems_subj_score 和 sems_entry_score) if (MsgBox.Show("確定將" + listView1.SelectedItems[0].SubItems[0].Text + "-" + listView1.SelectedItems[0].SubItems[1].Text + "學期成績,複製到「學期成績(封存)」?", "", MessageBoxButtons.YesNo) == DialogResult.No) { return; } UpdateHelper updateHelper = new UpdateHelper(); QueryHelper qh = new QueryHelper(); int uid = 0; string searchSql = "SELECT id FROM sems_subj_score WHERE ref_student_id ={0} AND school_year={1} AND semester={2}"; searchSql = string.Format(searchSql, _CurrentID, listView1.SelectedItems[0].SubItems[0].Text, listView1.SelectedItems[0].SubItems[1].Text); DataTable searchIDdt = qh.Select(searchSql); if (searchIDdt.Rows.Count > 0) { try { foreach (XmlElement var in QueryScore.GetSemesterEntryScoreBySemester(int.Parse(listView1.SelectedItems[0].SubItems[0].Text), int.Parse(listView1.SelectedItems[0].SubItems[1].Text), _CurrentID).GetContent().GetElements("SemesterEntryScore")) { //複製學期分項成績(不複製德行成績) string sql = @"INSERT INTO $semester_entry_score_archive (ref_student_id,school_year,semester, grade_year, score_info) SELECT ref_student_id,school_year,semester, grade_year, score_info FROM sems_entry_score WHERE entry_group=1 AND id={0} RETURNING uid"; sql = string.Format(sql, var.SelectSingleNode("@ID").InnerText); //updateHelper.Execute(sql); //取得回傳的uid讓$semester_subject_score_archive 寫入ref_sems_entry_uid DataTable dt = qh.Select(sql); foreach (DataRow dr in dt.Rows) { uid = int.Parse(dr["uid"].ToString()); } } } catch (Exception ex) { MsgBox.Show("取得學生學期分項成績發生錯誤。" + ex.Message); } try { foreach (XmlElement var in QueryScore.GetSemesterSubjectScoreBySemester(int.Parse(listView1.SelectedItems[0].SubItems[0].Text), int.Parse(listView1.SelectedItems[0].SubItems[1].Text), _CurrentID).GetContent().GetElements("SemesterSubjectScore")) { //複製學期科目成績 string sql = @"INSERT INTO $semester_subject_score_archive (ref_student_id,school_year,semester, grade_year, score_info,ref_sems_entry_uid) SELECT ref_student_id,school_year,semester, grade_year, score_info ,{0} FROM sems_subj_score WHERE id={1} "; sql = string.Format(sql, uid, var.SelectSingleNode("@ID").InnerText); updateHelper.Execute(sql); } } catch (Exception ex) { MsgBox.Show("取得學生學期科目成績發生錯誤。" + ex.Message); return; } sb_log.AppendLine("複製學生「" + Student.Instance.Items[_CurrentID].Name + "(學號" + Student.Instance.Items[_CurrentID].StudentNumber + ")」" + listView1.SelectedItems[0].SubItems[0].Text + "學年度第" + listView1.SelectedItems[0].SubItems[1].Text + "學期的學期成績至「學期成績(封存)」。"); FISCA.LogAgent.ApplicationLog.Log("學期成績", "封存", "學生", Student.Instance.Items[_CurrentID].ID, sb_log.ToString()); MsgBox.Show("封存成功。"); //todo 封存後,更新封存資料項目。 EventHub.OnArchiveChanged(); //Cynthia } else { MsgBox.Show(listView1.SelectedItems[0].SubItems[0].Text + "學年度第" + listView1.SelectedItems[0].SubItems[1].Text + "學期沒有科目成績。"); } }