Ti3输了
好了,继续上次说的吧。
上次写的欠考虑了,什么都想不出来就乱写了,后来想想,没见过学生信息管理系统的,根本不知道我在说些什么。
那么这次还是仔细一点吧。不过毕竟是吐槽班,不是提高班,才不想那些什么严肃的风格,本来这些东西看着就烦,难道我们还要延续大学的那种教育方式不成?算了,一说起教育又要各种长篇大论了。
剩下的就是整个信息管理系统的部分了,总的来说就是,添加,修改,查询三大功能,然后连接上数据库对数据库,更新数据库中的内容
先从简单的添加开始
Private Sub cmdOK_Click() Dim mrc As ADODB.Recordset Dim Msgtext As String Dim txtSQL As String If Not Testtxt(txtCourseno.Text) Then MsgBox "请输入课程编号", vbOKOnly + vbExclamation, "警告" txtCourseno.SetFocus Exit Sub End If If Not Testtxt(comboCoursetype.Text) Then MsgBox "请选择课程类型", vbOKOnly + vbExclamation, "警告" comboCoursetype.SetFocus Exit Sub End If If Not Testtxt(txtCoursename.Text) Then MsgBox "请输入课程名称", vbOKOnly + vbExclamation, "警告" txtCoursename.SetFocus Exit Sub End If If Not Testtxt(txtCoursedes.Text) Then MsgBox "请输入课程描述", vbOKOnly + vbExclamation, "警告" txtCoursedes.SetFocus Exit Sub End If If Not IsNumeric(Trim(txtCourseno.Text)) Then MsgBox "请输入数字编号", vbOKOnly + vbExclamation, "警告" txtCourseno.SetFocus Exit Sub End If '检测是否输入规范 txtSQL = "SELECT * FROM course_info " Set mrc = ExecuteSQL(txtSQL, Msgtext) While (mrc.EOF = False) If Trim(mrc.Fields(0)) = Trim(txtCourseno.Text) Then MsgBox "课程编号已存在,请重新输入", vbOKOnly + vbExclamation, "警告" txtCourseno.SetFocus Exit Sub Else mrc.MoveNext End If Wend '检测是否重复 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 mrc.Close MsgBox "添加成功", vbOKOnly + vbExclamation, "添加成功" '不重复则添加一条新纪录 Unload Me End Sub
首先,判断你输入的东西是否符合我们要的信息,当然你非得把班号写成“信息技术提高班十期”,我也没治,咱就改改上边的代码就行了。然后,用我们上上期定义的ExecuteSQL函数检查一下输入的班号有没有重复的,其实这个也和学号,身份证号啥的一样,一个提高班,不能有俩十期是吧。好的,接下来输入的都OK,我们就把输入的信息添加进记录集,然后update一下,其实挺简单的是吧。。。
修改比较麻烦,我先说说查询。
这个查询就要贴图了。。。
首先上面那个表格似的东西是MSFlexGrid控件,至于怎么整出来,自行百度。
Private Sub Form_Load() With myflexgrid '初始化flexgrid控件的行标题 .CellAlignment = 4 'flexAlignCenter .TextMatrix(1, 0) = "学号" .TextMatrix(1, 1) = "姓名" .TextMatrix(1, 2) = "性别" .TextMatrix(1, 3) = "出生日期" .TextMatrix(1, 4) = "班号" .TextMatrix(1, 5) = "联系电话" .TextMatrix(1, 6) = "入校日期" .TextMatrix(1, 7) = "家庭住址" End With End Sub在窗体加载的时候先初始化flexgrid,第一行显示下面这个东西。
然后选好查询方式,输入信息,点击查询。
Private Sub cmdInquire_Click() '不同的选择,对SQL语句进行不同的修改 Dim txtSQL As String Dim Msgtext As String Dim dd(4) As Boolean Dim mrc As ADODB.Recordset txtSQL = "SELECT * FROM student_info where " '检查学号输入 If Check1(0).Value Then If Trim(txtSID.Text) = "" Then MsgBox "学号不能为空", vbOKOnly + vbExclamation, "警告" txtSID.SetFocus Exit Sub Else If Not IsNumeric(Trim(txtSID.Text)) Then MsgBox "请输入数字", vbOKOnly + vbExclamation, "警告" txtSID.SetFocus Exit Sub End If dd(0) = True txtSQL = txtSQL & "student_ID='" & Trim(txtSID.Text) & "'" End If End If '检查姓名输入 If Check1(1).Value Then If Trim(txtName.Text) = "" Then MsgBox "姓名不能为空", vbOKOnly + vbExclamation, "警告" txtName.SetFocus Exit Sub Else dd(1) = True If dd(0) Then txtSQL = txtSQL & "AND student_name='" & txtName.Text & "'" Else txtSQL = txtSQL & "student_name = '" & txtName.Text & "'" End If End If End If '检查班号输入 If Check1(2).Value Then If Trim(txtClassno.Text) = "" Then MsgBox "班号不能为空", vbOKOnly + vbExclamation, "警告" txtClassno.SetFocus Exit Sub Else dd(2) = True If dd(0) Or dd(1) Then txtSQL = txtSQL & "AND class_no='" & txtClassno.Text & "'" Else txtSQL = txtSQL & "class_no='" & txtClassno.Text & "'" End If End If End If '如果没有设置,提示 If Not (dd(0) Or dd(1) Or dd(2) Or dd(3)) Then MsgBox "请设置查询方式", vbOKOnly + vbExclamation, "警告" Exit Sub End If txtSQL = txtSQL & "ORDER BY student_ID" Set mrc = ExecuteSQL(txtSQL, Msgtext) '再次初始化flexgrid With myflexgrid .Rows = 2 .CellAlignment = 4 .TextMatrix(1, 0) = "学号" .TextMatrix(1, 1) = "姓名" .TextMatrix(1, 2) = "性别" .TextMatrix(1, 3) = "出生日期" .TextMatrix(1, 4) = "班号" .TextMatrix(1, 5) = "联系电话" .TextMatrix(1, 6) = "入校日期" .TextMatrix(1, 7) = "家庭住址" '将mrc中的记录显示出来 Do While Not mrc.EOF .Rows = .Rows + 1 '这种方式也可防止空白行的出现 .CellAlignment = 4 .TextMatrix(.Rows - 1, 0) = mrc.Fields(0) .TextMatrix(.Rows - 1, 1) = mrc.Fields(1) .TextMatrix(.Rows - 1, 2) = mrc.Fields(2) .TextMatrix(.Rows - 1, 3) = Format(mrc.Fields(3), "yyyy-mm-dd") .TextMatrix(.Rows - 1, 4) = mrc.Fields(4) .TextMatrix(.Rows - 1, 5) = mrc.Fields(5) .TextMatrix(.Rows - 1, 6) = Format(mrc.Fields(6), "yyyy-mm-dd") .TextMatrix(.Rows - 1, 7) = mrc.Fields(7) mrc.MoveNext Loop End With mrc.Close End Sub
就是这种感觉,过程其实还是一样的,检查输入的信息,输入OK的话就查出要的信息,只不过之后就是显示出来罢了。
最麻烦的修改。
稍微改了下源码。
Public Sub viewData() '显示记录的函数 txtCourseno.Text = mrc.Fields(0) txtCoursename.Text = mrc.Fields(1) comboCoursetype.Text = mrc.Fields(2) txtCoursedes.Text = mrc.Fields(3) End Sub
Private Sub Form_Load() '载入第一条记录 Dim txtSQL As String Dim Msgtext As String txtSQL = "SELECT * FROM course_info" Set mrc = ExecuteSQL(txtSQL, Msgtext) If mrc.RecordCount = 0 Then '如果没有记录,提示并使按钮不可用 MsgBox "没有记录", vbOKOnly + vbExclamation, "警告" Exit Sub Else '显示第一条记录 mrc.MoveFirst Call viewData mybookmark = mrc.Bookmark End If End Sub
Private Sub cmdUpdate_Click() Dim txtSQL As String Dim Msgtext As String Dim mrcc As ADODB.Recordset Dim mrccc As ADODB.Recordset '确认输入的信息是否符合规范 If Not Testtxt(txtCourseno.Text) Then MsgBox "请输入课程编号", vbOKOnly + vbExclamation, "警告" txtCourseno.SetFocus Exit Sub End If If Not Testtxt(comboCoursetype.Text) Then MsgBox "请选择课程类型", vbOKOnly + vbExclamation, "警告" comboCoursetype.SetFocus Exit Sub End If If Not Testtxt(txtCoursename.Text) Then MsgBox "请输入课程名称", vbOKOnly + vbExclamation, "警告" txtCoursename.SetFocus Exit Sub End If If Not Testtxt(txtCoursedes.Text) Then MsgBox "请输入课程描述", vbOKOnly + vbExclamation, "警告" txtCoursedes.SetFocus Exit Sub End If If Not IsNumeric(Trim(txtCourseno.Text)) Then MsgBox "请输入数字编号", vbOKOnly + vbExclamation, "警告" txtCourseno.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 End If End Sub
还能说啥,又是一样的过程。首先在窗体加载的时候载入一个记录,修改时先检查,在查找是否有重复项,最后删除当前记录,添加修改后的记录。
从代码上看,基本上添加修改查询的过程是一样的,只不过是最后对记录做了一些不同的操作。
就我个人而言呢,这些都是在敲完之后,又看了一遍才发现的,有时候我们可以用同一种方法去实现许多的功能,而有时,也需要我们用其他巧妙地方法去实现我们不会的功能,我觉得这是我整个系统学到的最重要的东西。
好了,这期也是因为Ti3的滑铁卢搞得我不想写什么东西了,那就这样吧,我就不信还有人说我博客短!
下期预告:
不做死就不会死,删除最后的记录and设置课程不重复。
以上