《vba数据库编程答案.docx》由会员分享,可在线阅读,更多相关《vba数据库编程答案.docx(6页珍藏版)》请在第一文库网上搜索。
1、VBA数据库编程技术实验目的1、掌握connection对象2、掌握Recordset对象3、掌握Command对象实验题目9-1COnneCtion对象的具体连接方法:方法1DimconnAsADODB.Connection,定义对象类型Setconn=NewADODB.Connection,将对象初始化conn.ConnectionString=Provider=MicrosoftJet.O1EDB.4.0;DataSource=Eaccessvba数据库编程技术/学生成绩管理.mdb设置连接字符信息conn.open,连接对象翻开conn.C1ose,关闭连接对象Setconn=Noth
2、ing,将连接对象清空方法2DimconnAsADODB.Connection,定义对象类型Setconn=NewADODB.Connection,将对象初始化conn.OpennProvider=Microsoft.Jet.O1EDB.4.0;DataSource=E:/access/vba数据库编程技术/学生成绩管理.mdb;UID=;PWD=conn.C1oseSetconn=Nothing方法3DimconnAsADODB.Connection,定义对象类型Setconn=NewADODB.Connection,将对象初始化conn.OpenCurrentProject.Connect
3、ion,翻开当前正在连接的数据conn.C1oseSetconn=Nothing9-2在9-1的根基上,翻开表单学生信息,利用ReeordSe1对象获取来自“学生成绩管理.mdb中“学生数据表的记录,并显示第一条记录。PrivateSubForm_1oad()DimconnAsADODB.Connection,定义连接对象类型DimrsAsADODB.Recordset定义记录集对象类型Se1rs=NewADODB-Recordset将记录集对象初始化Setconn=NewADODB.Connection,将连接对象初始化conn.OpenProvider=Microsoft.Jet.O1ED
4、B.4.0;DataSource=E:/access/vba数据库编程技术/学生成绩管理.mdb;rs.0pense1ect*from学生,conn,adpenKeyset,ad1ockReadOn1yrs.MoveFirstTeXto.Va1ue=rs(姓名”)TeXt2.Va1ue=rs(“学号”)Text4.Va1ue=rs(“性别”)conn.CJoseSetconn=NothingEndSub9-3翻开表单增加专业,单击增加按钮增加一条关于专业的的新记录:专业编号:p07,专业名称:电子技术,专业负责人:刘容强。PrivateSubCommandO_C1ick()DimconnAsA
5、DODB.Connection,定义连接对象类型DimrsAsADODB.Recordset,定义记录集对象类型Setrs=NewADODB.Recordset,将记录集对象初始化Setconn=NewADODB.Connection,将连接对象初始化conn.OpenProvider=Microsoft.Jet.O1EDB.4.0;DataSource=E:/access/vba数据库编程技术/学生成绩管理.mdb;rs.0pense1ect*from专业”,conn,adpenKeyset,ad1ockOptimisticrs.AddNewrs(”专业编号)=,P07rs(专业名称“)=电
6、子技术”rs(”专业负责人”)二“刘容强”rs.UpdateMsgBox”已完成新记录的添加0+32,“提示”conn.CIoseSetconn=NothingEndSub9-5新建一个过程a,将“专业数据表中专业名称为“公共根基教学的专业负责人姓名改为“郑智强。Pub1icSuba()DimconnAsADODB,Connection,定义对象类型Setconn=NewADODB.Connection,将对象初始化conn.OpenCuentProject.Connection翻开当前正在连接的数据DimCOmmAsADODB.CommandSetcomm=NewADODB.Commandc
7、omm.ActiveConnection=conncomm.CommandText=update专业set专业负责人=,郑智强,Where专业名称=,公共根基教学,“comm.ExecuteMsgBox”已完成修改”,0+32,“提示conn.CIoseSetconn=NothingSetcomm=NothingEndSub9-6翻开“学生成绩管理.mdb”,设计课程成绩统计窗体,运行界面如图9-5所示,要求实现:1、在组合框COmbo1中选择一课程编弓,则对应的课程名称、学分、任课教师、学时分别显示在对应文本框中2、单击“统计按钮,则在对应文本框中显示指定课程的所有参考学生人数、课程平均分、
8、60分以上人数和不及格人数。3、假设未指定具体课程编号就单击“统计”按钮,则显示提示信息。OptionCompareDatabasePrivateSubComboO_Change()DimrsAsADODB.RecordsetSetrs=NewADODB.RecordsetDimsq1strAsStringsq1str=USe1eCt课程名称,学时,学分,姓名from课程,教师where课程.教师编号=教师.教师编号and课程编号ComboO&rs.0pensq1str,CurrentProject.Connection,2,2IfNotrs.EOF()ThenText4=rs(课程名称”)T
9、ext6=rs(“学分”)Text8=rs(姓名”)TeXuO=rs(学时”)EndIfrs.C1oseSetrs=NothingEndSubPrivateSubCommand12_C1ick()DimrsAsADODB.RecordsetSetrs=NewADODB.RecordsetDimsq1strAsStringsq1str=se1ect*from成绩where课程编号=&ComboO&rs.0pensq1str,CurrentProject.Connection,2,2IfNotrs.BOF()OrNotrs.EOF()Thensum=0n=0x=0y=0DoWhi1eNotrs.E
10、OF()sum=sum+rs(成绩)n=n1日改“成绩“)=60111x=x+1E1sey=yiEndIfrs.MoveNext1oopaver=sum/nText15.Va1ue=nText17.Va1ue=Int(aver*IOO+0.5)/100Text19.Va1ue=XText21.Va1ue=yE1seMsgBox”课程编号为空,请重新选择0+16,“提示”EndIfrs.C1oseSetrs=NothingEndSub9-7翻开“学生成绩管理.mdb,设计按课程查阅学生成绩窗体,运行界面如图9-7所示,要求实现如下:Pub1icrsAsADODB.RecordsetPrivate
11、SubComboO_Change()DimrsAsADODB.RecordsetSetrs=NewADODB.RecordsetDimsq1strAsStringsq1str=se1ect课程名称,学时,学分,姓名from课程,教师where课程.教师编号=教师.教师编号and课程编号:&ComboO&rs.0pensq1str,CurrentProject.Connection,2,2IfNotrs.EOF()ThenTeXt4=rs(课程名称“)Text6=rs(“学分”)TeXt8=rs(姓名”)TeXuO=rs(学时”)EndIfrs.C1oseSetrs=NothingEndSubP
12、rivateSubCommand12_C1ick()Setrs=NewADODB.RecordsetDimsq1strAsStringsq1str=se1ect学生.学号,姓名,专业名称,成绩from学生,专业,成绩where学生.专业编号二专业.专业编号&_and成绩.学号=学生.学号and成绩.课程编号=&ComboONa1ue&rs.0pensq1str,CurrentProject.Connection,2,2IfNotrs.BOF()OrNotrs.EOF()ThenTeXH5.肥二改“学号”)TeXt17.Va1ue=rs(姓名”)Text19.Va1ue=rs(专业名称”)Tex
13、t21Va1ue=rsC7U)Command23.Enab1ed=TrueCommand24.Enab1ed=TrueCommand25.Enab1ed=TrueCommand26.Enab1ed=TrueE1seMsgBox”课程号为空,请重新指定课程编号”,O+16,提示”EndIfEndSubPrivateSubCOmmand23_C1ick()rs.MoveFirstTeXt15.Va1ue=rs(学号”)TeXt17.Va1ue=rs(姓名”)Text19.Va1ue=rs(专业名称”)Text21.Va1ue=rs(成绩”)EndSubPrivateSubCommand24-C1i
14、ck()rs.MovePreviousIfNotrs.BOF()ThenTeXt15.Vahe=rs(学号”)TeXtI7.Va1ue=rs(姓名”)Text19.Va1ue=rs(专业名称”)Text11Vd1ue=rs(成绩”)E1sers.MoveNextText15.Va1ue=rs(学号”)TeXt17.Va1ue=rs(姓名”)Text19.Va1ue=rs(专业名称”)Text21Va1ue=FsC成绩”)MSgBoX已经是首记录”,O+64,提示EndIfEndSubPrivateSubCommand25_CIick()rs.MoveNextIfNotrs.EOF()ThenTeXtI5.Va1ue=rs(“学号”)TeXtI7.Va1ue=rs(姓名”)Text19.Va1ue=rs(专业名称”)Text21.Va1ue=rs(成绩”)E1sers.MovePreviousTeXt15.Va1ue=rs(学号”)TeXtI7.Va1ue=rs(姓名”)Text19.Va1ue=rs(专业名称”)Text21.Va1ue=rs(成绩”)MSgBOX”已经是未记录”,O+64,提示”EndIfEndSubPrivateSubCommand26_C1ick()rs.Move1astTeXt15.Va1ue=rs(“学号”)TeX1I7.Va1u