需要修改的记录而不需要复杂的输入。当点击Datagrid表格中的任意记录时,各个TextBox需要显示该记录的对应信息,可以使用Datagrid的RowColChang事件完成次功能:
Private Sub dgUser_RowColChange(LastRow As Variant, ByVal LastCol As Integer)
If result <> 0 Then
txtUser.Text = dgUser.Columns(0).Text txtPassword.Text = dgUser.Columns(1).Text cboUser.Text = dgUser.Columns(2).Text End If End Sub
8)viewDataUser函数:将信息数据在Datagrid表格中显示。 处理流程:生成SQL语句(检索用户信息表中的全部数据),调用viewData函数。
Private Sub viewDataUser() '检索所有的用户信息 txtSQL = \UserId as 用户名,UserPassword as 用户密码,UserKind as 用户类型 \
txtSQL = txtSQL + \result = viewData(txtSQL, dgUser) End Sub
9)当TextBox内容改变时将TextBox背景色恢复为白色代码(如表5-7所示)
表5-7 恢复TextBox背景色代码设计 TextBox控件 txtPassword txtUser
事件 Chang Chang 代码 txtPassword.BackColor=WHITE txtUser.BackColor=WHITE 10)“退出”按钮:卸载窗体,语法为Unload ME。 2.修改密码子模块
(1)修改密码子模块的IPO图。 输入:原密码、新密码和确认密码 处理流程:
1)修改密码窗体启动,输入原密码、新密码和确认密码。
2)从用户信息表(tbUser)检查该用户的原密码是否与输入的原密码相同。 3)如果不同则进行信息提示,处理中止。
4)如果相同,检验新密码是否为空,如果为空则尽心信息提示,处理终止。 5)如果新密码非空,检验输入的确认密码和新密码是否相同。 6)如果不同则进行信息提示,处理终止。
7)更新用户信息(tbUser)中的用户密码字段。 输出::对用用户信息表(tbUser)的密码字段进行修改。 (2)修改密码子模块的窗体设计 (见图5-8)
33
图5-4 修改密码子模块窗体效果图
(3)窗体和控件特殊属性设计(见表5-8)
表5-8 窗体和控件特殊属性 控件名称 frmPassword
控件属性 类型 设置 登录对话框 (4)程序设计如下:
1)窗体公共变量定义(见表5-9)
表5-9 窗体公共变量定义 变量名称 txtSQL rstPass results 变量类型 String ADODB.Rexordset Boolean 说明 更新操作SQL语句 用户信息数据集 ExecuteSQL函数返回值 2)“确定”按钮:更新用户密码。 处理流程:
? 以用户名为关键字,检索用户信息表中与用户名对应的密码字段(用户名已
在登录成功时被赋给Public变量gUserName)。
? 将输入的原密码与检索到的密码相比较:如果不相等,提示用户“原密码不
正确!”,设置原密码TextBox获得焦点,背景色为蓝色,处理终止。
? 如果相等,检验新密码TextBox不能为空且值不能超过用户信息表的用户密
码字段的允许长度,否则提示用户相应信息,设置新密码TextBox获得焦点,背景色为蓝色,处理终止。
? 调用公共函数txtNull检验确认密码TextBox不能为空,否则提示用户相应
的信息,处理终止。
? 更新用户表中的用户密码字段。 Private Sub cmdOK_Click()
Dim strPass As String '检索该用户输入的原密码是否正确
txtSQL = \\
results = ExecuteSQL(txtSQL, rstPass, False) strPass = rstPass.Fields(0)
If StrComp(Trim(strPass), Trim(txtOldPass.Text)) <> 0 Then MsgBox \原密码不正确!\警告\ Me.txtOldPass.SetFocus
34
txtOldPass.BackColor = BLUE Exit Sub Else
'检验新密码不能为空
If txtIsNull(txtNewPass) Then MsgBox \请输入新密码,密码不能为空!\vbOKOnly + vbExclamation, \警告\
Exit Sub Else
If IsOverStringLen(txtNewPass.Text, 8) Then
MsgBox \密码不能超过8位!\警告\
txtNewPass.SetFocus
txtNewPass.BackColor = BLUE Exit Sub End If End If
'密码必须确认
If txtIsNull(txtPasswordSure) Then
MsgBox \请确认新密码!\警告\ Exit Sub End If
'检验两次输入的新密码是否
If StrComp(Trim(txtPasswordSure.Text), Trim(txtNewPass.Text)) <> 0 Then
MsgBox \两次输入密码不一致!\警告\
txtPasswordSure.SetFocus
txtPasswordSure.BackColor = BLUE Exit Sub End If
'更新数据库 txtSQL = \tbUser set UserPassword = '\+ Trim(txtNewPass.Text) txtSQL = txtSQL + \ results = ExecuteSQL(txtSQL, rstPass, True)
MsgBox \密码修改成功!\警告\ Unload Me End If End Sub
2)当TextBox内容改变时将TextBox背景色恢复为白色 3)“取消”按钮:卸载本窗体,语法为Unload ME
35
5.5基础数据管理模块
1. 基础数据管理模块IPO图
输入:职务、民族或者文化程度的编号和名称。 处理流程:
(1)当用户类型为系统管理员时该彩单可用。 (2)基础数据管理窗体启动。 (3)从职务编码信息表(tbDuty)中读取全部记录,显示在表格控件dgBasicData中。
(4)当鼠标单击标签,标签改变时,从相应的数据库表中读取全部记录,显示在表格中。
(5)根据系统管理员的选择(添加、修改和删除)进行相应处理,具体步骤(6)~(8)。
(6)添加操作:
? 输入编号和名称
以编号为关键字,检索与标签对应的职务(tbDuty)或民族(tbNation)或文化程度(tbEdu)编码信息表中是否存在该记录。
? 如果记录已经存在则进行错误信息提示,添加处理终止
? 如果记录不存在,根据数据库中对应字段的定义,检验输入值是否合法,如
果输入有错误 则进行错误信息提示,添加处理终止。
? 如果输入正确,执行SQL语句,向标签对应的数据库中插入记录 ? 提示用户添加成功,刷新窗体表格中的数据 (7)修改操作:
? 通过以下两种方式或得修改记录:手动输入或者在表格单击任意单元格,窗
体的文本框中自动显示被点击记录的编号和名称。
? 以编号为关键字,检验与标签对用的职务(tbDuty)或民族(tbNation)或
文化程度(tbEdu)编码信息表中是否存在该记录。 ? 如果记录不存在则进行错误信息提示,处理终止。
? 如果记录存在,根据数据库中对应字段的定义,检验输入值是否合法,如果
输入有错误,则进行错误信息提示,修改处理终止。
? 如果输入正确,执行SQL语句,更新与标签对应的数据库表。 ? 提示用户修改成功信息,刷新截面表格中的数据。 (8)删除操作
? 通过以下两种方式或得修改记录:手动输入或者在表格单击任意单元格,窗
体的文本框中自动显示被点击记录的编号和名称。
? 以编号为关键字,检验与标签对用的职务(tbDuty)或民族(tbNation)或
文化程度(tbEdu)编码信息表中是否存在该记录。 ? 如果记录不存在则进行错误信息提示,处理终止。
? 如果记录存在,检验职员基本信息表中是否存在该编码。
? 如果存在该编码,为保证数据完整性,不予删除,并提示错误信息;否则根
据当前标签,更新对应的职务(tbDuty)或民族(tbNation)或文化程度(tbEdu)编码信息表。
36
? 提示用户删除成功信息,刷新截面表格中的数据, 输出:据选择的标签分别对职务bDuty)或民族(tbNation)或文化程度(tbEdu)编码信息表进行更新。
2. 基础数据管理模块的窗体设计(如图5-5所示)
图5-5 基础数据管理模块的窗体效果
3. 程序设计
(1) 窗体加载。
处理流程:置中窗体;设置编号和名称标签显示职务信息;调用viewData函数使表格中显示职务信息表全部数据。 Private Sub Form_Load() '置中窗体
Me.Move (Screen.Width - Me.Width) / 2, (Screen.Height - Me.Height) / 2
lblId.Caption = \职务编号\ lblName.Caption = \职务名称\
'窗体第一次加载,表格中显示职务信息 txtSQL = \DutyId as 职务编号,DutyName as 职务名称 from tbDuty order by DutyId\
result = viewData(txtSQL, dgBasicData) End Sub
(2) 删除记录,关键字取决于* *编号TextBox。 处理流程:
1)输入值的合法性检验:调用公共函数txtIsNull检验编号文本框不能为空,否则处理终止。
37