Member 12374765 Ответов: 1

Как обновить несколько выбранных строк в datagridview до другой в VB.NET


У меня есть два datagridview: dgServer и dgBranch, я использую флажок при выборе строки, и я хочу обновить данные dgbranch из выбранной строки в dgServer я выбрал несколько строк, но последняя выбранная строка является единственной обновленной.

Что я уже пробовал:

У меня есть два datagridview: dgServer и dgBranch,
я использую флажок при выборе строки и хочу
обновите данные dgbranch из выбранной строки в dgServer.
я выбрал несколько строк, но последняя выбранная строка является единственной обновленной.

я пробовал этот код, но этот код обновляет только одну строку

Private Sub btnUpdateS_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUpdateS.Click

        Try
            Dim dr As New DialogResult
            dr = MessageBox.Show("Are you sure you want to Update?", "Transfer", MessageBoxButtons.OKCancel, MessageBoxIcon.Question)
            If dr = Windows.Forms.DialogResult.OK Then
                If conn1.State = ConnectionState.Closed Then
                    conn1.ConnectionString = "Server= localhost;Database=jlt_2;username=root;password=SystemDeveloper2011;"
                    conn1.Open()
                End If
                Dim st As String = "UPDATE prcpricing SET deal_price = '" & DataGridView1.CurrentRow.Cells(3).Value & _
                                        "', unit_price = '" & DataGridView1.CurrentRow.Cells(4).Value & "', unit_amt = '" & DataGridView1.CurrentRow.Cells(5).Value & _
                                        "'  WHERE p_code = '" & DataGridView1.CurrentRow.Cells(1).Value & "' AND b_code = '" & dgBranch.CurrentRow.Cells(2).Value & "'"
                MessageBox.Show((DataGridView1.CurrentRow.Cells(1).Value) & (DataGridView1.CurrentRow.Cells(2).Value) & (DataGridView1.CurrentRow.Cells(3).Value) & (DataGridView1.CurrentRow.Cells(4).Value) & (DataGridView1.CurrentRow.Cells(5).Value))
                Dim cmd As New MySqlCommand(st, conn1)
                cmd.ExecuteNonQuery()
                MessageBox.Show("Process Successful!", "Transfer", MessageBoxButtons.OK, MessageBoxIcon.Information)

                conn1.Close()
            End If
        Catch err As Exception
            MessageBox.Show(err.ToString)
        End Try
      
    End Sub

1 Ответов

Рейтинг:
0

Michael_Davies

Вы получаете только последнюю строку, потому что это все обновления вашего кода, CurrentRow-это последняя выбранная строка.

Использовать для каждой петли, чтобы ходить выбранных строк например;

For Each dgr as DataGridViewRow in DataGridView1.SelectedRows
Dim st As String = "UPDATE prcpricing SET deal_price = '" & dgr.Cells(3).Value & _

...etc.
Next


Если вы используете проверенные строки, вам, возможно, придется пройти весь набор строк, проверяя наличие checked = true, пример см.
[^]

Кроме того, никогда не объединяйте строку для построения SQL-оператора, всегда используйте параметризованные запросы.


Member 12374765

Привет!
Спасибо Вам за решение :)