datagridview vb.net[Resolvido]

Código:
int rowNumber = dataGridView.CurrentRow();
Se não estou em erro Isto permite-te determinar qual a row seleccionada.Dps é eleminar essa mm linha. Agora depende o pretendes fazer. Queres apagar a linha após seleccionares a linha e carregares num botão? Ou simplesmente seleccionar a linha? Deve existir um evento para tal. É uma questão de procurares.

Boa sorte Ruben
 
Não estou a ver uma situação em que queiras apagar uma linha de uma DataGridView, sem apagar a linha correspondente na datasource (a menos que estejas a empregar estructuras na datasource, e não databases, e mesmo assim...), por isso porque não executas uma query DELETE e voltas a fazer o SELECT ?
Dessa forma, a linha vai-te "desaparecer".

EDIT: Já exprimentaste?:
Código:
DataGridView1.Rows.RemoveAt(DataGridView1.SelectedRows(0).Index)
 
Última edição:
Mais um vez Obrigado ribeiro :) impecavel :)
mas tambem quero apagar da BD !!!

Mas eu ao fazer Delete from tabela apago tudo :S que maravilha.

Tipo eu fiz assim

Código:
  Try
            Dim respostas As String
            respostas = MsgBox("Deseja Eliminar os dados?", MsgBoxStyle.Question + MsgBoxStyle.YesNo + 256)
            If respostas = 6 Then
                DataGridView2.Rows.RemoveAt(DataGridView2.SelectedRows(0).Index)
                Dim cmSQL As New SqlCommand("Delete dispositivo from ID_disp=@ID_disp,Tipo=@Tipo,Marca=@Marca,Modelo=@Modelo,Departamento=@Departamento WHERE ID_disp=@ID_disp", cnSQL)
                cmSQL.Parameters.Add(New SqlParameter("@Tipo", TextBox10.Text))
                cmSQL.Parameters.Add(New SqlParameter("@Marca", TextBox11.Text))
                cmSQL.Parameters.Add(New SqlParameter("@Modelo", TextBox12.Text))
                cmSQL.Parameters.Add(New SqlParameter("@Departamento", TextBox13.Text))
                cmSQL.Parameters.Add(New SqlParameter("@ID_disp", TextBox9.Text))
                cmSQL.ExecuteNonQuery()
                cmSQL.Dispose()
                MsgBox("Dados alterados com sucesso.", MsgBoxStyle.Information)
            End If
        Catch
        End Try

devia apagar a linha que queria so
 
Última edição:
Código:
"Delete dispositivo from ID_disp=@ID_disp,Tipo=@Tipo,Marca=@Marca,Modelo=@Modelo,Departamento=@Departamento WHERE ID_disp=@ID_disp"

Estar a apagar-te a tabela toda é uma sorte, porque a síntaxe está errada.

A síntaxe correcta seria:
Código:
DELETE FROM dispositivo WHERE ID_disp=@ID_disp

EDIT: E não devias eliminar a linha da datagrid sem ter a certeza de que a query foi executada com sucesso. Já que a queres apagar manualmente.
 
PEssoal é o seguinte ele apaga-me a linha do datagridview mas não me apaga da bd :S

Pois faco actualizar o dtgview e torna aparecer :S

Meu codigo
Código:
Try
            Dim respostas As String
            respostas = MsgBox("Deseja Eliminar os dados?", MsgBoxStyle.Question + MsgBoxStyle.YesNo + 256)
            If respostas = 6 Then
                DataGridView2.Rows.RemoveAt(DataGridView2.SelectedRows(0).Index)
                Dim cmSQL As New SqlCommand("DELETE FROM dispositivo WHERE ID_disp=@ID_disp,Tipo=@Tipo,Marca=@Marca,Modelo=@Modelo,Departamento=@Departamento", cnSQL)
                cmSQL.Parameters.Add(New SqlParameter("@Tipo", TextBox10.Text))
                cmSQL.Parameters.Add(New SqlParameter("@Marca", TextBox11.Text))
                cmSQL.Parameters.Add(New SqlParameter("@Modelo", TextBox12.Text))
                cmSQL.Parameters.Add(New SqlParameter("@Departamento", TextBox13.Text))
                cmSQL.Parameters.Add(New SqlParameter("@ID_disp", TextBox9.Text))
                cmSQL.ExecuteNonQuery()
                cmSQL.Dispose()
                MsgBox("Dados alterados com sucesso.", MsgBoxStyle.Information)
            End If
        Catch
        End Try
 
Embora não resolva o teu problema fica o conselho, se o ID_disp for a tua Chave Primária dessa tabela escusas de colocar as outras colunas dentro do where.

