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

        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设置课程不重复。
以上

你可能感兴趣的:(vb吐槽班04 一句话,不想多说)