none
error botão excluir. RRS feed

  • Pergunta

  • amigos estou estudando C# e fazendo a primeira aplicação, tenho o formulário de pesquisar cliente nele tem um grid  coloquei um botão pesquisar ele traz os clientes para o grid tudo beleza, ai passei para o botão excluir só que quando mando excluir a linha selecionada no grid e exclui todos os registro do banco. veja o código abaixo.

     private void buttonExcluir_Click(object sender, EventArgs e)
            {
                if (dataGridViewPrincipal.SelectedRows.Count == 0)
                {
                    MessageBox.Show("Nenhum cliente selecionado");
                    return;
                }

                DialogResult resultado  = MessageBox.Show("Tem Certeza?", "Pergunta", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

                if (resultado == DialogResult.No)
                {
                    return;
                }

                Cliente clienteSelecionado = (dataGridViewPrincipal.SelectedRows[0].DataBoundItem as Cliente);

                ClienteNegocios clienteNegocios = new ClienteNegocios();

                string retorno = clienteNegocios.Excluir(clienteSelecionado);

                try
                {
                    int idCliente = Convert.ToInt32(retorno);

                    MessageBox.Show("Cliente excluido com sucesso", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information);

                    AtualizarGrid();

                }
                catch
                {
                    MessageBox.Show("Não foi possivel excluir. Detalhe: " + retorno, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); 

                }
            }

    Fico muito grato pela ajuda.. obrigado.

     
    sábado, 9 de abril de 2016 00:40

Respostas

  • Edlenilson,

    O erro está na tua stored procedure.

    Você está comparando variável com variável e não campo com variável.

    DELETE FROM
          tblCliente
       WHERE
          IdCliente = @IdCliente

    Att,



    Antero Marques

    _________________________________________________________________________

    Se a resposta for útil, marque como útil, se respondeu totalmente sua dúvida, marque como resposta.

    O Fórum MSDN é utilizado também como base de conhecimento, então é responsabilidade de todos mantê-lo organizado e funcional.




    • Editado Antero Marques sábado, 9 de abril de 2016 15:57
    • Marcado como Resposta Edlenilson sábado, 9 de abril de 2016 18:35
    sábado, 9 de abril de 2016 15:55

Todas as Respostas

  • Boa noite,
    Não sei se entendi seu problema, mas vamos lá...
    Primeiro se esta excluindo todos os registros no banco de dados, o erro esta no método excluir, pode estar faltando o "where" ou seja desde que o cliente seja 1 por exemplo.
    Para esclarecer melhor, postar o método "Excluir".

    Uma observação é que seu metodo excluir retorna uma "string" :
    string retorno = clienteNegocios.Excluir(clienteSelecionado);
    Só que após o retorno você converte para int:
    int idCliente = Convert.ToInt32(retorno);
    Sendo assim você poderia retornar direto um "int" no Excluir ou retornar um boleano.

    Parabéns pela iniciativa, continue firme...

    Qualquer dúvida, pode postar.

    Att, 

    sábado, 9 de abril de 2016 03:22
  • ESSE É MEU MÉTODO EXCLUIR E LOGO DEPOIS VOU COLOCAR  A  STOREDPROCEDURE  DEPOIS OK.

    public string Excluir(Cliente cliente)
            {
                try
                {
                    acessoDadosSqlServer.LimparParametros();
                    acessoDadosSqlServer.AdicionarParamentros("@IdCliente", cliente.IdCliente);
                    string idCliente = acessoDadosSqlServer.ExecutarManipulacao(CommandType.StoredProcedure, "uspClienteExcluir").ToString();
                    return idCliente;
                }
                catch (Exception exception)
                {
                    return exception.Message;
                }
            }

    AGORA STORESPROCEDURE. _______________________________________________

    USE [Drausio]
    GO
    /****** Object:  StoredProcedure [dbo].[uspClienteExcluir]    Script Date: 09/04/2016 11:30:08 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    ALTER PROCEDURE [dbo].[uspClienteExcluir]
      @IdCliente int
    AS
    BEGIN
       DELETE FROM
          tblCliente
       WHERE
          @IdCliente = @IdCliente
     
       SELECT @IdCliente AS Retorno

    END 

    Mais uma vez obrigado.

    sábado, 9 de abril de 2016 14:32
  • Edlenilson,

    O erro está na tua stored procedure.

    Você está comparando variável com variável e não campo com variável.

    DELETE FROM
          tblCliente
       WHERE
          IdCliente = @IdCliente

    Att,



    Antero Marques

    _________________________________________________________________________

    Se a resposta for útil, marque como útil, se respondeu totalmente sua dúvida, marque como resposta.

    O Fórum MSDN é utilizado também como base de conhecimento, então é responsabilidade de todos mantê-lo organizado e funcional.




    • Editado Antero Marques sábado, 9 de abril de 2016 15:57
    • Marcado como Resposta Edlenilson sábado, 9 de abril de 2016 18:35
    sábado, 9 de abril de 2016 15:55
  • Irmão muito obrigado deu certo, ainda não acredido que eu não vi aquele @ olhei este codigo varias vezes e não vi. rarararrara mais é assim mesmo mais uma vez obrigado. 
    sábado, 9 de abril de 2016 18:35