Database 如果VB.net中填充了四个文本框,则计算并更新vaules

Database 如果VB.net中填充了四个文本框,则计算并更新vaules,database,vb.net,ms-access,Database,Vb.net,Ms Access,如果填充了四个文本框,我想计算并更新数据库 若填充了1、2或3,则不会进行计算,只会更新到数据库 这是我的密码 Dim constring As String = "Provider=Microsoft.JET.OLEDB.4.0;Data Source=|DataDirectory|\SLACdb.mdb;" Dim con As OleDbConnection = New OleDbConnection(constring) Dim cmd As OleDbCommand

如果填充了四个文本框,我想计算并更新数据库

若填充了1、2或3,则不会进行计算,只会更新到数据库

这是我的密码

 Dim constring As String = "Provider=Microsoft.JET.OLEDB.4.0;Data Source=|DataDirectory|\SLACdb.mdb;"
    Dim con As OleDbConnection = New OleDbConnection(constring)
    Dim cmd As OleDbCommand
    Dim dt As DataTable = New DataTable()

    Dim prelim, midterm, prefinal, final, ave, eq As String

    prelim = txtboxprelim.Text
    midterm = txtboxmidterm.Text
    prefinal = txtboxsemi.Text
    final = txtboxfinals.Text
    ave = txtboxave.Text
    eq = txtboxequivalent.Text

    Dim sql As String = "UPDATE StudentLoad SET prelim = ?, midterm = ?, semifinals = ?, finals = ?" & _
                        " WHERE  name = '" & txtboxname.Text & "' "

    If prelim = "" Or midterm = "" Or prefinal = "" Or final = "" Then
        cmd = New OleDbCommand(sql, con)


        cmd.Parameters.AddWithValue("@p1", prelim)
        cmd.Parameters.AddWithValue("@p2", midterm)
        cmd.Parameters.AddWithValue("@p3", prefinal)
        cmd.Parameters.AddWithValue("@p4", final)

        Try
            con.Open()
            If (cmd.ExecuteNonQuery > 0) Then

            End If
            con.Close()

        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
        Me.StudentRemarksTableAdapter.Fill(Me.SLACdbDataSet.StudentRemarks)
    Else
        txtboxave.Text = (prelim + midterm + prefinal + final) / 4
        If txtboxave.Text <= 77 Then
            txtboxequivalent.Text = 3
        ElseIf txtboxave.Text <= 80 Then
            txtboxequivalent.Text = 2.75
        ElseIf txtboxave.Text <= 83 Then
            txtboxequivalent.Text = 2.5
        ElseIf txtboxave.Text <= 86 Then
            txtboxequivalent.Text = 2.25
        ElseIf txtboxave.Text <= 89 Then
            txtboxequivalent.Text = 2
        ElseIf txtboxave.Text <= 92 Then
            txtboxequivalent.Text = 1.75
        ElseIf txtboxave.Text <= 95 Then
            txtboxequivalent.Text = 1.5
        ElseIf txtboxave.Text <= 98 Then
            txtboxequivalent.Text = 1.25
        ElseIf txtboxave.Text <= 100 Then
            txtboxequivalent.Text = 1
        Else
            txtboxequivalent.Text = 5
        End If

        Dim constring1 As String = "Provider=Microsoft.JET.OLEDB.4.0;Data Source=|DataDirectory|\SLACdb.mdb;"
        Dim con1 As OleDbConnection = New OleDbConnection(constring1)
        Dim cmd1 As OleDbCommand
        Dim dt1 As DataTable = New DataTable()


        Dim sql1 As String = "UPDATE StudentLoad SET prelim = ?, midterm = ?, semifinals = ?, finals = ?, average = ?, equivalent = ?" & _
                        " WHERE  name = '" & txtboxname.Text & "'"
        cmd1 = New OleDbCommand(sql1, con1)


        cmd1.Parameters.AddWithValue("@p1", prelim)
        cmd1.Parameters.AddWithValue("@p2", midterm)
        cmd1.Parameters.AddWithValue("@p3", prefinal)
        cmd1.Parameters.AddWithValue("@p4", final)
        cmd1.Parameters.AddWithValue("@p5", ave)
        cmd1.Parameters.AddWithValue("@p6", eq)


        Try
            con1.Open()
            If (cmd1.ExecuteNonQuery > 0) Then

            End If
            con1.Close()

        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End If
    Me.StudentRemarksTableAdapter.Fill(Me.SLACdbDataSet.StudentRemarks)
    Admin.StudentLoadTableAdapter.Update(SLACdbDataSet.StudentLoad)
使用这段代码,它只会在四个文本框被填充时更新数据库,而不会进行计算


很抱歉英语不好

代码中的问题是prelim、midtime、prefinal、final、ave和eq是字符串

为了计算平均值,需要将这些变量设置为整数。因此 Dim prelim as integer=convert.TOINT32TXTBEXPRELIM.text,也可以将其转换为期中、期末、期末、平均值和均衡器。cmd.parameters应为

cmd.Parameters.AddWithValue("@p1", txtboxprelims.text)
cmd.Parameters.AddWithValue("@p2", txtboxmidterm.text)
cmd.Parameters.AddWithValue("@p3", txtboxprefinal.text)
cmd.Parameters.AddWithValue("@p4", txtboxfinal.text)
在您的以下声明中:

txtboxave.Text = (prelim + midterm + prefinal + final) / 4
应该是

ave = (prelim + midterm + prefinal + final) / 4
将txtboxave.text替换为ave,然后在if和else语句下面添加:

txtboxequivalent.text = eq
txtboxave.text = ave
最后,下面的cmd.parameters应该是:

cmd1.Parameters.AddWithValue("@p1", prelim.tostring)
cmd1.Parameters.AddWithValue("@p2", midterm.tostring)
cmd1.Parameters.AddWithValue("@p3", prefinal.tostring)
cmd1.Parameters.AddWithValue("@p4", final.tostring)
cmd1.Parameters.AddWithValue("@p5", ave.tostring)
cmd1.Parameters.AddWithValue("@p6", eq.tostring)