版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、VB学生成绩管理系统1.VB操作数据库简介本章节主要介绍VB中操作数据库的一般方法,有ADOData控件的连接、ADODB对象的使用,当然在可视化的开发系统中用控件是的方法是比较简单的,但不是很灵活,相比较ADODB对象的方法比较灵活,但使用相对麻烦;这里读者会问,那这两个又是怎么去访问到数据库的呢?其实他们是通过一些接口去访问不同数据库的,而这些接口会屏蔽掉数据库访问协议和各个数据库之间的差别,这里最常用的有两种接口,一种就是ODBC、还有一种是OLEDB,下面我们介绍他们的结构:(a)数据库访问接口:ODBC:ODBC其实是开放式数据库互连(OpenDatabaseConnectivity
2、),是微软公司推出的一种实现应用程序和关系数据库之间通讯的方法标准,是一个接口标准。所以它实际上是一种标准,符合标准的数据库就可以通过SQL语言编写的命令对数据库进行操作,但只能针对关系数据库进行操作(如SQLServer,Oracle,Access,Excel等),目前所有的关系数据库都符合该标准。ODBC本质上是一组数据库访问API(应用程序编程接口),由一组函数调用组成,核心是SQL语句,他的结构图如下图1:图1.1在具体操作时,首先必须用ODBC管理器注册一个数据源,管理器根据数据源提供的数据库位置、数据库类型及ODBC驱动程序等信息,建立起ODBC与具体数据库的联系。这样,只要应用程
3、序将数据源名提供给ODBC,ODBC就能建立起与相应数据库的连接。OLEDB:OLEDB:数据库链接和嵌入对象(ObjectLinkingandEmbeddingDataBase)。OLEDB是微软提出的基于COM思想且面向对象的一种技术标准,目的是提供一种统一的数据访问接口访问各种数据源,这里所说的数据除了标准的关系型数据库中的数据之外,还包括邮件数据、Web上的文本或图形、目录服务(DirectoryServices)、以及主机系统中的文件和地理数据以及自定义业务对象等。OLEDB标准的核心内容就是要求对以上这些各种各样的数据存储(DataStore)都提供一种相同的访问接口,使得数据的使
4、用者(应用程序)可以使用同样的方法访问各种数据,而不用考虑数据的具体存储地点、格式或类型,他的结构图如下图2:OLED8Provi-de-rsrzrziMSSQLServerAccessDatabaseODBCProuidprOtherDatabases图1.2(b)VB中数据库访问对象:ADOData控件:ADOData控件使用MicrosoftActiveX数据对象(ADO)来快速建立数据绑定的控件和数据提供者之间的连接。数据绑定控件是任何具有数据源”属性的控件。数据提供者可以是任何符合OLEDB规范的数据源,这里可能是对ADO的一个封装,他访问数据库的接口可以使用ODBC、也可以使用OL
5、EDB,但OLEDB灵活,不用在系统中配置数据源,而且效率高,所以现在使用OLEDB更多点,下面程序中也是用OLEDB来介绍的,下面简单介绍一下ADODC控件的使用层次图。ADODC在VB数据库程序设计中起了一个桥梁的作用,可以方便VB中的一些控件直接和数据库关联,他的使用示意图如下:图1.3ADODB对象ADO是ActiveXDataObjects的缩写,是一项新的数据库的存取技术,他最主要包含三个对象,Connection、Recordset、Command,Connection对象:连接对象,负责通过OLEDB或ODBC建立与数据库之间的连接。Recordset对象:记录集对象,存放从数
6、据库中得到的记录,这些可能是执行某条SQL语句的结果。Command对象:执行SQL语句返回Recordset类型的结果。基本的用法:连接数据源打开记录集对象使用记录集断开连接具体的应用后面在学生成绩录入中会介绍到。2.VB连接SQLServer数据库a)用可视ADODC控件连接数据库,如图将控件选择到工具栏。(1)设置ADODC的ConnectionString属性。扭梓|L+W|选择控件厂只昼示选定琪通CFlicrixofLkctifiJCTlui.n.亠|ItrcxIDODqVi6.PfOLEDBJfll-HfiSOttCOTi*:E-?-lEUJCiiLenJuCoiitr&l80iO
7、NicrixofLChsrLCantrd&DIJVLEDBJQNlccisc-fLC-miCin.tr-nLB.QniCriSOttCWjBOTiDLilOfCSMJOl&0flicrisoftlatLBiuni.Ebrid_fliorirttlEioriiLiretgFlicrixofLJihtOri41ControlB.D(OLEDB)Nlccixc-fL1Lh-tLx3LC-mkrclaG.0flLcrisofl4tiRa(j&l:arCntrilB0:-)VidAtEaftvtT1tSCcalr-ale定血:C:linnS.iritiB2C,.KEFLEXKU图2.1选择控件点击打开属
8、性页图2.2(2)生成连接字符串。点击数据连接属性页图2.3图2.4(3)设置ADODC的RecordSource属性。命令类型图2.5命令类型:adCmdText:值1,表示命令为SQL语句。adCmdTable:值2,表示命令为一表名。adCmdStoredProc:值4,表示命令是一存储过程名。adCmdUnknown:值8,表示不确定命令类型。(4)此时数据源控件已连接好数据库,可以直接访问它,或者可以充当数据表格控件的数据源使用。b)用ADODB.CONNECTION对象连接数据库(1)创建ADODB.CONNECTION对象PrivateSqlConAsNewADODB.Conne
9、ctionSqlCon.Provider=SQLOLEDBSqlCon.OpenServer=microsof-cee903dcr;DataBase=XSCJ;UID=wmx;PWD=1234;(2)使用ADODB.CONNECTION对象PrivateSqlCmdAsNewADODB.Command指定Command对象所使用的连接SqlCmd.ActiveConnection=SqlConSqlCmd.CommandText=select*fromXS执行命令SetSqlRes=SqlCmd.Execute学生成绩管理系统本演示系统是一个用VB实现的简单的学生成绩管理系统,使用用可视ADO
10、DC控件和ADODB对象来访问后台数据库服务器的,包含学生信息的查询、学生休息的录入修改删除、学生成绩的录入修改,下面就分别说明各模块的具体实现。系统主界面图4.1主要功能:主界面,导航作用,点击可进入操作窗口。创建过程:(1)创建菜单:TOC o 1-5 h zgE*Name.Irrtati-fiMichC-sxdnd:尹rtrut::i:Nore:i-1tfJpCEt寂ID;|qHsgiihtHsi:可n;|o-pnnt刁ri-h*&dPEnitd丘豳血厂也如山*|*fl-2O计篡机ODllOTX享匪旻.051U511UC核一M13-S-5计茸杠031L090光强民芟1939-8-11计算
11、札03111C吉1991-7-22计算札LBllll1990-3-18计算札w1卜嚅、卜二桩V-賢机基袖、805程序设计才语言704764学生选课表ADODC控件程序界面:DataGrid控件学号牲古业序有专业”3X勺学生成绩管理丢统-学生信息查询石承主查询宁主1言息宁生戒技返出至统图5.1主要功能:可以满足简单查询的需要,什么条件也不输则分页显示所有记录,可以输入条件进行简单的模糊查询,各条件之间为与的关系,在查询的结果中移动记录指针可以查看这个学生的具体选课信息卜I创建过程:在窗体上放入两个学生信息查询的ADODC和学生选课信息的ADODC、创建两个学生信息显示的DataGrid和学生选课
12、信息显示的DataGrid,并分别起名为StuADO,StuKCADO,StuDG,StuKCDG。放入学号Edit、姓名Edit和专业下拉列表框,为了美观StuKCADO隐藏在StuKCDG这个后面。设置StuADO的ConnectionString属性为Provider=SQLOLEDB.1;IntegratedSecurity=SSPI;PersistSecurityInfo=False;UserID=sa;InitialCatalog=XSCJ;DataSource=microsof-cee903dcr(3)设置StuADO的RecordSource属性为select*fromXS,C
13、XBwhereXS.XB=CXB.XB设置StuDG的DataSource属性为StuADO。设置StuKCADO的ConnectionString属性为Provider=SQLOLEDB.1;IntegratedSecurity=SSPI;PersistSecurityInfo=False;UserID=sa;InitialCatalog=XSCJ;DataSource=microsof-cee903dcr设置StuKCADO的RecordSource属性为select*fromXS,KC,XS_KCwhereXS.XH=XS_KC.XHandKC.KCH=XS_KC.KCH设置StuKCD
14、G的DataSource属性为StuKCADO。实现过程:直接打开时由于控件属性的设置,所以显示所有记录,当输入查询条件时点击查询按钮则调用MakeSqlStr函数产生查询字符串,然后重新设置控件的属性,打开控件显示查询结果集。当专业改变时调用StuZY_Click函数来分别显示所选的专业学生记录,当查询结果学生信息记录集中移动记录指针时,可以在下面的选课表中看到学生选课的信息。主要代码:根据学号、姓名的输入信息和专业的选择生成模糊查询的SQL字符串DimSqlStrAsString保存查询字符串的PublicSubMakeSqlStr()产生查询字符串的SqlStr=IfTrim(StuXH
15、)ThenSqlStr=andXHlike%+Trim(StuXH.Text)+%EndIfIfTrim(StuXM)ThenSqlStr=SqlStr+andXMlike%+Trim(StuXM.Text)+%EndIfIfTrim(StuZY)v所有专业ThenSqlStr=SqlStr+andZY=+Trim(StuZY.Text)+EndIfEndSub“专业”列表Click事件处理,显示选择当前专业,并且符合学号、姓名查询条件的学生的信息PrivateSubStuZY_Click()当专业改变时从新从数据库中提取数据MakeSqlStrStuADO.RecordSource=sele
16、ct*fromXS,CXBwhereXS.XB=CXB.XB_&SqlStr+andZY=+Trim(StuZYText)+StuADO.RefreshEndSub“查询”Click事件处理,用生成的模糊查询的SQL字符串,来刷新StuADO,并显示到关联的DataGrid中PrivateSubStuSch_Click()点击查询按钮从数据库中提取数据MakeSqlStrStuADO.RecordSource=select*fromXS,CXBwhereXS.XB=CXB.XB_&SqlStrStuADO.RefreshEndSub学生信息显示的DataGrid的Click事件处理,以当前学生
17、信息的学号作为查询条件,从XS_KC表中查找当前学生的选课记录,并显示到学生课程显示的StuKCDG中PrivateSubStuDG_Click()单击DataGrid中学生记录在下面显示学生课程成绩StuKCADO.RecordSource=select*fromXS,KC,XS_KC_&WhereXS.XH=XS_KC.XHAndKC.KCH=XS_KC.KCH_&”andXS.XH=+StuADO.Recordset(XH)+StuKCADO.RefreshEndSub注:为了方便控件显示学生性别,这里建立了一个表CXB(XBbit,XBMvarchar(4)存放数据1,男;0,女,这样
18、把要显示的表与其连接便可以显示中文的性别,如有类似情况可参照此方法。6.学生信息修改目的与要求:了解对数据库操作的基本方法(增、删、改)。程序界面:图6.1主要功能:用户可以点击下面的表格,用户资料便反映到上面的控件中去,这时可以修改控件中的信息,点击更新实现修改。如输入一个新的学号点击更新实现记录的添加当选中当前记录点删除时则可以删除此学生记录,双击照片可以选择学生照片,用于更新学生照片信息。创建过程:(1)在窗体上放入ADODC、DataGrid并起名为StuADO,StuDG。设置StuADO的ConnectionString属性为Provider=SQLOLEDB.1;Integrat
19、edSecurity=SSPI;PersistSecurityInfo=False;UserID=sa;InitialCatalog=XSCJ;DataSource=microsof-cee903dcr(3)置StuADO的RecordSource属性为select*fromXS,CXBwhereXS.XB=CXB.XB(4)(5)置StuDG的DataSource属性为StuADO。在窗体上放入Image控件并起名为StuPic,用来显示学生照片,选择Image控件的DataSource属性为StuADO,设置DataField属性为ZP这就兀成了Image控件和数据库的绑定,记录集移动时I
20、mage里面会显示当前学生的照片。(6)实现过程:并在窗体上放入如图所需控件。当点击DataGrid中的记录时记录集游标也跟着移动,在StuADOMoveComplete事件中取出本条记录显示在上面的控件中,我们可以在控件中修改学生信息,双击选择学生照片,按更新调用StuUpd_Click更新到数据库中,当输入新的学生记录时按更新调用StuUpd_Click添加到数据库中,也可以按删除调用StuDel_Click函数删除此记录,系统会调用CheckXs触发器来保持数据的参照完整性。主要代码:General中定义的全局变量PrivateFileNameAsStringPrivateSqlConA
21、sNewADODB.ConnectionPrivateSqlResAsNewADODB.RecordsetPrivateSqlCmdAsNewADODB.CommandForm加载时打开数据库连接PrivateSubForm_Load()SqlCon.Provider=SQLOLEDBSqlCon.OpenServer=microsof-cee903dcr;DataBase=XSCJ;UID=wmx;PWD=1234;EndSubForm卸载时关闭数据库连接PrivateSubForm_Unload(CancelAsInteger)SqlCon.CloseEndSub学生信息记录集记录指针移动
22、完成事件,当点击StuADO控件记录移动图标时产生,在这个过程中取出当前记录中的学生信息,更新到学号、姓名等显示控件中去,实现显示和StuADO控件记录移动连动PrivateSubStuADO_MoveComplete(ByValadReasonAsADODB.EventReasonEnum,ByValpErrorAsADODB.Error,adStatusAsADODB.EventStatusEnum,ByValpRecordsetAsADODB.Recordset)IfNotpRecordset.EOFAndNotpRecordset.BOFThenStuXH.Text=pRecordse
23、t(XH)StuXM.Text=pRecordset(XM)StuCSSJ.Text=pRecordset(CSSJ)StuZY.Text=pRecordset(ZY)StuZXF.Text=pRecordset(ZXF)StuBZ.Text=CStr(pRecordset(BZ)&)IfpRecordset(XB)=0ThenStuXBF.Value=TrueElseStuXBM.Value=TrueEndIfEndIfEndSub“删除”Click事件处理,从StuADO记录集中取出当前记录的学号,然后通过commad对象执行delete语句来删除当前的学生记录,delete语句的调用会引
24、起CheckXs触发器的动作PrivateSubStuDel_Click(IndexAsInteger)Ret=MsgBox(是否要删除+StuADO.Recordset(XH)+号学生的记录!,vbYesNo,提示)IfRet=vbYesThenSqlCmd.ActiveConnection=SqlConSqlCmd.CommandText=deletefromXSwhereXH=+StuADO.Recordset(XH)+SqlCmd.ExecuteStuADO.RecordSource=select*fromXS,CXBwhereXS.XB=CXB.XBStuADO.RefreshEnd
25、IfEndSub“照片”DoubleClick事件的处理,打开对话框,给用户选择照片,并显示在StuPic控件中,同时记录下选择的文件名和路径到全局FileName变量中,给后面的更新学生信息使用PrivateSubStuPic_DblClick()显示打开文件的公用对话框,选择需要加入数据库的图片CDlg.Filter=位图(*.bmp)l*.bmpl图像(*.jpg)l*.jpgCDlg.ShowOpenFileName=CDlg.FileNameStuPic.Picture=LoadPicture(FileName)预览图片EndSub读取照片数据的函数,根据输入的照片的文件名,打开文件
26、读入照片数据到数组中,然后通过AppendChunk函数把照片数据写入到Field对象中去PrivateSubPicSaveToDB(ByRefFldAsADODB.Field,DiskFileAsString)保存到图片到ADODB.Field对象中去ConstBLOCKSIZE=4096DimbyteData()AsByte定义数据块数组DimNumBlocksAsLong定义数据块个数DimFileLengthAsLong标识文件长度DimLeftOverAsLong定义剩余字节长度DimSourceFileAsLong定义自由文件号DimiAsLong定义循环变量SourceFile=
27、FreeFile提供一个尚未使用的文件号OpenDiskFileForBinaryAccessReadAsSourceFile打开文件FileLength=LOF(SourceFile)得到文件长度IfFileLength=0Then判断文件是否存在CloseSourceFileMsgBoxDiskFile&无内容或不存在!ElseNumBlocks=FileLengthBLOCKSIZE得到数据块的个数LeftOver=FileLengthModBLOCKSIZE得到剩余字节数Fld.Value=NullReDimbyteData(BLOCKSIZE)重新定义数据块的大小Fori=1ToNu
28、mBlocksGetSourceFile,byteData()读到内存块中Fld.AppendChunkbyteData()写入FLDNextiReDimbyteData(LeftOver)重新定义数据块的大小GetSourceFile,byteData()读到内存块中Fld.AppendChunkbyteData()写入FLDCloseSourceFile关闭源文件EndIfEndSub“更新”Click事件处理,先查询当前学号的学生信息,有当前学生的信息则修改相应的记录字段,调用PicSaveToDB保存选择的照片到记录集中的“ZP”字段,更新记录集到数据库中去;没有则通过AddNew新增
29、一条记录,然后修改相应的记录字段,并更新记录集到数据库中去,这里在调用PicSaveToDB前先要判断FileName中是否选择了照片,有才保存到数据库中去PrivateSubStuUpd_Click(IndexAsInteger)看是否有此学生记录,有就修改,没则添加DimSqlStrAsStringDimbyteData()AsByteDimADOFldAsADODB.FieldSqlStr=select*fromXSwhereXH=+Trim(StuXH.Text)+SqlRes.OpenSqlStr,SqlCon,adOpenDynamic,adLockPessimisticIfNot
30、SqlRes.EOFThen修改SqlRes(XM)=StuXM.TextIfStuXBM.Value=TrueThenSqlRes(XB)=1ElseSqlRes(XB)=0EndIfSqlRes(ZY)=StuZYTextSqlRes(CSSJ)=CDate(StuCSSJ.Text)SqlRes(ZXF)=CInt(StuZXF.Text)SqlRes(BZ)=StuBZ.Text保存到图片到ADODB.Field对象中去SetADOFld=SqlRes(ZP)IfFileNameThenCallPicSaveToDB(ADOFld,FileName)EndIfSqlRes.Update
31、Else添加SqlRes.AddNewSqlRes(XH)=StuXH.TextSqlRes(XM)=StuXM.TextIfStuXBM.Value=TrueThenSqlRes(XB)=1ElseSqlRes(XB)=0EndIfSqlRes(ZY)=StuZYTextSqlRes(CSSJ)=CDate(StuCSSJ.Text)IfTrim(StuZXF.Text)ThenSqlRes(ZXF)=CInt(StuZXF.Text)EndIfSqlRes(BZ)=StuBZ.Text保存到图片到ADODB.Field对象中去SetADOFld=SqlRes(ZP)IfFileNameTh
32、enCallPicSaveToDB(ADOFld,FileName)EndIfSqlRes.UpdateEndIfFileName=SqlRes.CloseStuADO.RecordSource=select*fromXS,CXBwhereXS.XB=CXB.XBStuADO.RefreshEndSub为了保证数据的参照完整性在删除学生时要检查成就表中此学生的记录,有就删除。此过程放在触发器中完成的CREATETRIGGERCheckXsONdbo.XSFORDELETEASdeletefromXS_KCwhereXHin(selectXHfromdeleted)7.学生成绩的录入目的与要求:
33、了解VB中调用SQLServer中存储过程的基本方法。Parameter参数对象的使用,视图的更新使用,触发器的使用。程序界面:图7.1主要功能:用户可以选择专业,这是会列出本专业所有的学生学号,选择课程,这时下面的DataGrid中会显示相应课程的学生的成绩和学分,可以在DataGrid中输入学生成绩,上面修改单个学生成绩,学分不允许修改,输入成绩,触发器会自动添加相应的学分。创建过程:参照上面学生信息修改窗口界面,姓名和学分Enable=FALSE。置StuADO的RecordSource属性为select*fromXS_KC_CJ,XS_KC_CJ为视图名称DataGrid窗口属性中Al
34、lowUpdate=Enable图7.2,这样DataGrid修改才允许更新到视图中去,从而更新到数据库相应的表中。添加四列,分别选择DataField为XH、XM、CJ、XF,如图7.3。图7.2图7.3实现过程:在Form_Load事件中编写专业、课程列表项的添加,各专业通过调用GetStuZY存储过程来得到,同时检索试图中这个专业、选择这门课程的学生,显示在下面的DataGrid中,输入成绩,触发器会自动添入学分,可以选择学号,添加一个学生的某门课程的成绩和选课到学生选课表中去,删除XS_KC表中删除此学生此门课程的成绩记录。主要代码:(1)SQLServer中定义的存储过程。创建Get
35、StuZY的存储过程,从学生表中查询专业信息CREATEPROCEDUREGetStuZYASselectDISTINCTZYfromXS加DISTINCT,以返回不重复的专业GO创建显示学生成绩ShowScore存储过程,查看此学生的这门课成绩是否存在,在返回成绩记录,否则返回学号、姓名、专业、课程名信息CREATEPROCEDUREShowScore(XHvarchar(6),KCMvarchar(16)ASdeclareKCHvarchar(3),countintbeginselectKCH=KCHfromKCwhereKCM=KCMselectcount=count(*)fromXS_
36、KCwhereXH=XHandKCH=KCHifcount=0selectXH,XM,ZY,KCM=KCMfromXSwhereXH=XHelseselectXS.XH,XS.XM,CJ,XS_KC.XF,XS.ZY,KCMfromXS,KC,XS_KCwhereXS.XH=XHandKC.KCH=KCHandXS.XH=XS_KC.XHandKC.KCH=XS_KC.KCHendGO创建插入学生成绩的AddStuScore存储过程,学生此门课程成绩记录如存在则修改成绩,如不存在则添加这条记录CREATEPROCEDUREAddStuScore(XHvarchar(6),KCMvarchar(
37、16),CJint,XFint)ASbegindeclareKCHvarchar(3)selectKCH=KCHfromKCwhereKCM=KCMselect*fromXS_KCwhereXH=XHandKCH=KCHifRowCount=1updateXS_KCsetCJ=CJ,XF=XFwhereXH=XHandKCH=KCHelseinsertintoXS_KCvalues(XH,KCH,CJ,XF)endGO创建XS_KC_CJ视图,用来在DataGrid中显示学生、课程、成绩的信息CREATEVIEWdbo.XS_KC_CJASSELECTdbo.XS_KC.XH,dbo.KC.K
38、CM,dbo.XS_KC.CJ,dbo.XS_KC.XF,dbo.XS.XM,dbo.XS.ZYFROMdbo.KCINNERJOINdbo.XS_KCONdbo.KC.KCH=dbo.XS_KC.KCHINNERJOINdbo.XSONdbo.XS_KC.XH=dbo.XS.XHGO创建XS_KC的INSERT,UPDATE触发器,当添加和修改成绩后,根据当前的成绩自动为该学生该课程增加学分,当成绩小于60分时,学分为0;当大于等于60分时,从该门课程表中取出当前课程的学分来更新当前学生在XS_KC表中这门课程的学分CREATETRIGGERCHECKXFONXS_KCINSERT,UPDA
39、TEASBEGINSETNOCOUNTON;updateXS_KCsetXF=0whereCJ=60ENDGO(2)VB中的主要代码。General中定义的全局变量PrivateSqlConAsNewADODB.ConnectionPrivateSqlResAsADODB.RecordsetPrivateSqlCmdAsNewADODB.CommandForm加载时打开数据库连接,并且通过执行select语句从数据库中提取课程名添加到课程下拉列表中去,执行GetStuZy存储过程,把返回的专业添加到专业下拉列表中去,在DataGrid中显示当前专业,当前课程的的学生、成绩信息,方便修改Priv
40、ateSubForm_Load()SqlCon.Provider=SQLOLEDBSqlCon.OpenServer=microsof-cee903dcr;DataBase=XSCJ;UID=wmx;PWD=1234;SqlCmd.ActiveConnection=SqlCon添加课程SqlCmd.CommandText=Select*fromKCSqlCmd.CommandType=adCmdTextSetSqlRes=SqlCmd.ExecuteStuKCM.Text=SqlRes(KCM)WhileNotSqlRes.EOFStuKCM.AddItem(Trim(SqlRes(KCM)S
41、qlRes.MoveNextWend添加专业SqlCmd.CommandText=GetStuZySqlCmd.CommandType=adCmdStoredProcSetSqlRes=SqlCmd.ExecuteStuZY.Text=SqlRes(ZY)WhileNotSqlRes.EOFStuZY.AddItem(SqlRes(ZY)SqlRes.MoveNextWendStuZY_ClickStuXH_ClickStuADO.RecordSource=selectXH,XM,KCM,CJ,XH,ZYXFfromXS_KC_CJwhereKCM=+Trim(StuKCM.Text)+and
42、ZY=+Trim(StuZY.Text)+StuADO.RefreshEndSubForm卸载时关闭数据库连接PrivateSubForm_Unload(CancelAsInteger)SqlRes.CloseSqlCon.CloseEndSubStuADO移动记录完成的时候,在学号、姓名、成绩、学分等显示控件中显示当前学生的当前课程的成绩信息PrivateSubStuADO_MoveComplete(ByValadReasonAsADODB.EventReasonEnum,ByValpErrorAsADODB.Error,adStatusAsADODB.EventStatusEnum,ByV
43、alpRecordsetAsADODB.Recordset)IfNotpRecordset.EOFAndNotpRecordset.BOFThenStuXH.Text=pRecordset(XH)StuXM.Text=pRecordset(XM)StuCJ.Text=pRecordset(CJ)StuXF.Text=CStr(pRecordset(XF)&)EndIfEndSub“删除”Click事件处理,调用Command执行delete删除当前学号,当前课程名的成绩记录PrivateSubStuDel_Click()Ret=MsgBox(是否要删除+StuXH.Text+号学生的+Trim
44、(StuKCM.Text)+课的成绩记录!,vbYesNo,提示)IfRet=vbYesThenSqlCmd.ActiveConnection=SqlConSqlCmd.CommandText=deletefromXS_KCwhereXH=+StuXH.Text+andKCHin(selectKCHfromKCwhereKCM=+StuKCM.Text+)SqlCmd.CommandType=adCmdTextSqlCmd.ExecuteStuADO.RecordSource=selectXH,XM,KCM,CJ,XH,ZY,XFfromXS_KC_CJwhereKCM=+Trim(StuKC
45、M.Text)+andZY=+Trim(StuZYText)+StuADO.RefreshEndIfEndSub“课程”下拉列表Click事件处理,从视图中查询当前专业、当前课程的学生成绩信息,同时调用ShowScore在姓名、成绩等Edit中来显示当前学生的姓名、成绩等信息PrivateSubStuKCM_Click()DimStXH,StKCM选者当前课程的学生选课信息StuADO.RecordSource=selectXH,XM,KCM,CJ,XH,ZY,XFfromXS_KC_CJwhereKCM=+Trim(StuKCM.Text)+andZY=+Trim(StuZY.Text)+S
46、tuADO.Refresh没有学生选者该门课程IfStuADO.Recordset.RecordCount=0ThenifnorecordthenexitsubStuXM.Text=StuCJ.Text=StuXF.Text=ExitSubEndIfSqlCmd.CommandText=ShowScoreSqlCmd.CommandType=adCmdStoredProcSetStXH=SqlCmd.CreateParameter(XH,adVarChar,adParamInput,6)SqlCmd.Parameters.Append(StXH)SetStKCM=SqlCmd.CreatePa
47、rameter(KCM,adVarChar,adParamInput,16)SqlCmd.Parameters.Append(StKCM)SqlCmd(XH)=StuXH.TextSqlCmd(KCM)=StuKCM.TextSetSqlRes=SqlCmd.ExecuteStuXH.Text=SqlRes(XH)IfNotSqlRes.EOFThenIfSqlRes.Fields.Count=4ThenStuXM.Text=SqlRes(XM)StuCJ.Text=SqlRes(CJ)StuXF.Text=CStr(SqlRes(XF)&)EndIfEndIfSqlCmd.Parameter
48、s.Delete(XH)SqlCmd.Parameters.Delete(KCM)EndSub“更新”Click事件处理,通过调用AddStuScore,来添加当前课程,当前学生的成绩信息PrivateSubStuUpd_Click()DimStXH,StKCM,StCJ,StXFIfTrim(StuCJ.Text)=ThenMsgBox输入完整的信息!”,,提示ExitSubEndIfSqlCmd.CommandText=AddStuScoreSqlCmd.CommandType=adCmdStoredProc创建参数对象SetStXH=SqlCmd.CreateParameter(XH,adVarChar,adParamInput,6)SqlCmd.Parameters.Append(StXH)SetStKCM=SqlCmd.CreateParameter(KCM,adVarChar,adParamInput,16)SqlCmd.Parameters.Append(StKCM)SetStCJ=SqlCmd.CreateParameter(CJ,adInteger,adParamInput)SqlCmd.Parameters.Append
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 员工上岗前职业健康体检规范
- 新入职员工安全培训考核办法
- 投诉处理管理办法细则手册
- 草莓设施栽培标准化管理规范
- 预约排班系统管理细则
- 电商行业市场前景及投资研究报告:数字人电商直播
- 轮作倒茬防治土传病害技术规范
- 家政服务中断应急预案操作手册
- 环境保护监测计划制定数据质量管理办法
- 雇主家庭档案信息保密管理规定
- 小学生525心理健康知识竞赛题库+答题卡(完整版可打印)
- 重庆南岸区2026年九年级质量监测英语试卷试题(含答案详解)
- 潍坊市工程技师学院招聘事业单位教师笔试真题2025
- LY/T 2407-2025森林资源价值核算和资产评估技术规范
- 2026年全国《考评员》专业技能鉴定考试题库(新版)
- 2026年北京市西城区中考语文一模试卷(含详细答案解析)
- 山东济南城投集团招聘笔试题库2026
- 2026年初中生数学思维能力训练试题及答案
- 医保风险点培训课件
- 幸福的教师培训课件
- 【《基于SOR模型的电商直播对消费者购物行为的影响实证研究》17000字(论文)】
评论
0/150
提交评论