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 "请选择课程类型","警告" comboCoursetype.SetFocus Exit Sub End If If Not Testtxt(txtCoursename.Text) Then MsgBox "请输入课程名称","警告" txtCoursename.SetFocus Exit Sub End If If Not Testtxt(txtCoursedes.Text) Then MsgBox "请输入课程描述","警告" txtCoursedes.SetFocus Exit Sub End If If Not IsNumeric(Trim(txtCourseno.Text)) Then MsgBox "请输入数字编号","警告" 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 "课程编号已存在,请重新输入","警告" 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 "添加成功","添加成功" '不重复则添加一条新纪录 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 "学号不能为空","警告" txtSID.SetFocus Exit Sub Else If Not IsNumeric(Trim(txtSID.Text)) Then MsgBox "请输入数字","警告" 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 "姓名不能为空","警告" 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 "班号不能为空","警告" 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 "请设置查询方式","警告" Exit Sub End If txtsql = txtsql & "ORDER BY student_ID" Set mrc = Executesql(txtsql,Msgtext) '再次初始化flexgrid With myflexgrid .Rows = 2 .CellAlignment = 4 .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),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 "没有记录","警告" 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 "请输入课程编号","警告" 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 "课程编号重复,请重新输入","警告" 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 "修改课程信息成功","修改成功" mrc.Bookmark = mybookmark Call viewData End If End Sub
还能说啥,又是一样的过程。首先在窗体加载的时候载入一个记录,修改时先检查,在查找是否有重复项,最后删除当前记录,添加修改后的记录。
从代码上看,基本上添加修改查询的过程是一样的,只不过是最后对记录做了一些不同的操作。
就我个人而言呢,这些都是在敲完之后,又看了一遍才发现的,有时候我们可以用同一种方法去实现许多的功能,而有时,也需要我们用其他巧妙地方法去实现我们不会的功能,我觉得这是我整个系统学到的最重要的东西。
好了,这期也是因为Ti3的滑铁卢搞得我不想写什么东西了,那就这样吧,我就不信还有人说我博客短!
下期预告: 不做死就不会死,删除最后的记录and设置课程不重复。 以上
原文链接:https://www.f2er.com/vb/258609.html