0
 Function UpdateTableRow()
        sqlLink.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source='C:\Users\will\Documents\Computing\ComputingProjectDatabase.accdb';"

    Try
        Dim sqlOrder As New OleDbCommand
        If sqlLink.State = ConnectionState.Closed Then
            sqlLink.Open()
        End If

        ' Creating the command and its parameter here before entering the loop to avoid a continue'
        ' create and destroy pattern for the OleDbCommand'

        sqlOrder.CommandText = "UPDATE StockSystem SET [Stock Price] =?, [Stock Size] =?, [Stock Quantity] =?, [Stock Category] =?, WHERE [Stock ID] =?"
        sqlOrder.Connection = sqlLink

        sqlOrder.Parameters.AddWithValue("@StockCategory", 0)
        sqlOrder.Parameters.AddWithValue("@StockQuantity", 0)
        sqlOrder.Parameters.AddWithValue("@StockSize", 0)
        sqlOrder.Parameters.AddWithValue("@StockPrice", 0)
        sqlOrder.Parameters.AddWithValue("@row", 0)

        Dim rows = DataGridView1.Rows

        For Each row In rows

            sqlOrder.Parameters("@row").Value = row.Cells(0).Value
            sqlOrder.Parameters("@StockPrice").Value = row.Cells(1).Value
            sqlOrder.Parameters("@StockSize").Value = row.Cells(2).Value
            sqlOrder.Parameters("@StockQuantity").Value = row.Cells(3).Value
            sqlOrder.Parameters("@StockCategory").Value = row.Cells(4).Value

            sqlOrder.ExecuteNonQuery()

        Next

        MsgBox("Data Updated.")

        'Problem with the update parameters, works for DELETE FUNCTION, needs to be changed to fit an UPDATE FUNCTION

    Catch ex As Exception
        MsgBox(ex.Message)
    Finally
        sqlLink.Close()

    End Try
    Return DataGridView1.SelectedRows
    DataGridView1.Refresh()
End Function

ねえ、ご覧のとおり、ここに素敵なコードがあります。ただ、100%うまくいくわけではありません。私は言われ続けSyntax Error in UPDATE statementます。パラメータがなくてもコードに問題がない場合(確かに、パラメータがないとまったく機能しません)、 update ステートメントが正しいと確信しています。私はこれで約1週間立ち往生しているので、どんな助けでも素晴らしいでしょう >.<

2 つ目のエラーは、Access を使用しているため、表の下部に「空白」の行があることです。私は (row - 1) のようなものがうまくいくと思っていました.VB 2010はそれをまったく好きではありません.

私が言ったように、どんな助けも素晴らしいでしょう。

4

2 に答える 2

0

Whereの前のコンマを削除してみてください。これを変更します。

([Stock Category] =?, WHERE [Stock ID] =?)

これに:

([Stock Category] =? WHERE [Stock ID] =?)

于 2014-03-19T10:49:55.910 に答える