vb吐槽班04 一句话,不想多说

时间:2021-06-25 19:00:49

        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一下,其实挺简单的是吧。。。

   修改比较麻烦,我先说说查询。

   这个查询就要贴图了。。。

   vb吐槽班04 一句话,不想多说vb吐槽班04 一句话,不想多说

   首先上面那个表格似的东西是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,第一行显示下面这个东西。

   vb吐槽班04 一句话,不想多说vb吐槽班04 一句话,不想多说

   然后选好查询方式,输入信息,点击查询。

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 IfEnd 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 IfEnd Sub


   还能说啥,又是一样的过程。首先在窗体加载的时候载入一个记录,修改时先检查,在查找是否有重复项,最后删除当前记录,添加修改后的记录。
   
   从代码上看,基本上添加修改查询的过程是一样的,只不过是最后对记录做了一些不同的操作。
   就我个人而言呢,这些都是在敲完之后,又看了一遍才发现的,有时候我们可以用同一种方法去实现许多的功能,而有时,也需要我们用其他巧妙地方法去实现我们不会的功能,我觉得这是我整个系统学到的最重要的东西。
   好了,这期也是因为Ti3的滑铁卢搞得我不想写什么东西了,那就这样吧,我就不信还有人说我博客短!


下期预告:
   不做死就不会死,删除最后的记录and设置课程不重复。
以上