Database 如果VB.net中填充了四个文本框,则计算并更新vaules
如果填充了四个文本框,我想计算并更新数据库 若填充了1、2或3,则不会进行计算,只会更新到数据库 这是我的密码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
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)