ссылка на идентификатор SQL строки в VB. NET для обновления выбранной строки в datagridview - PullRequest
1 голос
/ 17 июня 2020

Надеюсь, что кто-то может предложить какие-то предложения по этому поводу, надеюсь, это простое исправление. Есть 2 проблемы:

  1. У меня есть представление сетки данных в VB. NET и бит, который я застрял, когда вы щелкаете строку, чтобы обновить ее, а затем с кодом I Я не могу сослаться на существующий уникальный идентификатор из таблицы SQL в моем коде, чтобы обновить его, вместо этого я получаю обновленную строку как новую строку с новым идентификатором и обновленными данными.

Экспериментируя, я использовал новый Guid.NewGuid, но, как я уже сказал, я не уверен, как ссылаться на фактический идентификатор из базы данных SQL для обновления этой строки.

Код, который вызывается из кнопки обновления, выглядит следующим образом:

Private Sub UpdateDataToQuery()

    Dim MyCmd As New SqlCommand()
    Dim da As New SqlDataAdapter()
    Dim myTable As New DataTable()
    Dim sSQL As String = String.Empty

    'Reference the Opened connection from other conn call and load update query

    myConn.Open()
    MyCmd.Connection = myConn
    MyCmd.CommandType = CommandType.Text

    sSQL = "UPDATE MySQlTable1 set myTable.Columns(1).ColumnName = @InputDate, 
myTable.Columns(2).ColumnName = @staffMember, myTable.Columns(3).ColumnName = @Band, 
myTable.Columns(4).ColumnName = @Defecit, myTable.Columns(5).ColumnName = @Reason, 
myTable.Columns(6).ColumnName = @ward, myTable.Columns(7).ColumnName = @AuthoriserName5, 
myTable.Columns(8).ColumnName = @AuthoriserName6 WHERE OT_ID = @guidValue"



    MyCmd.CommandText = sSQL
    da.SelectCommand = MyCmd
    da.Fill(myTable) **<<<< Error here Incorrect syntax near '.'**

    'Parameters for update query

    MyCmd.Parameters.AddWithValue("@guidValue", Guid.NewGuid)
    MyCmd.Parameters.AddWithValue("@InputDate", DateTimePicker1.Value)
    MyCmd.Parameters.AddWithValue("@staffMember", ComboBox1.GetItemText(ComboBox1.SelectedItem))
    MyCmd.Parameters.AddWithValue("@Ward", ComboBox2.GetItemText(ComboBox2.SelectedItem))
    MyCmd.Parameters.AddWithValue("@Defecit", ComboBox3.GetItemText(ComboBox3.SelectedItem))
    MyCmd.Parameters.AddWithValue("@Reason", ComboBox4.GetItemText(ComboBox4.SelectedItem))
    MyCmd.Parameters.AddWithValue("@Band", ComboBox5.GetItemText(ComboBox5.SelectedItem))
    MyCmd.Parameters.AddWithValue("@AuthoriserName5", ComboBox6.GetItemText(ComboBox6.SelectedItem))
    MyCmd.Parameters.AddWithValue("@AuthoriserName6", ComboBox7.GetItemText(ComboBox7.SelectedItem))

    MyCmd.ExecuteNonQuery()

End Sub
Я также теперь получаю сообщение об ошибке некорректный синтаксис рядом с '.' , чего раньше никогда не было, я не знаю, чем это вызвано. Я подозреваю, что с оператором SQL возникла какая-то проблема, поскольку я изначально имел его с линиями перегиба, поэтому я мог видеть его в окне кода, а затем возник неправильный синтаксис рядом с '&'. Я удалил их и поместил код в одну строку, и теперь он дает другую ошибку.

Итак, как я уже сказал, он выполнялся раньше без ошибок, теперь он получает указанную выше ошибку в da.fill (MyTable) также будут полезны любые указатели на очевидную ошибку (пункт 2).

Спасибо за любые предложения.

...