Перемещение записи из одной таблицы в другую через datagridview

Я хочу иметь возможность щелкнуть запись в моем представлении таблицы данных, в которой выбраны все записи из tbl_requested-shifts, и при нажатии кнопки эта запись удаляется из tbl_requested_shifts и перемещается в tbl_shifts, может ли кто-нибудь помочь мне с SQL для этой задачи?

Кстати, я кодирую в vb.net 2010.


person Charles Forbes    schedule 30.04.2015    source источник
comment
вам нужно предоставить гораздо больше подробностей о структуре таблицы и коде, который вы пробовали. SQL будет в основном выглядеть как INSERT INTO tbl_shifts (col1, col2, col3) select col1, col2, col3 FROM tbl_requested_shifts   -  person cjb110    schedule 30.04.2015


Ответы (2)


я не проверял, но думаю, что это сработает.

Всякий раз, когда в DataGridView выбрана строка, извлекайте из нее значение столбца первичного ключа. И давайте предположим, что 1-й столбец является столбцом первичного ключа и имеет целочисленный тип.

Я поместил код в событие CellClick. Вы можете использовать событие CellContentClick, но я считаю CellClick более надежным. Убедитесь, что для свойства MultiSelect элемента DataGridView установлено значение false.

Dim value as Integer

 Private Sub DataGridView1_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellClick
        Try
            value = DataGridView1.Rows(e.RowIndex).Cells(0).Value
        Catch ex As Exception

        End Try
 End Sub

Теперь в событии нажатия кнопки. Создайте группу запросов, как показано ниже.

INSERT INTO tbl_shifts (col1, col2,col3,col4)
SELECT col1,col2,col3,col4
FROM tbl_requested_shifts
WHERE col1 =value;
DELETE FROM tbl_requested_shifts
WHERE col1=value;

Попытайся. Спасибо.

ДОПОЛНИТЕЛЬНО

objCommand = New SqlCommand
objCommand.CommandText = "INSERT INTO tbl_shifts (col1, col2,col3,col4) " & _
"SELECT col1,col2,col3,col4 " & _
"FROM tbl_requested_shifts " & _
"WHERE col1 =" & value & ";" & _
"DELETE FROM tbl_requested_shifts " & _
"WHERE col1=" & value & ";"

 Try
        <your sql connection object>.Open()
        command.Connection = <your sql connection object>
        command.ExecuteNonQuery()

        <your sql connection object>.Close()
Catch ex As Exception
        MsgBox(ex.Message)
        <your sql connection object>.Close()
End Try

Приведенный выше оператор T-SQL добавит строку в одну таблицу и удалит строку из другой таблицы. И убедитесь, что вы перезагрузили представление datagridview после выполнения этого кода. Спасибо.

person Topman    schedule 30.04.2015
comment
извините, у меня нет опыта работы с групповым запросом SQL, как мне это выполнить? Спасибо за вашу помощь - person Charles Forbes; 30.04.2015
comment
@CharlesForbes: просто поместите оператор в свойство CommandText. Надеюсь, это поможет. - person Topman; 30.04.2015

2 Ответ

Создайте отдельную функцию для удаления записи из таблицы1 и вызовите ее в событии button_click после перемещения записи из таблицы1 в таблицу2, как показано ниже. Надеюсь, это сработает...

 Private Sub btnDelete_Click(sender As Object, e As EventArgs) Handles btnDelete.Click
       
    Try
         Call Connect()

         STRSQL = "Insert into table2 select * from table1 where" & _ 
                  "id=" & TextBox1.Text & ""
         myCmd = New OleDbCommand(STRSQL, myConn)
         myCmd.ExecuteNonQuery()
         myConn.Close()

         Deletedata()

    Catch ex As Exception

    End Try
End Sub



Private Sub Deletedata()
    Call Connect()

    STRSQL = "delete from table1 where ID=" & TextBox1.Text & ""
    myCmd = New OleDbCommand(STRSQL, myConn)
    'myConn.Open()

    Dim da As New OleDbDataAdapter(myCmd)
    Dim dt As New DataTable
    Try
        da.Fill(dt)
        myCmd.ExecuteNonQuery()
        myConn.Close()


    Catch ex As Exception
    End Try

End Sub
person Thameem Ashik    schedule 25.10.2020