Outro conselho será fazeres refactoring do nome das textbox, pois ao fazer debug ver TextBoxN no codigo pode ser confusoe induzir em erros.
 
PEssoal é o seguinte ele apaga-me a linha do datagridview mas não me apaga da bd :S

Pois faco actualizar o dtgview e torna aparecer :S

Meu codigo
Código:
Try
            Dim respostas As String
            respostas = MsgBox("Deseja Eliminar os dados?", MsgBoxStyle.Question + MsgBoxStyle.YesNo + 256)
            If respostas = 6 Then
                Dim cmSQL As New SqlCommand("DELETE FROM dispositivo WHERE ID_disp=@ID_disp", cnSQL)
                cmSQL.ExecuteNonQuery()
                cmSQL.Dispose()
                MsgBox("Dados alterados com sucesso.", MsgBoxStyle.Information)
                DataGridView2.Rows.RemoveAt(DataGridView2.SelectedRows(0).Index)
            End If
        Catch
        End Try


Alguem pode dar uma mãozinha?

não ta a funcar n sei pk, tipo Ele apagar me a linha do Datagridview mAS nao da BD :(:(:(
 
Última edição:
Alteraste hoje: Última edição de Ruben_Barbosa : Hoje às 09:44

De qualquer maneira estás a indicar um parametro no comando T-SQL "@ID_disp" e depois não está a indicar o valor.

Para saberes se o comando executou e quantos registos foram afectados podes fazer:

Dim result As Integer = cmSQL.ExecuteNonQuery()

Se o result for 1, para o teu caso, é porque apagou um registo.
 
Ou estás a fazer alguma coisa errada, ou não tens permissão na DB para um DELETE.

Exprimenta sem usar argumentos, ou seja, a query directa toda "escrevinhada" à pata.
Usa a solução que o jpaulino te deu para receberes o resultado da query.
 
Não dá o quê ?

Mostra lá como está agora e qual é o resultado da variavel "result" ?


Eu tou farto de workar na query da BD em SQL e lá funciona
Código:
delete from dispositivos where ID_disp='"DISP=01"'
Mas o que quero é na datagridview ele seleciona uma linha e dps vai carrregar no botao eliminar e ele elimina.

O que acontece elemina a linha no dtgview com o seguinte codido
Código:
DataGridView2.Rows.RemoveAt(DataGridView2.SelectedRows(0).Index

mas na base de dados não apaga enfim :S:S não percebo

postar o codigo again.

Código:
 Try
            Dim respostas As String
            respostas = MsgBox("Deseja Eliminar os dados?", MsgBoxStyle.Question + MsgBoxStyle.YesNo + 256)
            If respostas = 6 Then
                DataGridView2.Rows.RemoveAt(DataGridView2.SelectedRows(0).Index)
                Dim cmSQL As New SqlCommand("DELETE FROM dispositivo WHERE ID_disp=@ID_dip", cnSQL)
                cmSQL.ExecuteNonQuery()
                cmSQL.Dispose()
                MsgBox("Dados alterados com sucesso.", MsgBoxStyle.Information)
            End If
        Catch
        End Try
 
Alguem pode dar uma mãozinha?

não ta a funcar n sei pk, tipo Ele apagar me a linha do Datagridview mAS nao da BD :(:(:(

Epá.. até não é tão complicado como isso, pelo menos nao me parece.

O teu problema está nestas 2 linhas de código:

Código:
 Dim cmSQL As New SqlCommand("DELETE FROM dispositivo WHERE ID_disp=@ID_disp", cnSQL)
 cmSQL.ExecuteNonQuery()

Tu na query tens "Where ID_disp=@ID_Disp" mas onde é que lhe estás a dar o ID para executar a query??

Como não estás a dar isso, o ID vai vazio e o sql não gosta que dados vazios.

Tenta por antes assim:

Código:
Dim TempID as integer
TempID = dtgview.SelectedRows(0).Cells("O nome da coluna que tem o ID").Value

Dim cmSQL As New SqlCommand("DELETE FROM dispositivo WHERE ID_disp=" & TempID, cnSQL)
 cmSQL.ExecuteNonQuery()

Agora 2 criticas:
- Lê bem os post pk o ribeirinho55 já te disse para fazeres isto antes.

Ou estás a fazer alguma coisa errada, ou não tens permissão na DB para um DELETE.

Exprimenta sem usar argumentos, ou seja, a query directa toda "escrevinhada" à pata.
Usa a solução que o jpaulino te deu para receberes o resultado da query.

- Se tivesses perdido 2 minutos no google tinhas percebido logo qual era o problema.
 
Última edição:
Back
Topo