广西地震工程分析信息系统平台属性数据库的设(3)
标签页仅仅实现了对数据库的相关操作,但是当主页面切换到显示各个标签页时,主页面上部是一个TabCtrl控件,它用来实现各个标签页的切换,在主页面的下部,则相应的显示每次切换后的各个标签页对应的表中的数据。也就是说,各个标签页对应的表是在主页面中显示的,而不是在各个标签页中实现的。在主页面中,为了通过TabCtrl来实现各个标签页的切换,必须在它的类中包含各个标签页对应的类的头文件;但是各个标签页对应的表要能够在主页面中显示,就必须将该类的对象传回主对话框,也就是说,需要包含主对话框对应的类的头文件,这样就产生了嵌套包含。解决这一问题的方法是:在主页面对应的类的文件中,包含BoreProjBasicData、BoreBoreData、BoreGeneLayerData、BoreSoilExpData、BoreWaterExpData、BoreNomPosiData各个标签页对应的类的头文件,也使得主页面的上部的TabCtrl控件得以正常工作,为了使主对话框下部也同样能得以正常工作,需要在标签页的头文件(.h文件)中声明主页面对应的类,同时添加一个主页面对应的类的指针,在文件中包含主页面对应的类的头文件。在各标签页的头文件中(以CDamBuilding类为例),添加CMyDialog类的对象的声明class CMyDialog,并且添加相应的指针CMyDialog* m_pDialogControl,在文件的OnInitialUpdate()函数中,对各个标签页中声明的CMyDialog类型的指针进行初始化。这样,在主页面对应的类中就可以将对象传递给各个标签页对应的类中,同时标签页就添加了主页面对应的类的指针,在标签页的.cpp文件中就可以使用这个指针对主页面进行操作了。
4 数据编辑功能实现
对数据库各表操作包括添加、修改、删除等。为了方便对这个数据库中的各个表进行操作。每个表设计了一个对应的标签页对话框(即对话框类),在各个对话框类中,添加四个button,分别对应添加、修改、删除以及退出功能。在添加操作中,为了确保添加的记录主码不能重复,需要在添加前对添加记录的主码与数据库中主码进行比较,判断添加的记录的主码在数据库中是否存在,因为数据库表中的主码一般为char型,是一个固定长度的字段,每个记录的主码不完全等长,相互比较时,数据库中每条记录后面的空格也作为字符串的一位参与比较,这样,即使实际主码相同,比较结果却不同,因此需要编写一个函数StrChange(Cstring,str)去掉主码(字符串)前后的空格,具体代码此处不作详述。为了添加一条记录后能够立即显示,可通过添加一条记录后再查询一遍数据库达到目的,将再次查询数据库的代码封装成一个函数ExeSelect(),添加一条记录后,直接调用该函数就可以了,其实现代码为:
tempSQL="select * from BORE_BoreData";
strSQL=tempSQL;
m_RecordsetPtr=m_(strSQL);
添加、修改、删除操作分别通过OnBnClickedButtonAdd()、OnBnClickedButtonUpdate()、OnBnClickedButtonDelete()三个函数完成。这里以修改为例,其代码如下:
void CDamBuilding::OnBnClickedButtonUpdate()
{
UpdateData(TRUE);
("update Dam_Building set Building_Name='%s',Building_Type='%s',Building_Age='%s',Building_Pos='%s',Building_Layer=%d,Defen_Series=%d,Eq_Series_Max=%d,Eq_Series_Min=%d,Area_Type='%s',Damage_Degree='%s',Eq _ID='%s',Data_Source='%s' where Damage_ID='%s'",m_Building_Name,m_Building_Type,m_Building_Age,m_Building_Pos,m_Building_ Layer,m_Defen_Series,m_Eq_Series_Max,m_Eq_Series_Min,m_Area_Type,m_Damage_Degree,m_Eq_ID,m_Data_Source,m_Damage_ID);
strSQL=tempSQL;
m_(strSQL);
ExeSelect();
m_pDialogControl->SetRecordsetPtr(m_RecordsetPtr);
m_pDialogControl->InitGridCtrl();
}
5 结束语
在当今日新月异的信息时代,地理信息系统技术已成为人们管理各种信息的工具,早已深入到社会的各个角落,为适应地震工程数据类型复杂和数据量大的特点,充分、迅速、有效地利用地震工程成果数据,研制开发一个简单、灵活、可靠的地震工程分析信息系统平台就成了一件十分重要的事情。广西地震工程分析信息系统平台是基于MapGIS K9开发的集空间和属性数据管理为一体的专业信息系统。属性数据库管理系统是整个平台的一部分,按不同的专题内容设计成8个属性数据库,实现了成果数据的动态存储和管理,每个数据库都有添加、修改、删除、显示功能,能够及时更新、显示数据库中的内容,但是由于时间和其他原因,系统在用户需求分析方面还不够深入,功能比较简单,将来仍有许多地方需要改进和完善。
文章来源:《世界地震工程》 网址: http://www.sjdzgczz.cn/qikandaodu/2021/0308/442.html
上一篇:高烈度区高层隔震结构研究新进展与应用
下一篇:大型地下洞室群地震动输入机制探讨