none
Deletar apenas a linha selecionada do DataGridView RRS feed

  • Pergunta

  • Olá, tenho um Botão para deletar um item da datagridview, segue o código 
    SqlCeConnection ligação = new SqlCeConnection("Data source =" + vars.base_dados);
                ligação.Open();
                SqlCeCommand comando2 = new SqlCeCommand("DELETE FROM Estoquevendas WHERE ID_venda = " + id_produto, ligação);
                comando2.ExecuteNonQuery();
                comando2.Dispose();
                ligação.Dispose();
                
                construir_grelha();
    
            }
    
            private void GrelhaResultados_CellClick(object sender, DataGridViewCellEventArgs e)
            {
                id_produto = Convert.ToInt16(GrelhaResultados.Rows[e.RowIndex].Cells["ID_venda"].Value);
            }
    Ele deleta da base de dados e automaticamente do datagridview, o problema é que quando um produto tem um mesmo ID_venda que outro os dois são deletados e não aquele selecionado no datagridview, resumindo quero deletar apenas o selecionado no datagridview, só o selecionado, alguém tem como me ajudar? alguma sugestão? 
    quinta-feira, 6 de abril de 2017 01:53

Respostas

  • A opção (e mesmo assim não segura) é acrescentar as outras colunas na condição para que ele encontre apenas um registro na hora da exclusão no banco.

    Outra possibilidade mais recomendada é que corrija sua estrutura de banco para que as chaves das vendas não se repitam.


    If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer".

    Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".

    quinta-feira, 6 de abril de 2017 18:45

Todas as Respostas

  • ID_produto e ID_venda são a mesma coisa? Como você diferencia dois registros?

    If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer".

    Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".

    quinta-feira, 6 de abril de 2017 12:31
  • Não, ID_produto é uma string, uma variável q é igual a uma linha do datagridview cujo nome é ID_venda.
    ID_venda é uma coluna da base de dados, pode me ajudar?
    quinta-feira, 6 de abril de 2017 17:56
  • Como você diferencia dois registros se podem haver vários com mesmo ID_venda?

    If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer".

    Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".

    quinta-feira, 6 de abril de 2017 18:01
  • é realmente os dois são iguais, mas nesse caso influencia? Pois um comando é para identificar a linha selecionada no DataGridView e pegar o valor

    Convert.ToInt16(GrelhaResultados.Rows[e.RowIndex].Cells["ID_venda"].Value

    O outro é para deletar na base de dados na coluna ID_venda o valor selecionado na DataGridView que ja é em outro lugar diferente, o problema que estou tendo é que quando um ID_venda da DataGridView tem o mesmo numero por exemplo

     Quando clico em apagar do estoque ele ta apagando as duas linhas, quero que ele apague somente a selecionada, segue o segundo anexo do que acontece quando clico em apagar do estoque, 

    quinta-feira, 6 de abril de 2017 18:25
  • A opção (e mesmo assim não segura) é acrescentar as outras colunas na condição para que ele encontre apenas um registro na hora da exclusão no banco.

    Outra possibilidade mais recomendada é que corrija sua estrutura de banco para que as chaves das vendas não se repitam.


    If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer".

    Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".

    quinta-feira, 6 de abril de 2017 18:45
  • Bom dia,

    Devido a falta de interação do autor dessa pergunta,

    essa thread está sendo fechada. Caso o problema ainda

    esteja ocorrendo, favor abrir uma nova thread.

    Atenciosamente,


    Robson William Silva

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    segunda-feira, 10 de abril de 2017 12:44
    Moderador