Дважды щелкните сетку данных и вставьте в запись базы данных. - PullRequest
1 голос
/ 29 января 2020

Я хочу дважды щелкнуть строку в моей таблице данных и перенести эти данные в мою базу данных, которая затем откроет отчет на основе только что переданных данных.


        If e.RowIndex >= 0 AndAlso e.ColumnIndex >= 0 Then
            Dim selectedRow = DataGridView1.Rows(e.RowIndex)
        End If
        'Dim PtwNoData As String = String.Empty

        Dim connection As SqlConnection
        Dim Command As SqlCommand
        Dim dt As New DataTable
        Dim IdLast As Integer
        Dim PTWNo As String
        Dim Reader As SqlDataReader
        connection = New SqlConnection("Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\IzzyM\Desktop\Developer\BIG\Permit Plus\Permit Plus\Database1.mdf;Integrated Security=True")
        Dim GuiD As String

        'GuiD = Me.DataGridView1.SelectedRows("GUID").Selected.

        Try
            connection.Open()
            Dim Query As String
            Query = "insert into PTWData * values ('" & Me.DataGridView1.SelectedRows(). & "')"
            Command = New SqlCommand(Query, connection)
            Reader = Command.ExecuteReader

            connection.Close()

        Catch ex As Exception
            MessageBox.Show(ex.Message)
        Finally
            connection.Dispose()
        End Try
        'Form4.Dispose()
        Dim f As New Form4()
        f.TopMost = True
        f.Show()
        'Form4.Show()
    End Sub```

1 Ответ

0 голосов
/ 29 января 2020

Вы хотите добавить туда строковые значения, но выбранные строки - сложный объект. Он содержит результирующие строки и каждый столбец внутри (вместе со многими, многими свойствами).

См. Ниже, где "ColumnNameIDK" только один, и у вас может быть много для рассмотрения. В этом запросе в конечном итоге будет много вставок. (В целях безопасности мы можем преобразовать это в параметризованный запрос в будущем)

...

Dim Query As String
Dim rows As DataGridViewSelectedRowCollection = MyDataGridView.SelectedRows


for each row in Me.DataGridView1.SelectedRows()
   Dim myRow As DataRow = (TryCast(row.DataBoundItem, DataRowView)).Row
    query &= "insert into PTWData * values ('" & myRow("ColumnNameIDK")& "');"
    'this query appended on each pass   
next
Command = New SqlCommand(Query, connection)
Reader = Command.ExecuteReader
...