社区
VB基础类
帖子详情
窗体上的ADODC会不会随着Form_Unload而关闭对数据库的连接
diekiss
2003-12-13 11:21:23
如果不能,怎么在Form_Unload事件里面将连接关闭?
谢谢!
...全文
40
3
打赏
收藏
窗体上的ADODC会不会随着Form_Unload而关闭对数据库的连接
如果不能,怎么在Form_Unload事件里面将连接关闭? 谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
diekiss
2003-12-14
打赏
举报
回复
Set adodc1=nothing 出错
检查得 nothing=nothing
楼上的不是将 adodc看成adodb了吧?
xfzzf
2003-12-13
打赏
举报
回复
adodc1.recordset.close
set adodc1=nothing
goodname008
2003-12-13
打赏
举报
回复
Adodc1.Recordset.Close
SQL
数据库
课程设计(3).doc
学生成绩管理系统设计说明 (本设计以VB为前台对
数据库
进行操作) 需求 本系统主要用于学校的学生成绩管理。 1. 用户身份的验证 2. 学生基本信息管理 3. 按班级选课 4. 学生成绩的管理 总体设计 本系统包括:标准模块、系统登录模块、主界面模块、系统管理模块、学生基本信息 管理模块、选课模块、成绩管理模块。 1. 标准模块 定义公共变量和过程。 2. 系统登录模块 进行用户身份的验证。 3. 主界面模块 作为系统总界面,供用户进行各项选择。 4. 系统管理模块 用户管理及系统退出。 5. 学生基本信息管理模块 学生基本信息的录入和查询。 6. 选课模块 为班级选课。 7. 成绩管理模块 进行学生成绩的录入及查询。
数据库
设计及配置 1
数据库
设计 该
数据库
由以下几个表组成: 用户表、学生基本信息表、班级课程表、学生成绩表。 1 用户表 包括用户名、密码、是否是超级用户。 "字段名称 "数据类型 " "用户名 "文本 " "密码 "文本 " "是否为超级用户 "布尔 " 2 学生基本信息表 包括学号、姓名、电话、地址、班级名称、性别。 "字段名称 "数据类型 " "学号 "文本 " "姓名 "文本 " "电话 "文本 " "地址 "文本 " "班级名称 "文本 " "性别 "文本 " 3 班级课程表 包括班级名称、课程名称。 "字段名称 "数据类型 " "班级名称 "文本 " "课程名称 "文本 " 4 学生成绩表 包括学号、课程名称、成绩。 "字段名称 "数据类型 " "学号 "文本 " "课程名称 "文本 " "成绩 "数值(单精度浮点" " "型) " 2
数据库
中各表关系 学生基本信息表与班级课程表通过班级名称字段相关联,学生基本信息表与学生 成绩表通过学号字段相关联,班级课程表与学生成绩表通过课程名称字段相关联 。 系统实现 1 标准模块(公有模块) 1 标准模块中的数据定义 用于定义全局变量及过程。本系统定义了当前用户名及用户类型。 "序号 "变量名 "数据类型 " "1 "UserName "String " "2 "UserType "Boolean " 2 标准模块代码设计 Option Explicit Public UserName As String Public UserType As Boolean 2 系统登录模块 1 说明 进行用户身份的验证。特定的用户才能登录到系统。 2
窗体
设计 系统登录
窗体
的
窗体
类型为
Form
,界面如下图所示: 主要控件属性如下表所示: "对象名 "类型 "属性 "值 "说明 " "FrmLogin"
窗体
"Caption "学生成绩 "学生成绩管理系统登录
窗体
" " " " "管理系统 " " " " " "登录 " " "Label1 "标签 "Caption "用户名: " " "Label2 "标签 "Caption "密码: " " "Text1 "文本框 "Text " "用于输入用户名 " "Text2 "文本框 "Text " "用于输入密码 " "cmdOk "命令按 "Caption "确定 "确定当前输入的用户名和密码 " " "钮 " " ",进行用户登录。登录成功后 " " " " " "进入主界面。如果三次输入错 " " " " " "误的用户和密码,程序将自动 " " " " " "退出 " "cm
dC
ance"命令按 "Caption "取消 "取消操作,退出程序 " "l "钮 " " " " "
Ado
dc
1 "
Ado
dc
"ConnectionSt" "
连接
所使用的
数据库
,Connect" " " "ring " "ionString属性在界面中设置," " " " " "RecordSource属性在代码中设 " " " " " "置。 " 3 代码设计 公共定义 Option Explicit Dim Count1 As Integer
窗体
装载处理程序(
Load
) Private Sub
Form
_
Load
() Count1 = 0 '错误次数清零 End Sub 取消按钮(cm
dC
ancel)处理程序(Click) Private Sub cm
dC
ancel_Click() Un
load
Me '系统退出 End Sub 确定按钮(cmdOk)处理程序(Click) Private Sub cmdOk_Click() Dim s1 As String Dim Password As String On Error Resume Next If Text1.Text = "" Then '用户名为空,则退出 MsgBox ("用户名不能为空,请重新输入") Text1.SetFocus Exit Sub End If '按输
vb学生成绩管理系统
课程设计题目 学生成绩管理系统 课程设计的目的 理解面向对象的软件设计基本理论,学习VB软件设计的基本方法,熟悉一般软件项目开发的基本步骤,培养运用VB解决实际问题的能力和技巧。 课程设计的主要内容和要求(包括原始数据、技术参数、设计要求、工作量要求等) 四、工作进度安排 2011-2012学年第19周。 五、主要参考文献 Visual Basic程序设计教程 审核批准意见 系主任(签字) 年 月 日 指导教师评语及成绩 指 导 教 师 评 语 成 绩 导师签字: 年 月 日 设计思路及其创建过程 一、任务概述 简易学生成绩管理系统主要完成学生成绩的管理,包括: 1)、添加信息模块:主要完成学生记录、课程记录、学生成绩和用户记录的添加工作。 2)、删除信息模块:主要完成学生记录、课程记录、学生成绩和用户记录的删除工作。 3)、修改成绩模块:主要完成学生成绩的修改工作。 4)、查询模块:主要完成学生成绩的查询工作。 1.进行
数据库
设计 要编写一个实用的
数据库
程序,必须系统地学习过
数据库
原理的知识,并首先设计出符合用户业务需求的
数据库
体系,然后才能利用某种语言,开发出针对这个
数据库
的交互程序:
数据库
应用程序。 2. 程序的主要功能 利用SQL语句完成对学生成绩表的插入、修改、删除和查询操作。比如: (1)插入记录: Insert Into 学生成绩表(学号,课程号,成绩) Values(‘001’,’001’,85) (2)删除记录 Delete From 学生成绩表 Where 学号=‘001’ And 课程号=‘001’ (3)修改记录 Update 学生成绩表 set 成绩 =90 Where 学号=‘001’ And 课程号=‘001’ (4)按学号查询 Select * From 学生成绩表 Where 学号=‘001’ 二、界面设计 1.创建工程 新建一“标准EXE”工程.工程名为“成绩查询”. 2.创建主
窗体
(frmMain)-MDI主
窗体
设计菜单: 增加 删除 修改 查询 退出 增加学生记录 删除学生记录 修改成绩 增加课程记录 删除课程记录 增加成绩 删除成绩记录 增加用户 删除用户 3.创建新增学生记录
窗体
(frmAddStudent)-MDI子
窗体
4、建新增课程记录
窗体
(frmAd
dC
ourse)-MDI子
窗体
5.创建新增成绩记录
窗体
(frmAddGrade)-MDI子
窗体
6.创建新增用户记录
窗体
(frmAddUser)-MDI子
窗体
7. 创建修改记录
窗体
( frmUpdate )-MDI子
窗体
8.创建删除学生记录
窗体
(frmDeleteStudent)-MDI子
窗体
9.创建删除课程记录
窗体
(frmDeleteCourse)-MDI子
窗体
10.创建删除成绩记录
窗体
(frmDeleteGrade)-MDI子
窗体
11.创建删除用户
窗体
(frmDelete)-MDI子
窗体
12.创建查询记录
窗体
(frmQuery)-MDI子
窗体
13.创建身份验证
窗体
-MDI子
窗体
1.3 代码设计 1.
连接
数据库
代码 步骤: (1)通过“工程—引用”菜单添加对象库: Microsoft Activex Data Objects 2.7 Library (
Ado
数据对象)。 (2)通过工程菜单添加一个标准模块(Module),并设计代码。 (3) 通过“工程—工程1属性”菜单,将主
窗体
(frmMain)MDI
form
1设置为启动对象。 添加标准模块代码: '声明全局对象变量ABOcn,用于创建于
数据库
的
连接
Public
ADO
cn As New
ADO
DB.Connection 添加主
窗体
初始化过程代码: Private Sub MDI
Form
_Initialize()
ADO
cn.ConnectionString = "Provider=SQLOLEDB.1;Password=;User ID=sa;Initial Catalog=成绩;Data Source= localhost;" If
ADO
cn.State = adStateClosed Then
ADO
cn.Open '打开到
数据库
的
连接
End Sub 完成本项工作后,就创建了一个全局变量
ADO
cn,但它是一个特殊的变量,其数据类型是数据
连接
对象(Connection对象)。可以把AD
Dc
n理解成是一个虚拟的
数据库
。或者称为VB程序中的逻辑
数据库
,通过它可以非常方便地访问其中的数据。换句话说,
ADO
cn是VB程序的后台
数据库
交互的通道。 2.设置
窗体
间的调用关系 2.设置
窗体
间的调用关系 ’调用增加课程
窗体
Private Sub Ad
dC
ourse_Click(Index As Integer) frmAd
dC
ourse.Show End Sub ’调用增加成绩
窗体
Private Sub AddGrade_Click(Index As Integer) FrmAdd.Show End Sub ’调用增加学生
窗体
Private Sub AddStudent_Click(Index As Integer) FrmAddStudent.Show End Sub ’调用增加用户
窗体
Private Sub AddUser_Click() FrmAddUser.Show End Sub ’调用删除课程
窗体
Private Sub DeleteCourse_Click() frmDeleteCourse.Show End Sub ’调用删除成绩
窗体
Private Sub DeleteGrade_Click() frmDelete.Show End Sub ’调用删除学生
窗体
Private Sub DeleteStudent_Click() frmDeleteStudent.Show End Sub ’调用删除用户
窗体
Private Sub DeleteUser_Click() frmDeleteUser.Show End Sub ’调用学生基本信息查询
窗体
Private Sub Querystudent_Click() frmQuerystudent.Show End Sub ’调用学生成绩查询
窗体
Private Sub QueryGrade_Click() frmQueryGrade.Show End Sub’调用修改成绩
窗体
Private Sub Update_Click() FrmUpdate.Show End Sub 调用退出程序 Private Sub Exit_Click() End End Sub 3.frmAddStudent (增加学生)
窗体
的代码设计: Private Sub Command1_Click() Dim
ADO
rs As New Recordset '声明一个记录集对象 Dim strSQL As String
ADO
rs.ActiveConnection =
ADO
cn '与
ADO
cn
连接
对象关联 If Text1.Text = "" Then MsgBox "未输入学号,请重新输入数据!", vbCritical + vbOKOnly Text1.SetFocus '定位光标 Exit Sub End If If Text2.Text = "" Then MsgBox "未输入姓名,请重新输入数据!", vbCritical + vbOKOnly Text2.SetFocus '定位光标 Exit Sub End If '首先查询表中是否存在关键字相同的记录 strSQL = "select * from 学生情况表" strSQL = strSQL & " Where 学号='" + Text1.Text + " '" strSQL = strSQL & " and 姓名='" + Text2.Text + "'"
ADO
rs.Open strSQL '如果关键字重复,则退出 If Not
ADO
rs.EOF Then MsgBox "该记录已经存在,不能继续增加", vbCritical + vbOKOnly Exit Sub End If '拼写Insert插入语句 strSQL = "Insert Into 学生情况表(学号,姓名)" strSQL = strSQL + " Values('" + Text1.Text + "'," strSQL = strSQL + "'" + Text2.Text + "'" + ")"
ADO
cn.Execute strSQL '执行Insert语句 Text1.Text = "“ '初始化文本框控件 Text2.Text = "" Text1.SetFocus '定位光标 MsgBox "已成功添加新记录", vbQuestion + vbOKOnly
ADO
rs.Close '
关闭
记录集 Set
ADO
rs = Nothing End Sub Private Sub Command2_Click() Un
load
Me End Sub 4.frmAd
dC
ourse (增加课程)
窗体
的代码设计: (1)在
Load
事件中,进行初始化工作,代码如下: Private Sub
Form
_
Load
() '初始化文本框控件 Text1.Text = "" Text2.Text = "" End Sub (2)’Command1_Click()(”确定”按钮)事件代码 Private Sub Command1_Click() Dim
ADO
rs As New Recordset '声明一个记录集对象 Dim strSQL As String '与
ADO
cn
连接
对象关联
ADO
rs.ActiveConnection =
ADO
cn If Text1.Text = "" Then MsgBox "未输入课程号,请重新输入数据!", vbCritical + vbOKOnly Text1.SetFocus '定位光标 Exit Sub End If If Text2.Text = "" Then MsgBox "未输入课程名,请重新输入数据!", vbCritical + vbOKOnly Text2.SetFocus '定位光标 Exit Sub End If ’Command1_Click()(”确定”按钮)事件代码 '首先查询表中是否存在关键字相同的记录 strSQL = "select * from 课程情况表" strSQL = strSQL & " Where 课程号='" + Text1.Text + " '" strSQL = strSQL & " and 课程名='" + Text2.Text + "'"
ADO
rs.Open strSQL '如果关键字重复,则退出 If Not
ADO
rs.EOF Then MsgBox "该记录已经存在,不能继续增加", vbCritical + vbOKOnly Exit Sub End If ’Command1_Click()(”确定”按钮)事件代码 '拼写Insert插入语句 strSQL = "Insert Into 学生情况表(学号,姓名)" strSQL = strSQL + " Values('" + Text1.Text + "'," strSQL = strSQL + "'" + Text2.Text + "'" + ")"
ADO
cn.Execute strSQL '执行Insert语句 Text1.Text = "“ '初始化文本框控件 Text2.Text = "" Text1.SetFocus '定位光标 MsgBox "已成功添加新记录", vbQuestion + vbOKOnly
ADO
rs.Close '
关闭
记录集 Set
ADO
rs = Nothing End Sub (3)’Command2_Click()(”返回”按钮)事件代码 Private Sub Command2_Click() Un
load
Me End Sub 5.frmAddGrade(增加成绩)
窗体
的代码设计: (1)在
Load
事件中,进行初始化工作,代码如下: Private Sub
Form
_
Load
() Dim
ADO
rs As New Recordset '声明记录集对象
ADO
rs.ActiveConnection =
ADO
cn '与
ADO
cn
连接
对象关联 '对Combo1组合框进行初始化
ADO
rs.Open "Select 学号 From 学生情况表 Order By 学号" Combo1.Clear Do While Not
ADO
rs.EOF Combo1.AddItem Trim(
ADO
rs.Fields("学号")) '添加"学号"字段值
ADO
rs.MoveNext '取下一条记录 Loop
ADO
rs.Close '
关闭
记录集 (1)
Load
事件代码 '对Combo2组合框进行初始化
ADO
rs.Open "select 课程号 from 课程情况表 Order By 课程号" Combo2.Clear Do While Not
ADO
rs.EOF Combo2.AddItem Trim(
ADO
rs.Fields("课程号")) '添加"课程号"字段值
ADO
rs.MoveNext '取下一条记录 Loop
ADO
rs.Close '
关闭
记录集 '初始化文本框控件 Text1.Text = "" Text2.Text = "" Text3.Text = "0" End Sub (2) Combo1_Click 事件代码 Private Sub Combo1_Click() Dim
ADO
rs As New Recordset '声明一个记录集对象
ADO
rs.ActiveConnection =
ADO
cn '与
ADO
cn
连接
对象关联 '如果输入了学号,则把姓名显示在Text1.Text strSQL = "select * from 学生情况表" strSQL = strSQL + " Where 学号='" + Combo1.Text + " '"
ADO
rs.Open strSQL Text1.Text =
ADO
rs.Fields("姓名")
ADO
rs.Close '
关闭
记录集 Set
ADO
rs = Nothing End Sub (3) Combo2_Click 事件代码 Private Sub Combo2_Click() Dim
ADO
rs As New Recordset '声明一个记录集对象
ADO
rs.ActiveConnection =
ADO
cn '与
ADO
cn
连接
对象关联 '如果输入了课程号,则把课程名显示在Text2.text strSQL = "select * from 课程情况表" strSQL = strSQL + " Where 课程号='" + Combo2.Text + " '"
ADO
rs.Open strSQL Text2.Text =
ADO
rs.Fields("课程名")
ADO
rs.Close '
关闭
记录集 Set
ADO
rs = Nothing End Sub (4) Command1_Click(确认) 事件代码 Private Sub Command1_Click() Dim strSQL As String Dim
ADO
rs As New Recordset '声明一个记录集对象
ADO
rs.ActiveConnection =
ADO
cn '与
ADO
cn
连接
对象关联 '检查学号与课程号是否输入 If Combo1.Text = "" Or Combo2.Text = "" Then MsgBox "输入数据不全,请重新输入数据!", vbCritical + vbOKOnly Exit Sub End If '首先查询表中是否存在关键字相同的记录 strSQL = "select * from 学生成绩表" strSQL = strSQL & " Where 学号='" + Combo1.Text + " '" strSQL = strSQL & " and 课程号='" + Combo2.Text + "'"
ADO
rs.Open strSQL '如果关键字重复,则退出 If Not
ADO
rs.EOF Then MsgBox "该记录已经存在,不能继续增加", vbCritical + vbOKOnly Exit Sub End If (4) Command1_Click(确认) 事件代码 '拼写Insert插入语句 strSQL = "Insert Into 学生成绩表(学号,课程号,成绩)" strSQL = strSQL + "Values('" + Combo1.Text + "','" strSQL = strSQL + Combo2.Text + "'," + Str(Val(Text3.Text)) + ")"
ADO
cn.Execute strSQL '执行Insert语句 MsgBox "已成功添加新记录", vbQuestion + vbOKOnly '初始化文本框控件 Text1.Text = "" Text2.Text = "" Text3.Text = "0"
ADO
rs.Close '
关闭
记录集 Set
ADO
rs = Nothing End Sub (5) Command2_Click(返回) 事件代码 Private Sub Command2_Click() Un
load
Me End Sub 6.frmAddUser(增加用户)代码设计 (1)在
Load
事件中,进行初始化工作,代码如下: Private Sub
Form
_
Load
() '初始化文本框控件 Text1.Text = "" Text2.Text = "" Text3.Text = "" End Sub (2) Command1_Click(确认) 事件代码 Private Sub Command1_Click() Dim strSQL As String Dim
ADO
rs As New Recordset '声明一个记录集对象
ADO
rs.ActiveConnection =
ADO
cn '与
ADO
cn
连接
对象关联 '记录已输入的用户信息 UserName = Text1.Text PaasWord = Text2.Text PaasWord1 = Text3.Text '若 Text1.Text 或Text2.Text或Text3.Text为空则提示用户重新输入 If Text1.Text = "" Or Text2.Text = "" Or Text3.Text = "" Then MsgBox "未输入用户名、密码或密码确认,请重新输入!", vbCritical + vbOKOnly Exit Sub End If '若 两此输入密码不一致则提示用户重新输入 If PaasWord PaasWord1 Then MsgBox "两次输入的密码不一致,请重新输入!", vbCritical + vbOKOnly Text2.Text = "" Text3.Text = "" Text2.SetFocus Exit Sub End If '首先查询用户中是否存在相同的记录 strSQL = "Select * From 用户" strSQL = strSQL + " Where 用户名='" + UserName + "'"
ADO
rs.Open strSQL If Not
ADO
rs.EOF Then '如果关键字重复,则退出 MsgBox "该用户已经存在,请重新注册", vbCritical + vbOKOnly Exit Sub End If '拼写Insert插入语句 strSQL = "Insert Into 用户(用户名,密码)" strSQL = strSQL + " Values('" + UserName + "','" + PaasWord + "')"
ADO
cn.Execute strSQL '执行Insert语句 MsgBox "已成功添加新记录", vbQuestion + vbOKOnly
ADO
rs.Close '
关闭
记录集 Set
ADO
rs = Nothing End Sub (3) Command2_Click(返回) 事件代码 Private Sub Command2_Click() Un
load
Me End Sub 7.frmUpdata (修改成绩)
窗体
代码设计 (1)、在
Load
事件中,进行初始化工作,代码如下: Private Sub
Form
_
Load
() Dim
ADO
rs As New Recordset '声明记录集对象
ADO
rs.ActiveConnection =
ADO
cn '与
ADO
cn
连接
对象关联 '对Combo1组合框进行初始化
ADO
rs.Open "Select 学号 From 学生情况表 Order By 学号" Combo1.Clear Do While Not
ADO
rs.EOF Combo1.AddItem Trim(
ADO
rs.Fields("学号")) '添加"学号"字段值
ADO
rs.MoveNext '取下一条记录 Loop
ADO
rs.Close '
关闭
记录集 (1)、
Form
_
Load
()事件代码 '对Combo2组合框进行初始化
ADO
rs.Open "select 课程号 from 课程情况表 Order By 课程号" Combo2.Clear Do While Not
ADO
rs.EOF Combo2.AddItem Trim(
ADO
rs.Fields("课程号")) '添加"课程号"字段值
ADO
rs.MoveNext '取下一条记录 Loop
ADO
rs.Close '
关闭
记录集 '初始化文本框控件 Text1.Text = "" Text2.Text = "" Text3.Text = "0" End Sub (2) Combo1_Click 事件代码 Private Sub Combo1_Click() Dim
ADO
rs As New Recordset '声明一个记录集对象
ADO
rs.ActiveConnection =
ADO
cn '与
ADO
cn
连接
对象关联 '如果输入了学号,则把姓名显示在Text1.Text strSQL = "select * from 学生情况表" strSQL = strSQL + " Where 学号='" + Combo1.Text + " '"
ADO
rs.Open strSQL Text1.Text =
ADO
rs.Fields("姓名")
ADO
rs.Close '
关闭
记录集 (2) Combo1_Click 事件代码 If Combo2 "" Then '输入完毕则显示成绩信息 '查询学生成绩表中是否有指定指定学号与课程号的记录 strSQL = "select * from 学生成绩表" strSQL = strSQL & " Where 学号='" + Combo1.Text + " '" strSQL = strSQL & " and 课程号='" + Combo2.Text + "'"
ADO
rs.Open strSQL If
ADO
rs.EOF Then MsgBox "学生成绩表在不存在学号为" + Combo1.Text + "课程号为" + Combo2.Text + "的记录,请重新输入!", vbCritical + vbOKOnly Text1.Text = "" Text3.Text = "" Exit Sub Else Text3.Text =
ADO
rs.Fields("成绩") End If End If If
ADO
rs.State = adStateOpen Then
ADO
rs.Close '
关闭
记录集 Set
ADO
rs = Nothing End Sub (3) Combo2_Click 事件代码 Private Sub Combo2_Click() Dim
ADO
rs As New Recordset '声明一个记录集对象
ADO
rs.ActiveConnection =
ADO
cn '与
ADO
cn
连接
对象关联 '如果输入了课程号,则把课程名显示在Text2.text strSQL = "select * from 课程情况表" strSQL = strSQL + " Where 课程号='" + Combo2.Text + " '"
ADO
rs.Open strSQL Text2.Text =
ADO
rs.Fields("课程名")
ADO
rs.Close '
关闭
记录集 (3) Combo2_Click 事件代码 If Combo1 "" Then '输入完毕则显示成绩信息 '查询学生成绩表中是否有指定指定学号与课程号的记录 strSQL = "select * from 学生成绩表" strSQL = strSQL & " Where 学号='" + Combo1.Text + " '" strSQL = strSQL & " and 课程号='" + Combo2.Text + "'"
ADO
rs.Open strSQL If
ADO
rs.EOF Then MsgBox "学生成绩表在不存在学号为" + Combo1.Text + "课程号为" + Combo2.Text + "的记录,请重新输入!", vbCritical + vbOKOnly Text2.Text = "" Text3.Text = "" Exit Sub Else Text3.Text =
ADO
rs.Fields("成绩") End If End If If
ADO
rs.State = adStateOpen Then
ADO
rs.Close '
关闭
记录集 Set
ADO
rs = Nothing End Sub (4)、 Command1_Click()(修改/确认按钮)事件代码 Private Sub Command1_Click() Dim strSQL As String Dim
ADO
rs As New Recordset '声明一个记录集对象
ADO
rs.ActiveConnection =
ADO
cn '与
ADO
cn
连接
对象关联 '检查学号与课程号是否输入 If Combo1.Text = "" Or Combo2.Text = "" Then MsgBox "输入数据不全,请重新输入数据!", vbCritical + vbOKOnly Exit Sub End If (4)、 Command1_Click()(修改/确认按钮)事件代码 '根据当前按钮文字的不同进行相关处理 If Command1.Caption = "修改" Then Command1.Caption = "确认" Command2.Caption = "放弃" Else Command1.Caption = "修改" Command2.Caption = "返回" '拼写Update语句,以便进行修改 strSQL = "Update 学生成绩表" strSQL = strSQL + " Set 成绩=" + Text3.Text strSQL = strSQL + " Where 学号='" + Combo1.Text + "'" strSQL = strSQL + " And 课程号='" + Combo2.Text + " '"
ADO
cn.Execute strSQL '执行Updata语句 MsgBox "修改成功!", vbQuestion + vbOKOnly End If If
ADO
rs.State = adStateOpen Then
ADO
rs.Close '
关闭
记录集 Set
ADO
rs = Nothing End Sub (5) Command2_Click(返回/放弃) 事件代码 Private Sub Command2_Click() If Command2.Caption = "返回" Then Un
load
Me Else Command2.Caption = "返回" Command1.Caption = "修改" End If End Sub 8.frmDeleteStudent (删除学生)
窗体
的代码设计 (1)、
Form
_
Load
()事件代码 Private Sub
Form
_
Load
() Dim
ADO
rs As New Recordset '声明记录集对象
ADO
rs.ActiveConnection =
ADO
cn '与
ADO
cn
连接
对象关联 '对Combo1组合框进行初始化
ADO
rs.Open "select 学号 from 学生情况表 Order By 学号" Combo1.Clear Do While Not
ADO
rs.EOF Combo1.AddItem Trim(
ADO
rs.Fields("学号")) '添加"学号"字段值
ADO
rs.MoveNext '取下一条记录 Loop
ADO
rs.Close '
关闭
记录集 '对Combo2组合框进行初始化
ADO
rs.Open "select 姓名 from 学生情况表 Order By 学号" Combo2.Clear Do While Not
ADO
rs.EOF Combo2.AddItem Trim(
ADO
rs.Fields("姓名")) '添加"姓名"字段值
ADO
rs.MoveNext '取下一条记录 Loop
ADO
rs.Close '
关闭
记录集 End Sub (2) Combo1_Click 事件代码 Private Sub Combo1_Click() Dim
ADO
rs As New Recordset '声明一个记录集对象
ADO
rs.ActiveConnection =
ADO
cn '与
ADO
cn
连接
对象关联 '若选择了学号则将姓名自动填写到Combo2.Text
ADO
rs.Open "Select 姓名 From 学生情况表 Where 学号 ='" + Combo1.Text + "'" If
ADO
rs.EOF Then MsgBox "学生情况表中没有学号为" + Combo1.Text + "的记录,请重新输入!", vbQuestion + vbOKOnly Combo1.Text = "" Exit Sub Else Combo2.Text =
ADO
rs.Fields("姓名") End If
ADO
rs.Close '
关闭
记录集 End Sub (3) Combo2_Click 事件代码 Private Sub Combo2_Click() Dim
ADO
rs As New Recordset '声明一个记录集对象
ADO
rs.ActiveConnection =
ADO
cn '与
ADO
cn
连接
对象关联 '若选择了姓名则将学号自动填写到Combo1.Text
ADO
rs.Open "Select 学号 From 学生情况表 Where 姓名 ='" + Combo2.Text + "'" If
ADO
rs.EOF Then MsgBox "学生情况表中没有姓名为" + Combo2.Text + "的记录,请重新输入!", vbQuestion + vbOKOnly Combo1.Text = "" Exit Sub Else Combo1.Text =
ADO
rs.Fields("学号") End If
ADO
rs.Close '
关闭
记录集 End Sub (4)、 Command1_Click()(确定按钮)事件代码 Private Sub Command1_Click() Dim
ADO
rs As New Recordset '声明记录集对象 Dim
ADO
rs1 As New Recordset '声明记录集对象
ADO
rs.ActiveConnection =
ADO
cn '与
ADO
cn
连接
对象关联
ADO
rs1.ActiveConnection =
ADO
cn '与
ADO
cn
连接
对象关联 '若学号和姓名同时为空则提示用户重新输入 If Combo1.Text = "" And Combo2.Text = "" Then MsgBox "学号和姓名不能同时为空,请重新输入!", vbQuestion + vbOKOnly Exit Sub End If (4)、 Command1_Click()(确定按钮)事件代码 '若输入了学号则将姓名自动填写到Combo2.Text If Combo1.Text "" And Combo2.Text = "" Then
ADO
rs.Open "Select 姓名 From 学生情况表 Where 学号 ='" + Combo1.Text + "'" If
ADO
rs.EOF Then MsgBox "学生情况表中没有学号为" + Combo1.Text + "的记录,请重新输入!", vbQuestion + vbOKOnly Combo1.Text = "" Exit Sub Else Combo2.Text =
ADO
rs.Fields("姓名") End If If
ADO
rs.State = adStateOpen Then
ADO
rs.Close '
关闭
记录集 End If (4)、 Command1_Click()(确定按钮)事件代码 '若输入了号姓名则将学号自动填写到Combo1.Text If Combo2.Text "" And Combo1.Text = "" Then
ADO
rs1.Open "Select 学号 From 学生情况表 Where 姓名='" + Combo2.Text + "'" If
ADO
rs1.EOF Then MsgBox "学生情况表中没有姓名为" + Combo2.Text + "的记录,请重新输入!", vbQuestion + vbOKOnly Combo2.Text = "" Exit Sub Else Combo1.Text =
ADO
rs1.Fields("学号") End If If
ADO
rs1.State = adStateOpen Then
ADO
rs1.Close '
关闭
记录集 End If '查询学生情况表中是否有指定学号和指定姓名的记录 If Combo1.Text "" And Combo2.Text "" Then
ADO
rs.Open "Select * From 学生情况表 Where 学号='" + Combo1.Text + "'" + " And 姓名='" + Combo2.Text + "'" If
ADO
rs.EOF Then MsgBox "学生情况表中没有学号为" + Combo1.Text + "且姓名为" + Combo2.Text + "的记录,请重新输入!", vbQuestion + vbOKOnly Combo1.Text = "" Combo2.Text = "" Exit Sub Else Combo1.Text =
ADO
rs.Fields("学号") Combo2.Text =
ADO
rs.Fields("姓名") End If If
ADO
rs.State = adStateOpen Then
ADO
rs.Close '
关闭
记录集 End If End Sub (5)、 Command2_Click()(确认按钮)事件代码 Private Sub Command2_Click() Dim xm As String Dim xh As String Dim strSQL As String Dim
ADO
rs As New Recordset '声明记录集对象
ADO
rs.ActiveConnection =
ADO
cn '与
ADO
cn
连接
对象关联 '如果学号与姓名同时为空则提示重新输入/选择 If Combo1.Text = "" Or Combo2.Text = "" Then MsgBox "学号和姓名不能为空,请重新输入!", vbQuestion + vbOKOnly Else xh = Combo1.Text xm = Combo2.Text If MsgBox("删除学号为" + xh + "姓名为" + xm + "的学生记录,该学生在学生成绩表中的全部记录也将一起删除,是否继续?", vbQuestion + vbYesNo) = vbYes Then '拼写Delete学生成绩表指定记录语句 strSQL = "Delete From 学生成绩表" strSQL = strSQL + " Where 学号='" + Combo1.Text + "'"
ADO
cn.Execute strSQL '执行Delete语句 '拼写Delete学生情况表指定记录语句 strSQL = "Delete From 学生情况表" strSQL = strSQL + " Where 学号='" + Combo1.Text + "'"
ADO
cn.Execute strSQL '执行Delete语句 MsgBox "删除成功!", vbQuestion + vbOKOnly Combo1.Text = "" Combo2.Text = "" End If End If If
ADO
rs.State = adStateOpen Then
ADO
rs.Close '
关闭
记录集 End Sub (6)、 Command3_Click()(返回按钮)事件代码 Private Sub Command3_Click() Un
load
Me End Sub 9. frmDeleteCourse(删除课程)
窗体
代码设计 (1)、
Form
_
Load
()事件代码 Private Sub
Form
_
Load
() Dim
ADO
rs As New Recordset '声明记录集对象
ADO
rs.ActiveConnection =
ADO
cn '与
ADO
cn
连接
对象关联 '对Combo1组合框进行初始化
ADO
rs.Open "select 课程号 from 课程情况表 Order By 课程号" Combo1.Clear Do While Not
ADO
rs.EOF Combo1.AddItem Trim(
ADO
rs.Fields("课程号")) '添加"课程号"字段值
ADO
rs.MoveNext '取下一条记录 Loop
ADO
rs.Close '
关闭
记录集 '对Combo2组合框进行初始化
ADO
rs.Open "select 课程名 from 课程情况表 Order By 课程号" Combo2.Clear Do While Not
ADO
rs.EOF Combo2.AddItem Trim(
ADO
rs.Fields("课程名")) '添加"课程名"字段值
ADO
rs.MoveNext '取下一条记录 Loop
ADO
rs.Close '
关闭
记录集 End Sub (2) Combo1_Click 事件代码 Private Sub Combo1_Click() Dim
ADO
rs As New Recordset '声明一个记录集对象
ADO
rs.ActiveConnection =
ADO
cn '与
ADO
cn
连接
对象关联 '若选择了课程号则将课程名自动填写到Combo2.Text
ADO
rs.Open "Select 课程名 From 课程情况表 Where 课程号 ='" + Combo1.Text + "'" If
ADO
rs.EOF Then MsgBox "课程情况表中没有课程号为" + Combo1.Text + "的记录,请重新输入!", vbQuestion + vbOKOnly Combo1.Text = "" Exit Sub Else Combo2.Text =
ADO
rs.Fields("课程名") End If
ADO
rs.Close '
关闭
记录集 End Sub (3) Combo2_Click 事件代码 Private Sub Combo2_Click() Dim
ADO
rs As New Recordset '声明一个记录集对象
ADO
rs.ActiveConnection =
ADO
cn '与
ADO
cn
连接
对象关联 '若选择了课程名则将课程号自动填写到Combo1.Text
ADO
rs.Open "Select 课程号 From 课程情况表 Where 课程名 ='" + Combo2.Text + "'" If
ADO
rs.EOF Then MsgBox "课程情况表中没有课程名为" + Combo2.Text + "的记录,请重新输入!", vbQuestion + vbOKOnly Combo1.Text = "" Exit Sub Else Combo1.Text =
ADO
rs.Fields("课程号") End If
ADO
rs.Close '
关闭
记录集 End Sub (4)、 Command1_Click()(确定按钮)事件代码 Private Sub Command1_Click() Dim
ADO
rs As New Recordset '声明记录集对象 Dim
ADO
rs1 As New Recordset '声明记录集对象
ADO
rs.ActiveConnection =
ADO
cn '与
ADO
cn
连接
对象关联
ADO
rs1.ActiveConnection =
ADO
cn '与
ADO
cn
连接
对象关联 '若课程号和课程名同时为空则提示用户重新输入 If Combo1.Text = "" And Combo2.Text = "" Then MsgBox "课程号和课程名不能同时为空,请重新输入!", vbQuestion + vbOKOnly Exit Sub End If (4)、 Command1_Click()(确定按钮)事件代码 '若输入了课程号则将课程名自动填写到Combo2.Text If Combo1.Text "" And Combo2.Text = "" Then
ADO
rs.Open "Select 课程名 From 课程情况表 Where 课程号 ='" + Combo1.Text + "'" If
ADO
rs.EOF Then MsgBox "课程情况表中没有课程号为" + Combo1.Text + "的记录,请重新输入!", vbQuestion + vbOKOnly Combo1.Text = "" Exit Sub Else Combo2.Text =
ADO
rs.Fields("课程名") End If If
ADO
rs.State = adStateOpen Then
ADO
rs.Close '
关闭
记录集 End If (4)、 Command1_Click()(确定按钮)事件代码 '若输入了课程名则将课程号自动填写到Combo1.Text If Combo2.Text "" And Combo1.Text = "" Then
ADO
rs1.Open "Select 课程号 From 课程情况表 Where 课程名='" + Combo2.Text + "'" If
ADO
rs1.EOF Then MsgBox "课程情况表中没有课程名为" + Combo2.Text + "的记录,请重新输入!", vbQuestion + vbOKOnly Combo2.Text = "" Exit Sub Else Combo1.Text =
ADO
rs1.Fields("课程号") End If If
ADO
rs1.State = adStateOpen Then
ADO
rs1.Close '
关闭
记录集 End If (4)、 Command1_Click()(确定按钮)事件代码 '查询课程情况表中是否有指定课程号和指定课程名的记录 If Combo1.Text "" And Combo2.Text "" Then
ADO
rs.Open "Select * From 课程情况表 Where 课程号='" + Combo1.Text + "'" + " And 课程名='" + Combo2.Text + "'" If
ADO
rs.EOF Then MsgBox "课程情况表中没有课程号为" + Combo1.Text + "且课程名为" + Combo2.Text + "的记录,请重新输入!", vbQuestion + vbOKOnly Combo1.Text = "" Combo2.Text = "" Exit Sub Else Combo1.Text =
ADO
rs.Fields("课程号") Combo2.Text =
ADO
rs.Fields("课程名") End If If
ADO
rs.State = adStateOpen Then
ADO
rs.Close '
关闭
记录集 End If End Sub (5)、 Command2_Click()(确认按钮)事件代码 Private Sub Command2_Click() Dim xm As String Dim xh As String Dim strSQL As String Dim
ADO
rs As New Recordset '声明记录集对象
ADO
rs.ActiveConnection =
ADO
cn '与
ADO
cn
连接
对象关联 '如果课程号与课程名同时为空则提示重新输入/选择 If Combo1.Text = "" Or Combo2.Text = "" Then MsgBox "课程号和课程名不能为空,请重新输入!", vbQuestion + vbOKOnly Else xh = Combo1.Text xm = Combo2.Text If MsgBox("删除课程号为" + xh + "课程名为" + xm + "的课程记录,该课程在学生成绩表中的全部记录也将一起删除,是否继续?", vbQuestion + vbYesNo) = vbYes Then (5)、 Command2_Click()(确认按钮)事件代码 '拼写Delete学生成绩表指定记录语句 strSQL = "Delete From 学生成绩表" strSQL = strSQL + " Where 课程号='" + Combo1.Text + "'"
ADO
cn.Execute strSQL '执行Delete语句 '拼写Delete课程情况表指定记录语句 strSQL = "Delete From 课程情况表" strSQL = strSQL + " Where 课程号='" + Combo1.Text + "'"
ADO
cn.Execute strSQL '执行Delete语句 MsgBox "删除成功!", vbQuestion + vbOKOnly Combo1.Text = "" Combo2.Text = "" End If End If If
ADO
rs.State = adStateOpen Then
ADO
rs.Close '
关闭
记录集 End Sub (6)、 Command3_Click()(返回按钮)事件代码 Private Sub Command3_Click() Un
load
Me End Sub 10. frmDeleteGrade (删除成绩)
窗体
代码设计 (1)、
Form
_
Load
()事件代码 Private Sub
Form
_
Load
() Dim
ADO
rs As New Recordset '声明记录集对象
ADO
rs.ActiveConnection =
ADO
cn '与
ADO
cn
连接
对象关联 '对Combo1组合框进行初始化
ADO
rs.Open "Select 学号 From 学生情况表 Order By 学号" Combo1.Clear Do While Not
ADO
rs.EOF Combo1.AddItem Trim(
ADO
rs.Fields("学号")) '添加"学号"字段值
ADO
rs.MoveNext '取下一条记录 Loop
ADO
rs.Close '
关闭
记录集 '对Combo2组合框进行初始化
ADO
rs.Open "select 课程号 from 课程情况表 Order By 课程号" Combo2.Clear Do While Not
ADO
rs.EOF Combo2.AddItem Trim(
ADO
rs.Fields("课程号")) '添加"课程号"字段值
ADO
rs.MoveNext '取下一条记录 Loop
ADO
rs.Close '
关闭
记录集 'End Sub (2) Combo1_Click 事件代码 Private Sub Combo1_Click() Dim
ADO
rs As New Recordset '声明一个记录集对象
ADO
rs.ActiveConnection =
ADO
cn '与
ADO
cn
连接
对象关联 '如果输入了学号,则把姓名显示在Text1.Text strSQL = "select * from 学生情况表" strSQL = strSQL + " Where 学号='" + Combo1.Text + " '"
ADO
rs.Open strSQL Text1.Text =
ADO
rs.Fields("姓名")
ADO
rs.Close '
关闭
记录集 (2) Combo1_Click 事件代码(续) If Combo2 "" Then '输入完毕则显示成绩信息 '查询学生成绩表中是否有指定指定学号与课程号的记录 strSQL = "select * from 学生成绩表" strSQL = strSQL & " Where 学号='" + Combo1.Text + " '" strSQL = strSQL & " and 课程号='" + Combo2.Text + "'"
ADO
rs.Open strSQL If
ADO
rs.EOF Then MsgBox "学生成绩表在不存在学号为" + Combo1.Text + "课程号为" + Combo2.Text + "的记录,请重新输入!", vbCritical + vbOKOnly Text1.Text = "" Text3.Text = "" Exit Sub Else Text3.Text =
ADO
rs.Fields("成绩") End If End If If
ADO
rs.State = adStateOpen Then
ADO
rs.Close '
关闭
记录集 Set
ADO
rs = Nothing End Sub (3) Combo2_Click 事件代码 Private Sub Combo2_Click() Dim
ADO
rs As New Recordset '声明一个记录集对象
ADO
rs.ActiveConnection =
ADO
cn '与
ADO
cn
连接
对象关联 '如果输入了课程号,则把课程名显示在Text2.text strSQL = "select * from 课程情况表" strSQL = strSQL + " Where 课程号='" + Combo2.Text + " '"
ADO
rs.Open strSQL Text2.Text =
ADO
rs.Fields("课程名")
ADO
rs.Close '
关闭
记录集 (3) Combo2_Click 事件代码(续) If Combo1 "" Then '输入完毕则显示成绩信息 '查询学生成绩表中是否有指定指定学号与课程号的记录 strSQL = "select * from 学生成绩表" strSQL = strSQL & " Where 学号='" + Combo1.Text + " '" strSQL = strSQL & " and 课程号='" + Combo2.Text + "'"
ADO
rs.Open strSQL If
ADO
rs.EOF Then MsgBox "学生成绩表在不存在学号为" + Combo1.Text + "课程号为" + Combo2.Text + "的记录,请重新输入!", vbCritical + vbOKOnly Text2.Text = "" Text3.Text = "" Exit Sub Else Text3.Text =
ADO
rs.Fields("成绩") End If End If If
ADO
rs.State = adStateOpen Then
ADO
rs.Close '
关闭
记录集 Set
ADO
rs = Nothing End Sub (4)、 Command1_Click()(确定按钮)事件代码 Private Sub Command1_Click() Dim strSQL As String Dim
ADO
rs As New Recordset '声明一个记录集对象
ADO
rs.ActiveConnection =
ADO
cn '与
ADO
cn
连接
对象关联 Dim
ADO
rs1 As New Recordset '声明一个记录集对象
ADO
rs1.ActiveConnection =
ADO
cn '与
ADO
cn
连接
对象关联 Dim
ADO
rs2 As New Recordset '声明一个记录集对象
ADO
rs2.ActiveConnection =
ADO
cn '与
ADO
cn
连接
对象关联 ‘如果学号为空则提示用户重新输入 If Combo1.Text = "" Then MsgBox "学号不能为空,请重新输入!", vbQuestion + vbOKOnly Combo1.Text = "" Text1.Text = "" Exit Sub End If (4)、 Command1_Click()(确定按钮)事件代码---续 '如果课程号为空则提示拥护重新输入 If Combo2.Text = "" Then MsgBox "课程号不能为空,请重新输入!", vbQuestion + vbOKOnly Combo2.Text = "" Text2.Text = "" Exit Sub End If '查询学生情况表中是否有指定学号的记录 If Combo1.Text "" Then
ADO
rs1.Open "Select 姓名 From 学生情况表 Where 学号='" + Combo1.Text + "'" If
ADO
rs1.EOF Then MsgBox “学生情况表中没有学号为” + Combo1.Text + “的记录,请重新输入!”, vbQuestion + vbOKOnly Combo1.Text = "" Text1.Text = "" Exit Sub Else '若有指定学号的学生记录,则将姓名字段值填写到text1 Text1.Text =
ADO
rs1.Fields("姓名") End If End If '查询课程情况表中是否有指定课程号的记录 If Combo2.Text "" Then
ADO
rs2.Open "Select 课程名 From 课程情况表 Where 课程号='" + Combo2.Text + "'" If
ADO
rs2.EOF Then MsgBox "课程情况表中没有课程号为" + Combo2.Text + "的记录,请重新输入!", vbQuestion + vbOKOnly Combo2.Text = "" Text2.Text = "" Exit Sub Else '若有指定课程号的课程记录,则将课程名字段值填写到text2 Text2.Text =
ADO
rs2.Fields("课程名") End If End If '查询学生表中是否有指定学号与课程号的记录 If Combo1 "" And Combo1 "" Then strSQL = "select * from 学生成绩表" strSQL = strSQL & " Where 学号='" + Combo1.Text + " '" strSQL = strSQL & " and 课程号='" + Combo2.Text + "'"
ADO
rs.Open strSQL If
ADO
rs.EOF Then MsgBox "学生成绩表在不存在学号为" + Combo1.Text + "课程号为" + Combo2.Text + "的记录,请重新输入!", vbCritical + vbOKOnly Combo1.Text = "" Combo2.Text = "" Text1.Text = "" Text2.Text = "" Text3.Text = "" Exit Sub Else Text3.Text = Val(
ADO
rs.Fields("成绩")) End If End If End Sub 5)、 Command2_Click()(确认按钮)事件代码 Private Sub Command2_Click() If MsgBox("是否要删除学号为" + Combo1.Text + "课程号为" + Combo2.Text + "的成绩记录?", vbQuestion + vbYesNo) = vbYes Then '拼写Delete语句 strSQL = "Delete From 学生成绩表" strSQL = strSQL + " Where 学号='" + Combo1.Text + "'" strSQL = strSQL + " And 课程号='" + Combo2.Text + "'"
ADO
cn.Execute strSQL '执行Delete语句 Combo1.Text = "" Combo2.Text = "" Text1.Text = "" Text2.Text = "" Text3.Text = "" MsgBox "删除成功!", vbQuestion + vbOKOnly End If End Sub (6)、 Command3_Click()(返回按钮)事件代码 Private Sub Command3_Click() Un
load
Me End Sub 11. frmDeleteUser(删除用户)
窗体
代码设计 (1)、 Command1_Click()(确定按钮)事件代码 Private Sub Command1_Click() '定义变量,建立与
数据库
的
连接
Dim strSQL As String Dim
ADO
rs2 As New Recordset
ADO
rs2.ActiveConnection =
ADO
cn If Trim(Text1.Text) = "" Then MsgBox "请输入用户名!", , "删除用户" Text1.SetFocus Exit Sub End If If Trim(Text2.Text) = "" Then MsgBox "请输入用户密码!", , "删除用户" Text2.SetFocus Exit Sub End If '查询是否有指定用户名和密码的记录
ADO
rs2.Open "Select * From 用户 Where 用户名='" + Text1.Text + "'" + " And 密码='" + Text2.Text + "'" If
ADO
rs2.EOF Then MsgBox "用户中没有名为:" + Text1.Text + " 密码为:" + Text2.Text + "的记录,请重新输入!", vbQuestion + vbOKOnly Text1.Text = "" Text2.Text = "" Text1.SetFocus Else If MsgBox("是否删除用户名为“" + Text1.Text + "”密码为“" + Text2.Text + "”的用户记录?", vbQuestion + vbYesNo) = vbYes Then '拼写Delete用户指定记录语句 strSQL = "Delete From 用户 Where 用户名='" + Text1.Text + "'" + " And 密码='" + Text2.Text + "'"
ADO
cn.Execute strSQL '执行Delete语句 MsgBox "删除成功!", vbQuestion + vbOKOnly Text1.Text = "" Text2.Text = "" Text1.SetFocus End If End If End Sub (2)、 Command2_Click()(返回按钮)事件代码 Private Sub Command2_Click() Un
load
Me End Sub 12. frmQuerystudent(学生基本信息查询)
窗体
代码设计 使用
ado
数据控件与DataGrid数据绑定控件实现 (1)、
Form
_
Load
()事件代码 Private Sub
Form
_
Load
() Combo1.Text = "全部学生" '默认查询全部学生 Label2.Caption = "全部学生数据浏览表格:" Label1.Visible = False Text1.Visible = False End Sub 说明:这里使用
ado
数据控件
ado
dc
1与DataGrid数据绑定控件DataGrid1,并已设置好
ado
dc
属性---查询
数据库
中的表格(学生情况表)。 (2) Combo1_Click 事件代码 Private Sub Combo1_Click() Select Case Combo1.ListIndex '根据选择的组合框项进行处理 Case 0 '选择“全部学生”时隐藏提示信息 strSQL = "select * from 学生情况表"
Ado
dc
1.CommandType = a
dC
mdText
Ado
dc
1.RecordSource = strSQL
Ado
dc
1.Refresh Label2.Caption = "全部学生数据浏览表格:“ DataGrid1.Visible = True Label1.Visible = False Text1.Visible = False Case 1 '选择“按学号查询”时给出提示并定位光标 Label1.Visible = True Text1.Visible = True Text1.SetFocus Label1.Caption = "请输入学号并按回车键确认:" Case 2 '选择“按姓名查询”时给出提示并定位光标 Label1.Visible = True Text1.Visible = True Text1.SetFocus Label1.Caption = "请输入姓名并按回车键确认:" End Select End Sub (3) Text1_KeyPress 事件代码 Private Sub Text1_KeyPress(KeyAscii As Integer) Dim atrsql As String If KeyAscii = 13 Then Select Case Combo1.ListIndex '根据选择的组合框项进行处理 Case 1 '选择“按学号查询”时 strSQL = "select * from 学生情况表 where 学号='" & Trim(Text1.Text) & "'"
Ado
dc
1.CommandType = a
dC
mdText
Ado
dc
1.RecordSource = strSQL
Ado
dc
1.Refresh If
Ado
dc
1.Recordset.EOF Then '没有找到时 Label2.Caption = "" DataGrid1.Visible = False MsgBox "没有该生记录信息,请检查你输入的学号是否正确!" Else '找到时 Label2.Caption = "学号为" & Text1.Text & "的学生数据浏览表格:" DataGrid1.Visible = True End If Text1.Text = "" Case 2 '选择“按姓名查询”时 strSQL = "select * from 学生情况表 where 姓名='" & Trim(Text1.Text) & "'"
Ado
dc
1.CommandType = a
dC
mdText
Ado
dc
1.RecordSource = strSQL
Ado
dc
1.Refresh If
Ado
dc
1.Recordset.EOF Then '没有找到时 Label2.Caption = "" DataGrid1.Visible = False MsgBox "没有该生记录信息,请检查你输入的姓名是否正确!" Else '找到时 Label2.Caption = "姓名为" & Text1.Text & "的学生数据浏览表格:" DataGrid1.Visible = True End If Text1.Text = "" End Select End If End Sub (4) Command1_Click(返回按钮)事件代码 Private Sub Command1_Click() Un
load
Me End Sub 13. frmQueryGrade(学生成绩查询)
窗体
代码设计 使用MSFlexGrid1控件(编程模型)实现 (1)、
Form
_
Load
()事件代码 Private Sub
Form
_
Load
() Dim
ADO
rs As New Recordset '声明一个记录集对象
ADO
rs.ActiveConnection =
ADO
cn '与
ADO
cn
连接
对象关联 MSFlexGrid1.Visible = False '隐藏MSFlexGrid1控件 '对Combo1组合框进行初始化
ADO
rs.Open "select 学号 from 学生情况表 Order By 学号" Combo1.Clear Do While Not
ADO
rs.EOF Combo1.AddItem Trim(
ADO
rs.Fields("学号")) '添加"学号"字段值
ADO
rs.MoveNext '取下一条记录 Loop
ADO
rs.Close '
关闭
记录集对象 Text1.Text = "" End Sub (2) Combo1_Click 事件代码 Private Sub Combo1_Click() Dim
ADO
rs As New Recordset '声明一个记录集对象
ADO
rs.ActiveConnection =
ADO
cn '与
ADO
cn
连接
对象关联 '若选择了学号则将姓名自动填写到text1
ADO
rs.Open "Select 姓名 From 学生情况表 Where 学号 ='" & Combo1.Text & "'" If
ADO
rs.EOF Then MsgBox "学生情况表中没有学号为" & Combo1.Text & "的记录,请重新输入!", vbQuestion & vbOKOnly Text1.Text = "" Else Text1.Text =
ADO
rs.Fields("姓名") End If
ADO
rs.Close '
关闭
记录集 End Sub (3) Command1_Click(确定按钮)事件代码 Private Sub Command1_Click() Dim strSQL As String, strSQL2 As String Dim strRecord As String Dim
ADO
rs As New Recordset '声明记录集对象 Dim
ADO
rs2 As New Recordset
ADO
rs.ActiveConnection =
ADO
cn '与
ADO
cn
连接
对象关联
ADO
rs2.ActiveConnection =
ADO
cn strSQL = "select * from 学生情况表 Where 学号='" & Combo1.Text & " '"
ADO
rs.Open strSQL If
ADO
rs.EOF Then MsgBox ("
数据库
中找不到学号为" & Combo1.Text & "的记录,请重新输入!") Combo1.Text = "" Text1.Text = "" Else Text1.Text =
ADO
rs.Fields("姓名") End If '拼写Select语句 strSQL2 = "Select 学生成绩表.学号,学生成绩表.课程号,学生成绩表.成绩," strSQL2 = strSQL2 & "学生情况表.姓名,课程情况表.课程名" strSQL2 = strSQL2 & " From 学生成绩表,学生情况表,课程情况表" strSQL2 = strSQL2 & " Where 学生成绩表.学号=学生情况表.学号" strSQL2 = strSQL2 & " And 学生成绩表.课程号=课程情况表.课程号" strSQL2 = strSQL2 & " And 学生成绩表.学号= '" & Combo1.Text & "'"
ADO
rs2.Open strSQL2 '执行Select语句 If
ADO
rs2.EOF = True Then MSFlexGrid1.Visible = False '隐藏MSFlexGrid1控件 MsgBox "没有该生成绩!" Else '初始化MSFlexGrid表格 MSFlexGrid1.Rows = 0 '行数 MSFlexGrid1.Cols = 5 '列数 MSFlexGrid1.ColWidth(3) = 1500 '调节第4列宽度 MSFlexGrid1.Visible = True '显示MSFlexGrid1控件 '设置表格标题栏 strRecord = "学号" & vbTab & "姓名" & vbTab & "课程号" strRecord = strRecord & vbTab & "课程名" & vbTab & "成绩" MSFlexGrid1.AddItem strRecord '从第一条记录开始循环,直至表尾,填写表格内容 Do While Not
ADO
rs2.EOF '拼写表格内容 strRecord = Trim(
ADO
rs2.Fields("学号")) & vbTab & Trim(
ADO
rs2.Fields("姓名")) & vbTab strRecord = strRecord & Trim(
ADO
rs2.Fields("课程号")) & vbTab & Trim(
ADO
rs2.Fields("课程名")) strRecord = strRecord & vbTab & Trim(Str(
ADO
rs2.Fields("成绩"))) MSFlexGrid1.AddItem strRecord '向表格内添加行
ADO
rs2.MoveNext '取下一条记录 Loop End If
ADO
rs.Close '
关闭
记录集对象
ADO
rs2.Close '释放记录集对象 Set
ADO
rs = Nothing Set
ADO
rs2 = Nothing End Sub (4) Command2_Click(返回按钮)事件代码 Private Sub Command2_Click() Un
load
Me End Sub 14.身份验证
窗体
(frmlogin)代码设计 1)、
Form
_Initialize()事件代码 Private Sub
Form
_Initialize()
ADO
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=成绩.MDB" If
ADO
cn.State = adStateClosed Then
ADO
cn.Open '打开到
数据库
的
连接
End Sub 2)、Command1_Click()事件代码—登录按钮 Private Sub Command1_Click() Dim
ADO
rs As New Recordset '声明记录集对象 Dim strSQL As String
ADO
rs.ActiveConnection =
ADO
cn '与
连接
对象
ado
cn关联 If Trim(Text1.Text) = "" Or Trim(Text2.Text) = "" Then '检验用户名与密码为空否 MsgBox "帐号和密码不能为空,请重新填写", vbOKOnly + vbIn
form
ation Exit Sub End If strSQL = "select * from 用户 where 用户名='" + Trim(Text1.Text) + "'"
ADO
rs.Open strSQL '按用户名查询 If
ADO
rs.EOF Then '找不到该用户 MsgBox "用户不存在", vbCritical + vbOKOnly Text1.Text = "" Text1.SetFocus Exit Sub ElseIf Trim(Text2.Text)
ADO
rs.Fields(“密码”) Then ‘找到用户后检验密码 MsgBox "密码不正确", vbOKOnly + vbIn
form
ation Text2.Text = "" Text2.SetFocus Exit Sub End If '用户登录成功,记录用户类型参数 usertype =
ADO
rs.Fields("用户类型") Un
load
Me MDI
Form
1.Show '登录成功,打开MDI主
窗体
ADO
rs.Close Set
ADO
rs = Nothing End Sub 3)、Command2_Click()事件代码—退出按钮 Private Sub Command2_Click()
ADO
cn.Close Set
ADO
cn = Nothing Un
load
Me End Sub 4)、登录成功并打开MDI主
窗体
后,应根据人员类型设置菜单权限 Private Sub MDI
Form
_
Load
() '根据人员类型设置菜单权限 Select Case usertype 'Case "管理员" Case "查询人员" addmenu.Enabled = False deletemenu.Enabled = False Updata.Enabled = False End Select End Sub 1.4 其他 一、用户自定义函数的使用 1、初始化
窗体
大小及显示座标函数 Public Sub init(frmname As Object, X As Integer, Y As Integer) frmname.Width = X frmname.Height = Y frmname.Left = (MDI
Form
1.Width - frmname.Width) / 2 frmname.Top = (MDI
Form
1.Height - frmname.Height) / 2 End Sub 2、校验输入的文本框字符是否为数字或backspace回格键函数 ,’如果是则返回true,否则返回false Public Function in_int(KeyAscii As Integer) As Boolean Dim Accept_int(10) As String '可接受的字符数组 Accept_int(0) = "0" Accept_int(1) = "1" Accept_int(2) = "2" Accept_int(3) = "3" Accept_int(4) = "4" Accept_int(5) = "5" Accept_int(6) = "6" Accept_int(7) = "7" Accept_int(8) = "8" Accept_int(9) = "9" Accept_int(10) = Chr(8) 'Chr(8)是backspace键对应的字符 in_int = False For i = 1 To 10 '检查输入的字符是否在数组中 If Chr(KeyAscii) = Accept_int(i) Then in_int = True End If Next i End Function
基于
数据库
的VB课程设计
4.设计体
会
通过本次课程设计,使我从更深的层次了解了VB的设计技巧和应用方法。在程序的编制和调试过程中,我从中学到了很多有用的方法,比如通过本次设计,我更深刻的体
会
到了VB系统的方便与实用。在课程设计的过程中,我对课本上的知识进行了复习,从中找出了不少盲点,由衷地感觉到学习过程中应该把学的知识作扎实,多动手多思考,这样才能最大限度的减少知识的漏洞。 把课本上的东西变成实际的东西,让其有使用的价值,是一件很让人高兴的事。我切实的体
会
到VB这门课程是有用处的,它解释了我平时学习中的很多疑惑,让我增长了很多见识。 5.参考文献 [1] 刘天惠.Visual Basic程序设计教程[M]. 北京: 清华大学大学出版社,2003.12-24 [2] 龚沛曾.Visual Basic程序设计教程[M]. 高等教育出版社, 2004.28-45 [3] 蒋加伏.Visual Basic程序设计教程[M].北京: 北京邮电大学出版社,2003.10-56 [4] Microsoft .Visual Basic 6.0 中文版控件大全[M]北京:电子工业出版社,2004.15-23 6.附录 源程序代码如下: (1)用户登录
窗体
Private Sub cmdOK_Click() Dim SQL As String Dim rs As
ADO
DB.Recordset 沈 阳 大 学 课程设计说明书 NO.16 If Trim(UserName.Text = "") Then MsgBox "没有输入用户名称,请重新输入!", vbOKOnly + vbExclamation, "警告" UserName.SetFocus Else '查询用户 SQL = "select * from UserInfo where UserID='" & UserName.Text & "'" Set rs = TransactSQL(SQL) If iflag = 1 Then If rs.EOF = True Then MsgBox "没有这个用户,请重新输入!", vbOKOnly + vbExclamation, "警告" UserName.SetFocus Else If Trim(rs.Fields(1)) = Trim(PassWord.Text) Then rs.Close Me.Hide gUserName = Trim(UserName.Text) '保存用户名称 FrmMain.Show Un
load
Me Else MsgBox "密码不正确,请重新输入!", vbOKOnly + vbExclamation, "警告" PassWord.SetFocus PassWord.Text = "" 沈 阳 大 学 课程设计说明书 NO.17 End If End If Else Un
load
Me End If End If pw
dC
ount = pw
dC
ount + 1 '判断输入次数 If pw
dC
ount = 3 Then Un
load
Me Exit Sub End If End Sub Private Sub
Form
_
Load
() pw
dC
ount = 0 gUserName = "" End Sub Private Sub PassWord_KeyDown(KeyCode As Integer, Shift As Integer) TabToEnter KeyCode End Sub Private Sub UserName_KeyDown(KeyCode As Integer, Shift As Integer) TabToEnter KeyCode End Sub 沈 阳 大 学 课程设计说明书 NO.18 (2)添加用户
窗体
Option Explicit Public str1 As String '保存修改时的SQL语句 Public ID As Integer '保存记录编号 Private baddflag As Boolean rivate Sub AID_KeyDown(KeyCode As Integer, Shift As Integer) TabToEnter KeyCode End Sub Private Sub AID_LostFocus() Dim SQL As String Dim rs As New
ADO
DB.Recordset SQL = "select SName,SDept,SPosition from StuffInfo where SID='" & Me.AID.Text & "'" Set rs = TransactSQL(SQL) If rs.EOF = False Then Me.AName = rs(0) '初始化员工姓名 Me.AOldDept = rs(1) Me.AOldPosition = rs(2) Else MsgBox "员工编号输入错误,或者没有这个员工!", vbOKOnly + vbExclamation, "警告!" Me.AID = "" Me.AID.SetFocus Me.AID.ListIndex = 0 End If rs.Close End Sub 沈 阳 大 学 课程设计说明书 NO.19 Private Sub cm
dC
ancel_Click() Un
load
Me Exit Sub End Sub rivate Sub checkinput() If Me.ANewPosition = "" Then MsgBox "请输入新的职务!", vbOKOnly + vbExclamation, "警告!" Me.ANewPosition.SetFocus ElseIf Me.AOutTime = "" Or IsDate(Me.AOutTime) = False Then MsgBox "请输入正确的调出时间!", vbOKOnly + vbExclamation, "警告!" Me.AOutTime = "" Me.AOutTime.SetFocus ElseIf Me.AInTime = "" Or IsDate(Me.AInTime) = False Then MsgBox "请输入正确的调入时间!", vbOKOnly + vbExclamation, "警告!" Me.AInTime = "" Me.AInTime.SetFocus Else baddflag = True End If End Sub Private Sub cmdOK_Click() Dim SQL As String Dim rs As New
ADO
DB.Recordset 沈 阳 大 学 课程设计说明书 NO.20 baddflag = False Call checkinput If baddflag = True Then If flag = 1 Then 'Call checkinput SQL = "select * from AlterationInfo" Set rs = TransactSQL(SQL) rs.AddNew rs.Fields(1) = Me.AID rs.Fields(2) = Me.AName rs.Fields(3) = Me.AOldDept rs.Fields(4) = Me.ANewDept rs.Fields(5) = Me.AOldPosition rs.Fields(6) = Me.ANewPosition rs.Fields(7) = Me.AOutTime rs.Fields(8) = Me.AInTime rs.Fields(9) = Me.ARemark rs.Update rs.Close SQL = "update StuffInfo set SDept='" & Me.ANewDept & "', SPosition='" SQL = SQL & Me.ANewPosition & "' where SID='" & Me.AID & "'" TransactSQL (SQL) MsgBox "已经添加调动信息!", vbOKOnly + vbExclamation, "添加结果!" SQL = "select * from AlterationInfo order by ID" 沈 阳 大 学 课程设计说明书 NO.21 frmAlterationResult.
Ado
dc
1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + App.Path + "\Person.mdb" frmAlterationResult.
Ado
dc
1.RecordSource = SQL If SQL <> "" Then frmAlterationResult.
Ado
dc
1.Refresh End If Else '修改记录 'Call checkinput SQL = "update StuffInfo set SDept='" & Me.ANewDept & "', SPosition='" SQL = SQL & Me.ANewPosition & "' where SID='" & Me.AID & "'" TransactSQL (SQL) SQL = "update AlterationInfo set AOldDept='" & Me.AOldDept & "',ANewDept='" SQL = SQL & Me.ANewDept & "',AOldPosition='" & Me.AOldPosition SQL = SQL & "',ANewPosition='" & Me.ANewPosition & "',AOutTime=#" & Me.AOutTime SQL = SQL & "#,AInTime=#" & Me.AInTime & "# where ID=" & ID TransactSQL (SQL) MsgBox "已经修改信息!", vbOKOnly + vbExclamation, "修改结果!" Un
load
Me SQL = "select * from AlterationInfo order by ID" frmAlterationResult.
Ado
dc
1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + App.Path + "\Person.mdb" frmAlterationResult.
Ado
dc
1.RecordSource = SQL If SQL <> "" Then frmAlterationResult.
Ado
dc
1.Refresh End If 沈 阳 大 学 课程设计说明书 NO.22 Set frmAlterationResult.DataGrid1.DataSource = frmAlterationResult.
Ado
dc
1.Recordset frmAlterationResult.DataGrid1.Refresh frmAlterationResult.Show frmAlterationResult.ZOrder 0 Call init Me.ZOrder 0 End If End If End Sub (3)查询员工信息
窗体
Option Explicit Private query As String Private fromdate As String Private todate As String Private Sub cm
dC
ancel_Click() Un
load
Me Exit Sub End Sub Private Sub CombineDate() fromdate = Me.FromYear.Text & "-" & Me.FromMonth.Text & "-1" fromdate =
Form
at(Me.FromYear.Text & "-" & Me.FromMonth.Text & "-1", "yyyy-mm-dd") todate = Me.ToYear.Text & "-" & Me.ToMonth.Text & "-1" todate =
Form
at(todate, "yyyy-mm-dd") End Sub 沈 阳 大 学 课程设计说明书 NO.23 Private Sub setSQL() If I
DC
heck.Value = vbChecked Then query = "select * from StuffInfo where SID='" & Trim(Me.SID) & "'" End If If NameCheck.Value = vbChecked Then query = "select * from StuffInfo where SName='" & Trim(Me.SName) & "'" End If End Sub Private Sub cmdOK_Click() Call CombineDate Call setSQL frmResult.createList (query) frmResult.Show Un
load
Me End Sub Private Sub
Form
_
Load
() Dim i As Integer Dim SQL As String Dim rs As New
ADO
DB.Recordset SQL = "select distinct datepart(yy,SInTime) from StuffInfo" Set rs = TransactSQL(SQL) If Not rs.EOF Then rs.MoveFirst While Not rs.EOF If Not IsNull(rs.Fields(0)) Then 沈 阳 大 学 课程设计说明书 NO.24 Me.FromYear.AddItem rs(0) Me.ToYear.AddItem rs(0) End If rs.MoveNext Wend rs.Close Me.FromYear.ListIndex = 0 Me.ToYear.ListIndex = 0 End If For i = 1 To 12 Me.FromMonth.AddItem i Me.ToMonth.AddItem i Next i Me.FromMonth.ListIndex = 0 Me.ToMonth.ListIndex = 0 End Sub
分析 "End" "Un
load
Me" "Exit Sub" 之间的区别与联系
之前就想过这个问题,这么熟悉的几个东西居然对他们分析的不是很透彻、“End” 跟 “Un
load
Me” 在敲程序 的时候经常敲到,“exit sub” 更是熟悉,下面,解析: End 跟 Un
load
me End是强制结束整个程序,而Un
load
Me是卸载...
分析 "End"、"Un
load
Me"、“Exit Sub” 之间的区别与联系
之前就想过这个问题,这么熟悉的几个东西居然对他们分析的不是很透彻、 “End” 跟 “Un
load
Me” 在敲程序 的时候经常敲到,“exit sub” 更是熟悉,下面,解析: End 跟 Un
load
me End是强制结束整个程序,而Un
load
Me是卸载当前
窗体
,当程序中最后一个
窗体
被卸载后,整个程
VB基础类
7,762
社区成员
197,608
社区内容
发帖
与我相关
我的任务
VB基础类
VB 基础类
复制链接
扫一扫
分享
社区描述
VB 基础类
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章