版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、VB学生成绩管理系统1. VB操作数据库简介本章节主要介绍VB中操作数据库的一般方法,有ADO Data控件的连接、ADODB对象的使用,当然在可视化的开发系统中用控件是的方法是比较简单的,但不是很灵活,相比较ADODB对象的方法比较灵活,但使用相对麻烦;这里读者会问,那这两个又是怎么去访问到数据库的呢?其实他们是通过一些接口去访问不同数据库的,而这些接口会屏蔽掉数据库访问协议和各个数据库之间的差别,这里最常用的有两种接口,一种就是ODBC、还有一种是OLE DB,下面我们介绍他们的结构:(a)数据库访问接口:(1) ODBC:ODBC其实是开放式数据库互连(Open Database Con
2、nectivity),是微软公司推出的一种实现应用程序和关系数据库之间通讯的方法标准,是一个接口标准。所以它实际上是一种标准,符合标准的数据库就可以通过SQL语言编写的命令对数据库进行操作,但只能针对关系数据库进行操作(如SQL Server,Oracle,Access,Excel等),目前所有的关系数据库都符合该标准。ODBC本质上是一组数据库访问API(应用程序编程接口),由一组函数调用组成,核心是SQL语句,他的结构图如下图1:图 1.1在具体操作时,首先必须用ODBC管理器注册一个数据源,管理器根据数据源提供的数据库位置、数据库类型及ODBC驱动程序等信息,建立起ODBC与具体数据库的
3、联系。这样,只要应用程序将数据源名提供给ODBC,ODBC就能建立起与相应数据库的连接。(2) OLE DB:OLE DB:数据库链接和嵌入对象(Object Linking and Embedding DataBase)。OLE DB是微软提出的基于COM思想且面向对象的一种技术标准,目的是提供一种统一的数据访问接口访问各种数据源,这里所说的"数据"除了标准的关系型数据库中的数据之外,还包括邮件数据、Web上的文本或图形、目录服务(Directory Services)、以及主机系统中的文件和地理数据以及自定义业务对象等。OLE DB标准的核心内容就是要求对以上这些各种各
4、样的数据存储(Data Store)都提供一种相同的访问接口,使得数据的使用者(应用程序)可以使用同样的方法访问各种数据,而不用考虑数据的具体存储地点、格式或类型,他的结构图如下图2:图 1.2(b)VB中数据库访问对象:(1) ADO Data控件:ADO Data 控件使用 Microsoft ActiveX 数据对象(ADO) 来快速建立数据绑定的控件和数据提供者之间的连接。数据绑定控件是任何具有“数据源”属性的控件。数据提供者可以是任何符合 OLEDB 规范的数据源,这里可能是对ADO的一个封装,他访问数据库的接口可以使用ODBC、也可以使用OLEDB,但OLEDB灵活,不用在系统中配
5、置数据源,而且效率高,所以现在使用OLEDB更多点,下面程序中也是用OLEDB来介绍的,下面简单介绍一下ADODC控件的使用层次图。ADODC在VB数据库程序设计中起了一个桥梁的作用,可以方便VB中的一些控件直接和数据库关联,他的使用示意图如下:图 1.3(2) ADODB对象ADO是ActiveX Data Objects的缩写,是一项新的数据库的存取技术,他最主要包含三个对象,Connection、Recordset、Command,Connection对象:连接对象,负责通过OLEDB或ODBC建立与数据库之间的连接。Recordset对象:记录集对象,存放从数据库中得到的记录,这些可能
6、是执行某条SQL语句的结果。Command对象:执行SQL语句返回Recordset类型的结果。基本的用法:(1) 连接数据源(2) 打开记录集对象(3) 使用记录集(4) 断开连接具体的应用后面在学生成绩录入中会介绍到。2. VB连接SQL Server数据库a) 用可视ADODC控件连接数据库,如图将控件选择到工具栏。(1) 设置ADODC的ConnectionString属性。选择控件选择控件图 2.1点击打开属性页图 2.2 (2)生成连接字符串。点击数据连接属性页图 2.3 图 2.4(3)设置ADODC的RecordSource属性。命令类型图 2.5 命令类型:adCmdText
7、 :值1,表示命令为SQL语句。adCmdTable :值2,表示命令为一表名。adCmdStoredProc:值4,表示命令是一存储过程名。adCmdUnknown :值8,表示不确定命令类型。(4)此时数据源控件已连接好数据库,可以直接访问它,或者可以充当数据表格控件的数据源使用。b) 用ADODB.CONNECTION对象连接数据库(1) 创建ADODB.CONNECTION对象Private SqlCon As New ADODB.ConnectionSqlCon.Provider = "SQLOLEDB"SqlCon.Open "Server=micro
8、sof-cee903dcr;DataBase=XSCJ;UID=wmx;PWD=1234;"(2) 使用ADODB.CONNECTION对象Private SqlCmd As New ADODB.Command指定Command对象所使用的连接SqlCmd.ActiveConnection = SqlConSqlCmd.CommandText = "select * from XS"执行命令Set SqlRes=SqlCmd.Execute3. 学生成绩管理系统本演示系统是一个用VB实现的简单的学生成绩管理系统,使用用可视ADODC控件和ADODB对象来访问后台数
9、据库服务器的,包含学生信息的查询、学生休息的录入修改删除、学生成绩的录入修改,下面就分别说明各模块的具体实现。4. 系统主界面菜单工具条图 4.1主要功能:主界面,导航作用,点击可进入操作窗口。创建过程:(1) 创建菜单: 图 4.2分别起名为:学生信息查询(msStuSearch)、学生信息修改(msStuInfo)、学生成绩修改(msStuScore)、退出系统(msQuitSys)(2) 创建工具条:学生信息查询、学生信息修改、学生成绩修改退出系统图 4.3创建工具条,创建ImageList控件,导入图标,与菜单关联;退出系统、学生信息查询、学生信息修改、学生成绩修改的index分别为3
10、、6,7,8。主要代码:菜单Click的处理过程退出系统菜单Private Sub msQuitSys_Click() EndEnd Sub学生信息修改菜单Private Sub msStuInfo_Click() AddStu.ShowEnd Sub学生成绩录入菜单Private Sub msStuScore_Click() AddStuScore.ShowEnd Sub学生信息查询菜单Private Sub msStuSearch_Click() StuSearch.ShowEnd Sub工具条Click的处理,分别对应调用菜单中的处理过程Private Sub Toolbar1_Butt
11、onClick(ByVal Button As MSComctlLib.Button)学生信息查询图标If Button.Index = 6 Then msStuSearch_Click End If 学生信息修改图标 If Button.Index = 7 Then msStuInfo_Click End If 学生成绩修改图标 If Button.Index = 8 Then msStuScore_Click End If 退出系统图标 If Button.Index = 3 Then msQuitSys_Click End IfEnd Sub5. 学生信息查询目的与要求:了解使用控件怎么
12、去显示数据库中的数据,同时了解查询的基本方法。程序界面:学生选课表ADODC控件DataGrid控件 图 5.1主要功能:可以满足简单查询的需要,什么条件也不输则分页显示所有记录,可以输入条件进行简单的模糊查询,各条件之间为与的关系,在查询的结果中移动记录指针可以查看这个学生的具体选课信息创建过程:(1) 在窗体上放入两个学生信息查询的ADODC和学生选课信息的ADODC、创建两个学生信息显示的DataGrid和学生选课信息显示的DataGrid,并分别起名为StuADO,StuKCADO, StuDG,StuKCDG。放入学号Edit、姓名Edit和专业下拉列表框,为了美观StuKCADO隐
13、藏在StuKCDG这个后面。(2) 设置StuADO的ConnectionString属性为Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;User ID=sa;Initial Catalog=XSCJ;Data Source=microsof-cee903dcr(3) 设置StuADO的RecordSource属性为select * from XS,CXB where XS.XB=CXB.XB(4) 设置StuDG的DataSource属性为StuADO。(5) 设置StuKCADO的Conne
14、ctionString属性为Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;User ID=sa;Initial Catalog=XSCJ;Data Source=microsof-cee903dcr(6) 设置StuKCADO的RecordSource属性为select * from XS,KC,XS_KCwhere XS.XH=XS_KC.XH and KC.KCH=XS_KC.KCH(7) 设置StuKCDG的DataSource属性为StuKCADO。实现过程:直接打开时由于控件属性的设置
15、,所以显示所有记录,当输入查询条件时点击查询按钮则调用MakeSqlStr函数产生查询字符串,然后重新设置控件的属性,打开控件显示查询结果集。当专业改变时调用StuZY_Click函数来分别显示所选的专业学生记录,当查询结果学生信息记录集中移动记录指针时,可以在下面的选课表中看到学生选课的信息。 主要代码:根据学号、姓名的输入信息和专业的选择生成模糊查询的SQL字符串Dim SqlStr As String 保存查询字符串的Public Sub MakeSqlStr()产生查询字符串的SqlStr = ""If Trim(StuXH) <> "&quo
16、t; Then SqlStr = "and XH like '%" + Trim(StuXH.Text) + "%'"End IfIf Trim(StuXM) <> "" Then SqlStr = SqlStr + " and XM like '%" + Trim(StuXM.Text) + "%'"End IfIf Trim(StuZY) <> "所有专业" Then SqlStr = SqlStr + "
17、 and ZY = '" + Trim(StuZY.Text) + "'"End IfEnd Sub“专业”列表Click事件处理,显示选择当前专业,并且符合学号、姓名查询条件的学生的信息Private Sub StuZY_Click()当专业改变时从新从数据库中提取数据MakeSqlStrStuADO.RecordSource = "select * from XS,CXB where XS.XB=CXB.XB " _& SqlStr + " and ZY = '" + Trim(StuZY
18、.Text) + "'"StuADO.RefreshEnd Sub“查询”Click事件处理,用生成的模糊查询的SQL字符串,来刷新StuADO,并显示到关联的DataGrid中Private Sub StuSch_Click()点击查询按钮从数据库中提取数据MakeSqlStrStuADO.RecordSource = "select * from XS,CXB where XS.XB=CXB.XB " _& SqlStrStuADO.RefreshEnd Sub学生信息显示的DataGrid的Click事件处理,以当前学生信息的学号作
19、为查询条件,从XS_KC表中查找当前学生的选课记录,并显示到学生课程显示的StuKCDG中Private Sub StuDG_Click()单击DataGrid中学生记录在下面显示学生课程成绩StuKCADO.RecordSource = "select * from XS,KC,XS_KC" _ & " Where XS.XH = XS_KC.XH And KC.KCH = XS_KC.KCH" _ & " and XS.XH='" + StuADO.Recordset("XH") + &
20、quot;'"StuKCADO.RefreshEnd Sub注:为了方便控件显示学生性别,这里建立了一个表CXB(XB bit,XBM varchar(4))存放数据1,男;0,女,这样把要显示的表与其连接便可以显示中文的性别,如有类似情况可参照此方法。6. 学生信息修改目的与要求:了解对数据库操作的基本方法(增、删、改)。程序界面:图 6.1主要功能:用户可以点击下面的表格,用户资料便反映到上面的控件中去,这时可以修改控件中的信息,点击更新实现修改。如输入一个新的学号点击更新实现记录的添加当选中当前记录点删除时则可以删除此学生记录,双击照片可以选择学生照片,用于更新学生照片
21、信息。创建过程:(1)在窗体上放入ADODC、DataGrid并起名为StuADO, StuDG。(2)设置StuADO的ConnectionString属性为Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;User ID=sa;Initial Catalog=XSCJ;Data Source=microsof-cee903dcr(3) 置StuADO的RecordSource属性为select * from XS,CXB where XS.XB=CXB.XB(4) 置StuDG的DataSour
22、ce属性为StuADO。(5) 在窗体上放入Image控件并起名为StuPic,用来显示学生照片,选择Image控件的DataSource属性为StuADO,设置DataField属性为ZP,这就完成了Image控件和数据库的绑定,记录集移动时Image里面会显示当前学生的照片。(6) 并在窗体上放入如图所需控件。实现过程:当点击DataGrid中的记录时记录集游标也跟着移动,在StuADO_MoveComplete事件中取出本条记录显示在上面的控件中,我们可以在控件中修改学生信息,双击选择学生照片,按更新调用StuUpd_Click更新到数据库中,当输入新的学生记录时按更新调用StuUpd_
23、Click添加到数据库中,也可以按删除调用StuDel_Click函数删除此记录,系统会调用CheckXs触发器来保持数据的参照完整性。主要代码:General中定义的全局变量Private FileName As StringPrivate SqlCon As New ADODB.ConnectionPrivate SqlRes As New ADODB.RecordsetPrivate SqlCmd As New ADODB.CommandForm 加载时打开数据库连接Private Sub Form_Load() SqlCon.Provider = "SQLOLEDB"
24、; SqlCon.Open "Server=microsof-cee903dcr;DataBase=XSCJ;UID=wmx;PWD=1234;"End SubForm 卸载时关闭数据库连接Private Sub Form_Unload(Cancel As Integer) SqlCon.CloseEnd Sub学生信息记录集记录指针移动完成事件,当点击StuADO控件记录移动图标时产生,在这个过程中取出当前记录中的学生信息,更新到学号、姓名等显示控件中去,实现显示和StuADO控件记录移动连动Private Sub StuADO_MoveComplete(ByVal ad
25、Reason As ADODB.EventReasonEnum, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset) If Not pRecordset.EOF And Not pRecordset.BOF Then StuXH.Text = pRecordset("XH") StuXM.Text = pRecordset("XM") StuCSSJ.Text = pRecordset("CSSJ
26、") StuZY.Text = pRecordset("ZY") StuZXF.Text = pRecordset("ZXF") StuBZ.Text = CStr(pRecordset("BZ") & "") If pRecordset("XB") = 0 Then StuXBF.Value = True Else StuXBM.Value = True End If End IfEnd Sub“删除”Click事件处理,从StuADO记录集中取出当前记录的学号,然后通过co
27、mmad对象执行delete语句来删除当前的学生记录,delete语句的调用会引起CheckXs触发器的动作Private Sub StuDel_Click(Index As Integer) Ret = MsgBox("是否要删除" + StuADO.Recordset("XH") + "号学生的记录!", vbYesNo, "提示") If Ret = vbYes Then SqlCmd.ActiveConnection = SqlCon SqlCmd.CommandText = "delete fr
28、om XS where XH='" + StuADO.Recordset("XH") + "'" SqlCmd.Execute StuADO.RecordSource = "select * from XS,CXB where XS.XB=CXB.XB" StuADO.Refresh End IfEnd Sub“照片”Double Click事件的处理,打开对话框,给用户选择照片,并显示在StuPic控件中,同时记录下选择的文件名和路径到全局FileName变量中,给后面的更新学生信息使用Private Su
29、b StuPic_DblClick()'显示打开文件的公用对话框,选择需要加入数据库的图片CDlg.Filter = "位图(*.bmp)|*.bmp|图像(*.jpg)|*.jpg"CDlg.ShowOpenFileName = CDlg.FileNameStuPic.Picture = LoadPicture(FileName) '预览图片End Sub读取照片数据的函数,根据输入的照片的文件名,打开文件读入照片数据到数组中,然后通过AppendChunk函数把照片数据写入到Field对象中去Private Sub PicSaveToDB(ByRef F
30、ld As ADODB.Field, DiskFile As String)保存到图片到ADODB.Field对象中去Const BLOCKSIZE = 4096Dim byteData() As Byte '定义数据块数组Dim NumBlocks As Long '定义数据块个数Dim FileLength As Long '标识文件长度Dim LeftOver As Long '定义剩余字节长度Dim SourceFile As Long '定义自由文件号Dim i As Long '定义循环变量SourceFile = FreeFile
31、'提供一个尚未使用的文件号Open DiskFile For Binary Access Read As SourceFile '打开文件FileLength = LOF(SourceFile) '得到文件长度If FileLength = 0 Then '判断文件是否存在 Close SourceFile MsgBox DiskFile & "无 内 容 或 不 存 在 !"Else NumBlocks = FileLength BLOCKSIZE '得到数据块的个数 LeftOver = FileLength Mod BL
32、OCKSIZE '得到剩余字节数 Fld.Value = Null ReDim byteData(BLOCKSIZE) '重新定义数据块的大小 For i = 1 To NumBlocks Get SourceFile, , byteData() ' 读到内存块中 Fld.AppendChunk byteData() '写入FLD Next i ReDim byteData(LeftOver) '重新定义数据块的大小 Get SourceFile, , byteData() '读到内存块中 Fld.AppendChunk byteData() &
33、#39;写入FLD Close SourceFile '关闭源文件End IfEnd Sub“更新”Click事件处理,先查询当前学号的学生信息,有当前学生的信息则修改相应的记录字段,调用PicSaveToDB保存选择的照片到记录集中的“ZP”字段,更新记录集到数据库中去;没有则通过AddNew新增一条记录,然后修改相应的记录字段,并更新记录集到数据库中去,这里在调用PicSaveToDB前先要判断FileName中是否选择了照片,有才保存到数据库中去Private Sub StuUpd_Click(Index As Integer)'看是否有此学生记录,有就修改,没则添加Di
34、m SqlStr As StringDim byteData() As ByteDim ADOFld As ADODB.FieldSqlStr = "select * from XS where XH='" + Trim(StuXH.Text) + "'"SqlRes.Open SqlStr, SqlCon, adOpenDynamic, adLockPessimisticIf Not SqlRes.EOF Then'修改 SqlRes("XM") = StuXM.Text If StuXBM.Value =
35、True Then SqlRes("XB") = 1 Else SqlRes("XB") = 0 End If SqlRes("ZY") = StuZY.Text SqlRes("CSSJ") = CDate(StuCSSJ.Text) SqlRes("ZXF") = CInt(StuZXF.Text) SqlRes("BZ") = StuBZ.Text '保存到图片到ADODB.Field对象中去 Set ADOFld = SqlRes("ZP"
36、) If FileName <> "" Then Call PicSaveToDB(ADOFld, FileName) End If SqlRes.UpdateElse'添加 SqlRes.AddNew SqlRes("XH") = StuXH.Text SqlRes("XM") = StuXM.Text If StuXBM.Value = True Then SqlRes("XB") = 1 Else SqlRes("XB") = 0 End If SqlRes("
37、;ZY") = StuZY.Text SqlRes("CSSJ") = CDate(StuCSSJ.Text) If Trim(StuZXF.Text) <> "" Then SqlRes("ZXF") = CInt(StuZXF.Text) End If SqlRes("BZ") = StuBZ.Text 保存到图片到ADODB.Field对象中去 Set ADOFld = SqlRes("ZP") If FileName <> "" Th
38、en Call PicSaveToDB(ADOFld, FileName) End If SqlRes.UpdateEnd IfFileName = ""SqlRes.CloseStuADO.RecordSource = "select * from XS,CXB where XS.XB=CXB.XB"StuADO.RefreshEnd Sub为了保证数据的参照完整性在删除学生时要检查成就表中此学生的记录,有就删除。此过程放在触发器中完成的CREATE TRIGGER CheckXs ON dbo.XS FOR DELETE ASdelete from
39、XS_KCwhere XH in( select XH from deleted)7. 学生成绩的录入目的与要求:了解VB中调用SQL Server中存储过程的基本方法。Parameter参数对象的使用,视图的更新使用,触发器的使用。程序界面:图 7.1主要功能:用户可以选择专业,这是会列出本专业所有的学生学号,选择课程,这时下面的DataGrid中会显示相应课程的学生的成绩和学分,可以在DataGrid中输入学生成绩,上面修改单个学生成绩,学分不允许修改,输入成绩,触发器会自动添加相应的学分。创建过程: (1) 参照上面学生信息修改窗口界面,姓名和学分Enable = FALSE。 (2)
40、置StuADO的RecordSource属性为select * from XS_KC_CJ",XS_KC_CJ为视图名称 (3) DataGrid窗口属性中AllowUpdate = Enable图7.2,这样DataGrid修改才允许更新到视图中去,从而更新到数据库相应的表中。添加四列,分别选择DataField为XH、XM、CJ、XF,如图7.3。图 7.2图 7.3实现过程:在Form_Load事件中编写专业、课程列表项的添加,各专业通过调用GetStuZY存储过程来得到,同时检索试图中这个专业、选择这门课程的学生,显示在下面的DataGrid中,输入成绩,触发器会自动添入学分
41、,可以选择学号,添加一个学生的某门课程的成绩和选课到学生选课表中去,删除XS_KC表中删除此学生此门课程的成绩记录。主要代码:(1) SQL Server中定义的存储过程。创建GetStuZY的存储过程,从学生表中查询专业信息CREATE PROCEDURE GetStuZY ASselect DISTINCT ZY from XS 加DISTINCT,以返回不重复的专业GO创建显示学生成绩ShowScore存储过程,查看此学生的这门课成绩是否存在,在返回成绩记录,否则返回学号、姓名、专业、课程名信息CREATE PROCEDURE ShowScore (XH varchar(6),KCM v
42、archar(16) ASdeclare KCH varchar(3),count intbeginselect KCH=KCH from KC where KCM=KCMselect count =count( *) from XS_KC where XH=XH and KCH=KCHif count=0select XH,XM,ZY,KCM = KCM from XS where XH=XHelseselect XS.XH,XS.XM,CJ,XS_KC.XF,XS.ZY,KCM from XS,KC,XS_KC where XS. XH=XH and KC.KCH=KCH and XS.X
43、H=XS_KC.XH and KC.KCH=XS_KC.KCHendGO创建插入学生成绩的AddStuScore存储过程,学生此门课程成绩记录如存在则修改成绩,如不存在则添加这条记录CREATE PROCEDURE AddStuScore (XH varchar(6),KCM varchar(16),CJ int,XF int) ASbegindeclare KCH varchar(3)select KCH=KCH from KC where KCM=KCMselect * from XS_KC where XH=XH and KCH=KCHif RowCount =1update XS_KC
44、 set CJ=CJ,XF=XF where XH=XH and KCH=KCHelseinsert into XS_KC values(XH,KCH,CJ,XF)endGO创建XS_KC_CJ视图,用来在DataGrid中显示学生、课程、成绩的信息CREATE VIEW dbo.XS_KC_CJASSELECT dbo.XS_KC.XH, dbo.KC.KCM, dbo.XS_KC.CJ, FROM dbo.KC INNER JOIN dbo.XS_KC ON dbo.KC.KCH = dbo.XS_KC.KCH INNER JOINGO创建XS_KC的INSERT,UPDATE触发器,当添
45、加和修改成绩后,根据当前的成绩自动为该学生该课程增加学分,当成绩小于60分时,学分为0;当大于等于60分时,从该门课程表中取出当前课程的学分来更新当前学生在XS_KC表中这门课程的学分CREATE TRIGGER CHECKXF ON XS_KC INSERT,UPDATEAS BEGINSET NOCOUNT ON;update XS_KC set XF = 0 where CJ < 60update XS_KC set XF = (select XF from KC where KCH = XS_KC.KCH) where CJ >= 60ENDGO(2) VB中的主要代码。G
46、eneral中定义的全局变量Private SqlCon As New ADODB.ConnectionPrivate SqlRes As ADODB.RecordsetPrivate SqlCmd As New ADODB.CommandForm加载时打开数据库连接,并且通过执行select语句从数据库中提取课程名添加到课程下拉列表中去,执行GetStuZy存储过程,把返回的专业添加到专业下拉列表中去,在DataGrid中显示当前专业,当前课程的的学生、成绩信息,方便修改Private Sub Form_Load() SqlCon.Provider = "SQLOLEDB"
47、; SqlCon.Open "Server=microsof-cee903dcr;DataBase=XSCJ;UID=wmx;PWD=1234;" SqlCmd.ActiveConnection = SqlCon '添加课程 SqlCmd.CommandText = "Select * from KC" SqlCmd.CommandType = adCmdText Set SqlRes = SqlCmd.Execute StuKCM.Text = SqlRes("KCM") While Not SqlRes.EOF StuKC
48、M.AddItem (Trim(SqlRes("KCM") SqlRes.MoveNext Wend '添加专业 SqlCmd.CommandText = "GetStuZy" SqlCmd.CommandType = adCmdStoredProc Set SqlRes = SqlCmd.Execute StuZY.Text = SqlRes("ZY") While Not SqlRes.EOF StuZY.AddItem (SqlRes("ZY") SqlRes.MoveNext Wend StuZY_
49、Click StuXH_Click StuADO.RecordSource = "select XH,XM,KCM,CJ,XH,ZY,XF from XS_KC_CJ where KCM = '" + Trim(StuKCM.Text) + "' and ZY = '" + Trim(StuZY.Text) + "'" StuADO.RefreshEnd SubForm卸载时关闭数据库连接Private Sub Form_Unload(Cancel As Integer) SqlRes.Close Sq
50、lCon.CloseEnd SubStuADO移动记录完成的时候,在学号、姓名、成绩、学分等显示控件中显示当前学生的当前课程的成绩信息Private Sub StuADO_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset) If Not pRecordset.EOF And Not pRecordset.BOF Then StuXH.Tex
51、t = pRecordset("XH") StuXM.Text = pRecordset("XM") StuCJ.Text = pRecordset("CJ") StuXF.Text = CStr(pRecordset("XF") & "") End IfEnd Sub“删除”Click事件处理,调用Command执行delete删除当前学号,当前课程名的成绩记录Private Sub StuDel_Click() Ret = MsgBox("是否要删除" + Stu
52、XH.Text + "号学生的" + Trim(StuKCM.Text) + "课的成绩记录!", vbYesNo, "提示") If Ret = vbYes Then SqlCmd.ActiveConnection = SqlCon SqlCmd.CommandText = "delete from XS_KC where XH='" + StuXH.Text + "' and KCH in (select KCH from KC where KCM='" + StuK
53、CM.Text + "')" SqlCmd.CommandType = adCmdText SqlCmd.Execute StuADO.RecordSource = "select XH,XM,KCM,CJ,XH,ZY,XF from XS_KC_CJ where KCM = '" + Trim(StuKCM.Text) + "' and ZY = '" + Trim(StuZY.Text) + "'" StuADO.Refresh End IfEnd Sub“课程” 下拉列
54、表Click事件处理,从视图中查询当前专业、当前课程的学生成绩信息,同时调用ShowScore在姓名、成绩等Edit中来显示当前学生的姓名、成绩等信息Private Sub StuKCM_Click() Dim StXH, StKCM '选者当前课程的学生选课信息 StuADO.RecordSource = "select XH,XM,KCM,CJ,XH,ZY,XF from XS_KC_CJ where KCM = '" + Trim(StuKCM.Text) + "' and ZY = '" + Trim(StuZY.
55、Text) + "'" StuADO.Refresh '没有学生选者该门课程 If StuADO.Recordset.RecordCount = 0 Then 'if no record then exit sub StuXM.Text = "" StuCJ.Text = "" StuXF.Text = "" Exit Sub End If SqlCmd.CommandText = "ShowScore" SqlCmd.CommandType = adCmdStoredP
56、roc Set StXH = SqlCmd.CreateParameter("XH", adVarChar, adParamInput, 6) SqlCmd.Parameters.Append (StXH) Set StKCM = SqlCmd.CreateParameter("KCM", adVarChar, adParamInput, 16) SqlCmd.Parameters.Append (StKCM) SqlCmd("XH") = StuXH.Text SqlCmd("KCM") = StuKCM.Tex
57、t Set SqlRes = SqlCmd.Execute StuXH.Text = SqlRes("XH") If Not SqlRes.EOF Then If SqlRes.Fields.Count = 4 Then StuXM.Text = SqlRes("XM") StuCJ.Text = SqlRes("CJ") StuXF.Text = CStr(SqlRes("XF") & "") End If End If SqlCmd.Parameters.Delete ("
58、XH") SqlCmd.Parameters.Delete ("KCM") End Sub“更新” Click事件处理,通过调用AddStuScore,来添加当前课程,当前学生的成绩信息Private Sub StuUpd_Click() Dim StXH, StKCM, StCJ, StXF If Trim(StuCJ.Text) = "" Then MsgBox "输入完整的信息!", , "提示" Exit Sub End If SqlCmd.CommandText = "AddStuScore&
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度办公用品及办公设备租赁一体化服务合同
- 二零二五年度养老社区入住与紧急救援协议3篇
- 2025年度养猪场养殖废弃物处理设施建设合同3篇
- 2025年度农村房屋买卖合同及土地承包权转让与配套设施租赁及物业管理合同
- 2025年度农副产品线上与线下销售融合合作协议3篇
- 二零二五年度危化品公路货物运输安全管理合同3篇
- 二零二五年度公司经理战略合作伙伴关系聘用协议3篇
- 二零二五年度美发行业美容美发行业投资合作协议书3篇
- 2025年度农村自建房合同协议书(含节能环保建筑材料)
- 二零二五年度农村房屋置换项目合作框架协议
- 人教版(PEP)小学六年级英语上册全册教案
- 广东省广州市海珠区2023-2024学年六年级上学期月考英语试卷
- 消防水域救援个人防护装备试验 大纲
- 机电样板施工主要技术方案
- 涉税风险管理方案
- 青岛市2022-2023学年七年级上学期期末道德与法治试题
- 高空作业安全免责协议书范本
- 石油化学智慧树知到期末考试答案章节答案2024年中国石油大学(华东)
- 手术后如何防止排尿困难
- 特种设备“日管控、周排查、月调度”表格
- 重点关爱学生帮扶活动记录表
评论
0/150
提交评论