最近在大家验收时,我旁听了一点,很多师哥师姐提出了很多我们没有到过的东西,感觉长了不少知识。
在作品展的时候还能想到界面的美化,但是这次却没怎么注意,但是至少那些控件的摆放,对齐还是要有滴。
比如,在我们登陆学生信息管理系统的时候,敲完用户名和密码进入系统时,猛敲回车,根本不能像QQ那样,如我们所愿的进入系统,而是呆呆的毫无反应,这时,只能尴尬地,毫无创意地去点击确定按钮。这根本不符合我们平时的习惯嘛~
这个问题改进起来,也很好改进,只需更改按钮的Default属性就行了。
例如,在本窗体中,用了一个mcclean布尔类型的变量来标记是否修改过输入框中的值,其中TRUE表示未标记,即未修改过任何值,FALSE表示标记,修改过其中的值,但是细看代码:
Private Sub editCommand_Click() mcclean = False '点击按钮后,标记修改过当前记录 '第一组按钮不能用 Frame1.Enabled = False firstCommand.Enabled = False previousCommand.Enabled = False nextCommand.Enabled = False lastCommand.Enabled = False '可以修改输入框中的值 txtCourseno.Enabled = True txtCoursename.Enabled = True comboCoursetype.Enabled = True txtCoursedes.Enabled = True '添加信息 comboCoursetype.AddItem "必修" comboCoursetype.AddItem "考察" myBookmark = mrc.Bookmark '记录书签 End Sub
Private Sub updateCommand_Click() Dim txtSQL As String 'SQL查询语句 Dim MsgText As String 'EXECUTSQL第二个参数 Dim mrcc As ADODB.Recordset '记录集对象 If mcclean Then '如果没有修改过课程信息 MsgBox "请先修改课程信息", vbOKOnly + vbExclamation, "警告" Exit Sub End If '检验输入框的值是否为空 If Not Testtxt(txtCourseno.Text) Then MsgBox "请输入课程编号。", vbOKOnly + vbExclamation, "警告" txtCourseno.SetFocus Exit Sub End If If Not IsNumeric(Trim(txtCourseno.Text)) Then MsgBox "课程编号请输入数字", vbOKOnly + vbExclamation, "警告" txtCourseno.SetFocus Exit Sub End If If Not Testtxt(txtCoursename.Text) Then MsgBox "请输入课程名称", vbOKOnly + vbExclamation, "警告" txtCoursename.SetFocus Exit Sub End If If Not Testtxt(comboCoursetype.Text) Then MsgBox "请输入课程类型", vbOKOnly + vbExclamation, "警告" comboCoursetype.SetFocus Exit Sub End If If Not Testtxt(txtCoursedes.Text) Then MsgBox "请输入课程描述信息。", vbOKOnly + vbExclamation, "警告" txtCoursedes.SetFocus Exit Sub End If mrc.Delete '执行查询,返回记录集 txtSQL = "select * from course_info where course_no='" & Trim(txtCourseno.Text) & "'" Set mrcc = ExecuteSQL(txtSQL, MsgText) If mrcc.EOF = False Then MsgBox "课程编号重复,请重新输入", vbOKOnly + vbExclamation, "警告" mrcc.Close txtCourseno.SetFocus Else mrcc.Close '更新记录 mrc.AddNew mrc.Fields(0) = Trim(txtCourseno.Text) mrc.Fields(1) = Trim(txtCoursename.Text) mrc.Fields(2) = Trim(comboCoursetype.Text) mrc.Fields(3) = Trim(txtCoursedes.Text) mrc.Update MsgBox "修改课程信息成功", vbOKOnly + vbExclamation, "警告" mrc.Bookmark = myBookmark '标记书签 Call viewData '显示信息 '第一组按钮可用 Frame1.Enabled = True firstCommand.Enabled = True previousCommand.Enabled = True nextCommand.Enabled = True lastCommand.Enabled = True '输入框边为不可输入状态 txtCourseno.Enabled = False txtCoursename.Enabled = False comboCoursetype.Enabled = False txtCoursedes.Text = False mcclean = True '标记值置为默认值 End If End Sub
这里少考虑了那种点击了修改按钮,却没有修改的情况。
为此,我们添加如下代码:定义一个字符数组,用来当前正在修改的记录的原值
:Dim strTxtValue(0 To 3) As String
在修改记录和更新记录的代码中加入如下代码:
Private Sub editCommand_Click() mcclean = False '点击按钮后,标记修改过当前记录 '记录下此时文本框中的值 strTxtValue(0) = mrc.Fields(0) strTxtValue(1) = mrc.Fields(1) strTxtValue(2) = mrc.Fields(2) strTxtValue(3) = mrc.Fields(3) '第一组按钮不能用 Frame1.Enabled = False firstCommand.Enabled = False previousCommand.Enabled = False nextCommand.Enabled = False lastCommand.Enabled = False '可以修改输入框中的值 txtCourseno.Enabled = True txtCoursename.Enabled = True comboCoursetype.Enabled = True txtCoursedes.Enabled = True '添加信息 comboCoursetype.AddItem "必修" comboCoursetype.AddItem "考察" myBookmark = mrc.Bookmark '记录书签 End Sub
如上,在标记修改后,记录下文本框中的值。
Private Sub updateCommand_Click() Dim txtSQL As String 'SQL查询语句 Dim MsgText As String 'EXECUTSQL第二个参数 Dim mrcc As ADODB.Recordset '记录集对象 If mcclean Then '如果没有修改过课程信息 MsgBox "请先修改课程信息", vbOKOnly + vbExclamation, "警告" Exit Sub End If '检验输入框的值是否为空 If Not Testtxt(txtCourseno.Text) Then MsgBox "请输入课程编号。", vbOKOnly + vbExclamation, "警告" txtCourseno.SetFocus Exit Sub End If If Not IsNumeric(Trim(txtCourseno.Text)) Then MsgBox "课程编号请输入数字", vbOKOnly + vbExclamation, "警告" txtCourseno.SetFocus Exit Sub End If If Not Testtxt(txtCoursename.Text) Then MsgBox "请输入课程名称", vbOKOnly + vbExclamation, "警告" txtCoursename.SetFocus Exit Sub End If If Not Testtxt(comboCoursetype.Text) Then MsgBox "请输入课程类型", vbOKOnly + vbExclamation, "警告" comboCoursetype.SetFocus Exit Sub End If If Not Testtxt(txtCoursedes.Text) Then MsgBox "请输入课程描述信息。", vbOKOnly + vbExclamation, "警告" txtCoursedes.SetFocus Exit Sub End If mrc.Delete '执行查询,返回记录集 txtSQL = "select * from course_info where course_no='" & Trim(txtCourseno.Text) & "'" Set mrcc = ExecuteSQL(txtSQL, MsgText) '判断是否出现了点击完修改按钮,却没有修改的情况 If (strTxtValue(0) = txtCourseno.Text And strTxtValue(1) = txtCoursename.Text And strTxtValue(2) = comboCoursetype.Text And strTxtValue(3) = txtCoursedes.Text) Then MsgBox "亲~~~您没有修改过记录,请修改后再更新!", vbOKOnly + vbExclamation, "警告" Exit Sub End If If mrcc.EOF = False Then MsgBox "课程编号重复,请重新输入", vbOKOnly + vbExclamation, "警告" mrcc.Close txtCourseno.SetFocus Else mrcc.Close '更新记录 mrc.AddNew mrc.Fields(0) = Trim(txtCourseno.Text) mrc.Fields(1) = Trim(txtCoursename.Text) mrc.Fields(2) = Trim(comboCoursetype.Text) mrc.Fields(3) = Trim(txtCoursedes.Text) mrc.Update MsgBox "修改课程信息成功", vbOKOnly + vbExclamation, "警告" mrc.Bookmark = myBookmark '标记书签 Call viewData '显示信息 '第一组按钮可用 Frame1.Enabled = True firstCommand.Enabled = True previousCommand.Enabled = True nextCommand.Enabled = True lastCommand.Enabled = True '输入框边为不可输入状态 txtCourseno.Enabled = False txtCoursename.Enabled = False comboCoursetype.Enabled = False txtCoursedes.Text = False mcclean = True '标记值置为默认值 End If End Sub
在读取完记录后,先判断输入框中的值是否和按下修改按钮后,却没有修改的值一样,如果一样,弹出提示,并退出当前过程。
执行后: