1、rst.CursorType = adOpenKeysetrst.Open sqlSet exesql = rstSet rst = NothingSet conn = NothingEnd Function公有函数亦定义在标准模块Module1.BAS中。2.2.2数据库的设计物理数据库名:studentODBC数据源名:字段名主键数据类型长度必填默认值CHECK约束说明Snochar8学号Sname5姓名Ssex2性别Sbirthdaydatetime1/1/1949,1/1/2010出生日期Sdept20信科系系科Sgradeint41,4年级2.2.1S表(学生基本信息表)userna
2、me用户名password密码jibie1等级2.2.2yonghu表(学生基本信息表)2.3效果和关键实现2.3.1登陆模块 (窗体名:login)图2-2登陆界面(窗体名:关键技术:1、操作数据库的专用函数exesql也应添加到标准模块Module1.BAS中并在VB在VB工程-引用中添加Microsoft ActiveX Data Objects 2.5 Library。2、登陆错误次数限制3次不允许用户无止尽尝试密码,一旦错误超过三次程序自动结束,在窗体通用部分首先定义窗体级变量TIM,,核心程序如下:验证操作员及密码 Dim sql As Stringsql = select * f
3、rom yonghu where username= + Combo1.Text + and password= + Text2.Text + Set rs = exesql(sql) If rs.RecordCount 0 Then Load main main.Show username = Combo1 Unload Me ElseIf TIM = 3 Then 密码输错3次,退出系统 myval = MsgBox(密码输入错误,请向系统管理员查询!, 0, ) If myval = vbOK Then End Else MsgBox 输入错误,你还有 & 3 - TIM & 次机会 T
4、IM = TIM + 1 End If3、支持键盘操作,例TEXT2文本框中支持方向键代码如下:Private Sub text2_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = vbKeyReturn Then CmdOk.SetFocus 按回车键CmdOk获得焦点 If KeyCode = vbKeyUp Then Combo1.SetFocus If KeyCode = vbKeyDown Then CmdOk.SetFocus End Sub4、密码框中输入任何字符以制定字符显示(例“*”),应设置其passwor
5、dchar属性的值即可。2.3.2学生信息管理模块(窗体名:main)图2-3学生信息管理界面(窗体名:1、采用adodc和datagrid显示数据。操作步骤:(1)选中工程-部件(2)Adodc控件完成与各类数据库的连接(连接ODBC数据源student),可执行sql命令(select * from s)。(3)datagrid控件完成数据的显示(指定其DataSource为Adodc控件)。2、记录移动技术首条:Adodc1.Recordset.MoveFirst未条:Adodc1.Recordset.MoveLast上一条(注意应判断是否已移到最前,如果不判断移到第1条记录后再往前移动
6、,程序就出错),关键代码如下:If Not Adodc1.Recordset.BOF ThenAdodc1.Recordset.MovePreviousEnd If下一条(注意应判断是否已移到最后,如果不判断移到第后条记录后再往后移动,程序就出错),关键代码如下:If Not Adodc1.Recordset.EOF ThenAdodc1.Recordset.MoveNext3、数据删除技术(应判断是否存在记录,否则不存在记录作删除操作程序报错)关键代码如下:If Adodc1.Recordset.RecordCount Dim sss sss = Trim(Adodc1.Recordset.
7、Fields(sno) If MsgBox(真的要删除 + sss + 吗?, vbYesNo, 系统友情提示) = vbYes Then Adodc1.Recordset.Delete4、查询技术:在这里强调标准SQL语句的语法问题,对于字符数据匹配,要加单引号,而对于数值型字段不需要加,例如SNO(char)与text1是否匹配的sql语句为:”select * from s where sno=” &text1&”,例如Sgrade(int)与text1是否匹配的sql语句为”select * from s where Sgrade=” &text15、聚集函数的使用(可以给聚集函数起别
8、名),使用方法如下:Dim t sqlt As Stringsqlt = select count(*) as 总人数 from s where Combo1.Text & Combo2.Text & Text1 &Set rs = exesql(sqlt) 调用执行SQL函数,已经在模块中添加Text2.Text = rs(总人数5、增加修改技术(共用界面update)增加全局变量Public Flag As Integer,Flag = 0 增加记录,Flag = 1 修改记录If Flag = 1 ThenCall edit调用编辑过程ElseCall add调用增加过程增加记录时,程序
9、中应考虑主键,空值,check等约束,因此程序中必须增加容错判断,代码如下:Sub add() 注意也可以直接使用insert语句Dim sql As Stringselect * from s where sno= Text1.Text &If Text1.Text = Or Text2.Text = ThenMsgBox 学号姓名不能空Exit SubIf DTPicker1.Value #1/1/2010# Or DTPicker1.Value #1/1/1949# Then出生日期不合法(1949-1-12010-1-1)!If rs.RecordCount = 0 Then rs.A
10、ddNew rs() = Text1Sname) = Text2 If Option1.Value = True ThenSsex) = 男女Sbirthday) = DTPicker1.ValueSdept) = Text3Sgrade) = CInt(Combo1.Text) rs.UPDATE增加记录成功学号重复无法添加!End Sub2、编辑记录时,首先加载被编辑的数据到各控件,因此在窗体的相应事件中添加:Private Sub Form_Load()Combo1.AddItem 1234If Flag = 1 Then 修改数据,首先加载该条数据FLAG全局变量。Text1 = ma
11、in.Adodc1.Recordset.Fields(Text1.Enabled = False 学号无法更改Text2 = main.Adodc1.Recordset.Fields(snameIf main.Adodc1.Recordset.Fields(ssex Option1.Value = True Option2.Value = True DTPicker1.Value = main.Adodc1.Recordset.Fields(sbirthday Text3 = main.Adodc1.Recordset.Fields(sdept Combo1.Text = main.Adodc
12、1.Recordset.Fields(sgrade具体编辑过程如下:Sub edit() 注意也可以直接使用update语句 rs(增加更新成功6,权限限制技术:Private Sub Form_Activate()权限判断1级权限所有权限等级2:拥有数据查询,增加权限等级3:拥有数据查询 username &If rs(jibie) = 2 ThenCommand3.Enabled = FalseCommand4.Enabled = FalseElseIf rs() = 3 ThenCommand5.Enabled = False7,报表打印技术(在报表中添加相应控件):Private Su
13、b DataReport_Initialize()Set rs1 = exesql(sqltext)Set DataReport1.DataSource = rs1 设置 DataReport 的数据源DataReport1.Sections(Section1).Controls(text1).DataField = 字段名text2text3text4DataReport1.Refresh2.3.3增加、修改学生信息模块(窗体名: update)图2-4增加学生信息界面(窗体名:update)图2-5修改学生信息界面窗体名:update2.3.4查询打印报表模块(窗体名: datarepor
14、t1)图2-6查询打印报表界面(datareport1)2.3.5权限管理模块(窗体名:图2-7权限管理界面(窗体名:quanxian)2.4本实例小结本章通过一个简单完整的应用程序开发实例,介绍了数据库应用系统开发中常用的一些技术,适合C级学生完成,涵盖了SQL的使用,常用控件的使用,报表的使用,我们在开发过程中,应充分考虑到到用户的需要,尽量的方便用户使用,例如,在这个例子中支持了键盘操作。当然本系统只是一个示例,在信息表述上不够完备,通用性不强,比如权限设置不够灵活,一些模块信息不够详细,读者可以根据实际情况来完善我们的例子,把它做得更加人性化,智能化,通用化。第3章医院体检结论查询打印系统(C级)
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1