1

我希望有人能够为我提供一些帮助吗?我花了过去 4 个小时试图解决这个问题,但没有得到任何结果。我实际上没有错误代码,这使它变得更加困难,它只是没有做任何事情。

我要做的是读取 Textbox2 中的值,然后从 Table1 中 JobID 与 TextBox1 匹配的 GamesPlayed 字段中减去它。

我没有看到我做错了什么?非常感谢。

 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()
4

3 回答 3

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()

我还建议将您的控件命名为有用的名称,而不是默认的设计器名称。

于 2013-08-01T17:25:17.863 回答
0

改变这个:

.CommandText = "UPDATE ...  JobID = TextBox1.text"

对此:

.CommandText = "UPDATE ... JobID = " & TextBox1.text
于 2013-08-01T17:16:52.777 回答
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

这个问题是一个很好的例子,说明了不同执行函数的作用。

于 2013-08-01T17:27:38.423 回答