📄 datamanager.cpp
字号:
void __fastcall TDataManagerForm::CancelBtnClick(TObject *Sender)
{
switch(PageControl1->ActivePage->TabIndex )
{
//对PageControl1中的EduMngTabSht,DepartTabSht,StuTabSht,CourseTabSht,
// GradeTabSht,StudyPlanTabSht1对应地数据表进行取消操作
case 0:
DataMod->EduManagQuery->Cancel() ;
break ;
case 1:
DataMod->DepartmentQuery->Cancel() ;
break ;
case 2:
DataMod->StudentQuery->Cancel() ;
break ;
case 3:
DataMod->CourseQuery->Cancel() ;
break ;
case 4:
DataMod->GradeQuery->Cancel() ;
break ;
case 5:
Edit1->Text = "" ;
Edit2->Text = "" ;
Edit3->Text = "" ;
Edit4->Text = "" ;
break ;
}
}
//---------------------------------------------------------------------------
void __fastcall TDataManagerForm::PostBtnClick(TObject *Sender)
{
switch(PageControl1->ActivePage->TabIndex )
{
//对PageControl1中的EduMngTabSht,DepartTabSht,StuTabSht,CourseTabSht,
// GradeTabSht,StudyPlanTabSht1对应地数据表进行提交操作
case 0:
if(DataMod->EduManagQuery->State == dsInsert
||DataMod->EduManagQuery->State == dsEdit )
DataMod->EduManagQuery->Post() ;
break ;
case 1:
if(DataMod->DepartmentQuery->State == dsInsert
||DataMod->DepartmentQuery->State == dsEdit )
DataMod->DepartmentQuery->Post() ;
break ;
case 2:
if(DataMod->StudentQuery->State == dsInsert
||DataMod->StudentQuery->State == dsEdit )
DataMod->StudentQuery->Post() ;
break ;
case 3:
if(DataMod->CourseQuery->State == dsInsert
||DataMod->CourseQuery->State == dsEdit )
DataMod->CourseQuery->Post() ;
break ;
case 4:
if(DataMod->GradeQuery->State == dsInsert
||DataMod->GradeQuery->State == dsEdit )
DataMod->GradeQuery->Post() ;
break ;
case 5:
//StudyPlanTabSht1中的Edit1,Edit2必须在选择相应地学生和课程信息后,
//才可以完成提交功能
if (Edit1->Text == "请选择" || Edit2->Text == "请选择")
MessageBox(NULL,"此为非法记录,请重新选择!","警告",MB_OK) ;
else
{
//查询Grade.db表中是否存在数据记录
AnsiString queryString2 = "Select * from Grade " ;
DataMod->GeneralQuery->Active = false ;
DataMod->GeneralQuery->SQL->Clear() ;
DataMod->GeneralQuery->SQL->Add(queryString2) ;
DataMod->GeneralQuery->ExecSQL() ;
DataMod->GeneralQuery->Active = true ;
int TableNum2 = DataMod->GeneralQuery->RecordCount ;
if(TableNum2 ==0)
{
//若是空的,则把第一条记录的GradeNo赋值为1
AnsiString otherQuery = "INSERT INTO Grade(GradeNo,StudentNo,CourseNo," ;
otherQuery += "CourseKind,Term,PlanCourse) VALUES (\"1\",\"";
otherQuery += m_strStudentNo ;
otherQuery += "\",\"" ;
otherQuery += m_strCourseNo ;
otherQuery += "\",\"" ;
otherQuery += m_strCouresKind ;
otherQuery += "\",\"" ;
otherQuery += m_strTerm ;
//默认PlanCourse字段的值为“是”
otherQuery += "\",\"是\")" ;
DataMod->GeneralQuery->Active = false ;
DataMod->GeneralQuery->SQL->Clear() ;
DataMod->GeneralQuery->SQL->Add(otherQuery) ;
DataMod->GeneralQuery->ExecSQL() ;
}
else
{
//若不是空的,则做以下操作
//查询Grade.db表中是否存在相同的数据记录
AnsiString queryString1 = "Select * from Grade where PlanCourse=\"是\" " ;
queryString1 += " and StudentNo = \"" ;
queryString1 += m_strStudentNo ;
queryString1 += "\" and CourseNo = \"" ;
queryString1 += m_strCourseNo ;
queryString1 += "\"" ;
DataMod->GeneralQuery->Active = false ;
DataMod->GeneralQuery->SQL->Clear() ;
DataMod->GeneralQuery->SQL->Add(queryString1) ;
DataMod->GeneralQuery->ExecSQL() ;
DataMod->GeneralQuery->Active = true ;
int TableNum = DataMod->GeneralQuery->RecordCount ;
//选出Grade表中GradeNo字段的最大值
AnsiString queryStringNo = "Select MAX(GradeNo) as MaxGradeNo from Grade " ;
DataMod->GeneralQuery->Active = false ;
DataMod->GeneralQuery->SQL->Clear() ;
DataMod->GeneralQuery->SQL->Add(queryStringNo) ;
DataMod->GeneralQuery->ExecSQL() ;
DataMod->GeneralQuery->Active = true ;
int strGradeNo =StrToInt(DataMod->GeneralQuery->FieldValues["MaxGradeNo"]) ;
//进行判断,若已存在相同的数据记录,则给以警告
if (TableNum != 0)
MessageBox(NULL,"数据库中已存在此记录!","警告",MB_OK) ;
else
{
//若不存在相同的数据记录,则把相应地数据记录插入到Grade表中
AnsiString otherQuery = "INSERT INTO Grade(GradeNo,StudentNo,CourseNo," ;
otherQuery += "CourseKind,Term,PlanCourse) VALUES (\"";
//把选出的GradeNo字段的最大值+1,作为下一条记录的记录号
otherQuery += strGradeNo+1 ;
otherQuery += "\",\"" ;
otherQuery += m_strStudentNo ;
otherQuery += "\",\"" ;
otherQuery += m_strCourseNo ;
otherQuery += "\",\"" ;
otherQuery += m_strCouresKind ;
otherQuery += "\",\"" ;
otherQuery += m_strTerm ;
//默认PlanCourse字段的值为“是”
otherQuery += "\",\"是\")" ;
DataMod->GeneralQuery->Active = false ;
DataMod->GeneralQuery->SQL->Clear() ;
DataMod->GeneralQuery->SQL->Add(otherQuery) ;
DataMod->GeneralQuery->ExecSQL() ;
}
}
}
break ;
}
}
//---------------------------------------------------------------------------
void __fastcall TDataManagerForm::DeleteBtnClick(TObject *Sender)
{
AnsiString DepartNo ;
TMsgDlgButtons Btns ;
Btns<<mbYes<<mbNo ;
AnsiString str = "确定要删除?" ;
switch(PageControl1->ActivePage->TabIndex )
{
//对PageControl1中的EduMngTabSht,DepartTabSht,StuTabSht,CourseTabSht,
// GradeTabSht,StudyPlanTabSht2对应地数据表进行删除操作
case 0:
if(MessageDlg(str,mtInformation,Btns,0) == ID_YES)
DataMod->EduManagQuery->Delete() ;
break ;
case 1:
//若要删除一个系,则该系中的所有学生记录(在Student.db表中)也会被删除掉
//但这些学生在Grade.db数据表中记录,还是存在的,
//原因是考虑到这些学生有可能会转系,或其他的原因等等。
//因此这些学生在Grade.db数据表中记录应该要保存下来
str = "确定要删除该系及其该系中所有学生的记录?" ;
if(MessageDlg(str,mtInformation,Btns,0) == ID_YES)
{
DepartNo = DataMod->DepartmentQuery->FieldValues["DepartNo"] ;
DataMod->StudentDelQuery->ParamByName("DepartNo")->AsString = DepartNo ;
DataMod->StudentDelQuery->ExecSQL() ;
DataMod->DepartmentQuery->Delete() ;
}
break ;
case 2:
if(MessageDlg(str,mtInformation,Btns,0) == ID_YES)
DataMod->StudentQuery->Delete() ;
break ;
case 3:
if(MessageDlg(str,mtInformation,Btns,0) == ID_YES)
DataMod->CourseQuery->Delete() ;
break ;
case 4:
if(MessageDlg(str,mtInformation,Btns,0) == ID_YES)
DataMod->GradeQuery->Delete() ;
break ;
case 6:
if(MessageDlg(str,mtInformation,Btns,0) == ID_YES)
DataMod->GeneralQuery->Delete() ;
break ;
}
}
//---------------------------------------------------------------------------
void __fastcall TDataManagerForm::Button1Click(TObject *Sender)
{
Close() ;
}
//---------------------------------------------------------------------------
void __fastcall TDataManagerForm::Button3Click(TObject *Sender)
{
//进入“选择课程”对话框,选择所要的课程记录
TSelectCourseDlg *SelectCourseDlg = new TSelectCourseDlg(this) ;
if(SelectCourseDlg->ShowModal() == mrOk )
{
AnsiString otherQuery = "Select * from Course where CourseNo = \"" ;
otherQuery += SelectCourseDlg->m_strSelCourseNo ;
otherQuery += "\"" ;
DataMod->CourseQuery->SQL->Clear() ;
DataMod->CourseQuery->SQL->Add(otherQuery) ;
DataMod->CourseQuery->ExecSQL() ;
DataMod->CourseQuery->Active = true ;
}
delete SelectCourseDlg ;
Edit2->Text = DataMod->CourseQuery->FieldValues["CourseNo"] ;
m_strCourseNo = Edit2->Text ;
Edit3->Text = DataMod->CourseQuery->FieldValues["CourseKind"] ;
m_strCouresKind = Edit3->Text ;
Edit4->Text = DataMod->CourseQuery->FieldValues["Term"] ;
m_strTerm = Edit4->Text ;
}
//---------------------------------------------------------------------------
void __fastcall TDataManagerForm::Button2Click(TObject *Sender)
{
//进入“选择学生”对话框,选择要对其进行操作的学生
TSelectStudentDlg *SelectStudentDlg = new TSelectStudentDlg(this) ;
if(SelectStudentDlg->ShowModal() == mrOk )
{
AnsiString otherQuery = "Select * from Student where StudentNo = \"" ;
otherQuery += SelectStudentDlg->m_strSelStudentNo ;
otherQuery += "\"" ;
DataMod->StudentQuery->SQL->Clear() ;
DataMod->StudentQuery->SQL->Add(otherQuery) ;
DataMod->StudentQuery->ExecSQL() ;
DataMod->StudentQuery->Active = true ;
}
delete SelectStudentDlg ;
Edit1->Text = DataMod->StudentQuery->FieldValues["StudentNo"] ;
m_strStudentNo = Edit1->Text ;
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -