Я хочу иметь возможность щелкнуть запись в моем представлении таблицы данных, в которой выбраны все записи из tbl_requested-shifts, и при нажатии кнопки эта запись удаляется из tbl_requested_shifts и перемещается в tbl_shifts, может ли кто-нибудь помочь мне с SQL для этой задачи?
Кстати, я кодирую в vb.net 2010.
Ответ 1 · Topman
я не проверял, но думаю, что это сработает.
Всякий раз, когда в 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 после выполнения этого кода. Спасибо.
Ответ 2 · Thameem Ashik
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