我希望有人能为我提供一些帮助吗?我花了最后4个小时试图解决这个问题,但没有到达任何地方。我实际上没有错误代码,这使得它变得更加困难,它只是没有做任何事情。
我要做的是读取Textbox2中的值,并从Table1中的GamesPlayed字段中减去它,其中JobID与TextBox1匹配。
我看不出我做错了什么?非常感谢。
Dim conn As New OleDbConnection("Provider=Microsoft.Jet.Oledb.4.0;Data Source=" & Application.StartupPath & "\Database1.mdb")
Dim cmd As New OleDbCommand
With cmd
.CommandType = CommandType.Text
.Connection = conn
.CommandText = "UPDATE [Table1] SET GamesPlayed = GamesPlayed - " & Val(TextBox2.Text) & " WHERE JobID = TextBox1.text"
.Parameters.Add("@p1", Me.ComboBox1.SelectedValue)
End With
conn.Open()
cmd.ExecuteNonQuery()
答案 0 :(得分:2)
你可以在一个好的开始,但你需要使用你添加的参数。
Dim conn As New OleDbConnection("Provider=Microsoft.Jet.Oledb.4.0;Data Source=" & Application.StartupPath & "\Database1.mdb")
Dim cmd As New OleDbCommand
With cmd
.CommandType = CommandType.Text
.Connection = conn
.CommandText = "UPDATE [Table1] SET GamesPlayed = @p1 WHERE JobID = @p2"
.Parameters.Add("@p1", Me.ComboBox1.SelectedValue)
.Parameters.Add("@p2", Me.Textbox1.Text)
End With
conn.Open()
cmd.ExecuteNonQuery()
我还建议将控件命名为有用的东西,而不是默认的设计器名称。
答案 1 :(得分:0)
改变这个:
.CommandText = "UPDATE ... JobID = TextBox1.text"
到那个:
.CommandText = "UPDATE ... JobID = " & TextBox1.text
答案 2 :(得分:0)
cmd.ExecuteNonQuery()
不会直接返回值。如果您想获得值,请尝试cmd.ExecuteReader()
。例如:
Dim cmd As New OleDb ("UPDATE [Table1] SETCommandGamesPlayed = GamesPlayed - " & Val(TextBox2.Text) & " WHERE JobID = TextBox1.text")
Dim yourvalvue As OleDbDataReader = cmd.ExecuteReader()
Do While (yourvalue.read)
'what you want to do
Loop
This question是不同执行函数的一个很好的例子。