none
Botão Excluir - GridView RRS feed

  • Pergunta

  • Boa Tarde Pessoal,

    Eu sou um iniciante em programação e estou criando um programa para controle de horas de serviço no escritório de engenharia onde trabalho(Não sou programador, sou somente um engenheiro compreender esse mundo da programação rs.).

    Pois bem, criei um banco de dados sql com algumas tabelas com as quais quero gerenciar meus dados, o botão incluir dados eu consegui fazer, mas o botão excluir...

    Por favor deem uma olhada no código do botão abaixo:

        private void delCliente_Click(object sender, EventArgs e)
            {
                try
                {
                    string sql = "Delete FROM clientes Where nomeCliente=@nome";
    
    
                    using (SqlConnection conn = new SqlConnection(conexao))
                    {
                        conn.Open();
    
                        using (SqlCommand cmd = new SqlCommand(sql, conn))
                        {
                            int linha = dataGridView1.CurrentRow.Index;
                            string codigodel = dataGridView1.Rows[linha].Cells["nomeCliente"].ToString();
                            cmd.Parameters.AddWithValue("@nome", codigodel);
                            cmd.ExecuteNonQuery();
    
                            MessageBox.Show("Cliente apagado com sucesso");
                            Form2_Load(null, null);
                        }
    
                        conn.Close();
                    }
                }
                catch (Exception ex1)
                {
                    MessageBox.Show(ex1.Message);
                    throw;
                }


    Simplesmente o botão faz nada, ele não apaga o dado que está selecionado na gridview e muito menos no BD.

    Agradeço desde já a colabração.

    Att,

    Leandro Martins


    quarta-feira, 20 de novembro de 2013 19:03

Respostas

  • Fulvio,

    Você criou um Int idcliente para um campo que é string. Como eu converto? no meu BD o clienteID é um campo int


    private void delCliente_Click(object sender, EventArgs e)
    {
    	try
    	{
    		string sql = "Delete FROM clientes Where idCliente=@idCliente";
    		using (SqlConnection conn = new SqlConnection(conexao))
    		{
    			conn.Open();
    			using (SqlCommand cmd = new SqlCommand(sql, conn))
    			{
    				int linha = dataGridView1.CurrentRow.Index;
    				int idCliente = int.Parse(dataGridView1.Rows[linha].Cells[0].ToString());
    				cmd.Parameters.AddWithValue("@idCliente", idCliente);
    				
    				if (cmd.ExecuteNonQuery() > 0){
    					MessageBox.Show("Cliente apagado com sucesso");
    					Form2_Load(null, null);
    				}
    			}
    			conn.Close();
    		}
    	}
    	catch (Exception ex1)
    	{
    		MessageBox.Show(ex1.Message);		
    		throw;
    	}
    }

    já coloquei ai esqueci mesmo! 

    comando int.Parse


    Fulvio Cezar Canducci Dias

    quinta-feira, 21 de novembro de 2013 12:06
  • Muito Obrigado pela ajuda,

    acabei mudando meu código e fiz assim:

            private void delCliente_Click(object sender, EventArgs e)
            {
                try
                {
                    string sql = "Delete FROM clientes Where clienteID=@clienteID";
                    
    
                    using (SqlConnection conn = new SqlConnection(conexao))
                    {
                        conn.Open();
    
                        using (SqlCommand cmd = new SqlCommand(sql, conn))
                        {
                            cmd.Parameters.AddWithValue("@clienteID", dataGridView1.CurrentRow.Cells[1].Value);
    
                            if (cmd.ExecuteNonQuery() > 0)
                            {
                                MessageBox.Show("Cliente apagado com sucesso");
                                Form2_Load(null, null);
                            }
                        }
                        
                        conn.Close();
                    }
                }
                catch (Exception ex1)
                {
                    MessageBox.Show(ex1.Message);
                    throw;
                }
            }
        }
    }

    O que eu estava fazendo de errado era considerar o clienteID como 0 e o mesmo é 1.

    Mas mesmo assim muito GRATO MESMOOOOO

    quinta-feira, 21 de novembro de 2013 12:37

Todas as Respostas

  • A sua tabela como ta o layout porque geralmente a gente excluir pelo Id!!! ?

    Fulvio Cezar Canducci Dias

    quinta-feira, 21 de novembro de 2013 03:56
  • Obrigado pela resposta Fulvio,

    Infelizmente minha conta aqui ainda não foi verificada e eu não posso postar uma imagem.

    Mas eu tenho uma coluna ID e outra com o nome do cliente.


    quinta-feira, 21 de novembro de 2013 09:50
  • Coloque um breakpoint no cmd.ExecuteNonQuery() e veja o cmd.CommandText teste essa sql diretamente no sql server e veja que provavelmente o parametro passado não é encontrado no BD e não faz nada ! 

    O parametro que voce passa deve ser conter no BD para apagar ou você apaga pelo ID sugestão do Fulvio, porém seu codigo esta correto somente o parametro que está passando que não deve existir no BD.

    quinta-feira, 21 de novembro de 2013 09:56
  • Eu acho que vai funcionar!

    Código:

    private void delCliente_Click(object sender, EventArgs e)
    {
    	try
    	{
    		string sql = "Delete FROM clientes Where idCliente=@idCliente";
    		using (SqlConnection conn = new SqlConnection(conexao))
    		{
    			conn.Open();
    			using (SqlCommand cmd = new SqlCommand(sql, conn))
    			{
    				int linha = dataGridView1.CurrentRow.Index;
    				int idCliente = dataGridView1.Rows[linha].Cells[0].ToString();
    				cmd.Parameters.AddWithValue("@idCliente", idCliente);
    				
    				if (cmd.ExecuteNonQuery() > 0){
    					MessageBox.Show("Cliente apagado com sucesso");
    					Form2_Load(null, null);
    				}
    			}
    			conn.Close();
    		}
    	}
    	catch (Exception ex1)
    	{
    		MessageBox.Show(ex1.Message);		
    		throw;
    	}
    }

    Percebe que eu coloque idCliente na sua SQL é esse o campo referido da sua Tabela no banco ? se for deixa assim se não mude só na SQL esse idCliente para o que for na sua tabela e rode a aplicação!

    Também coloque Cells[0]  (Cells do indice Zero sendo a primeira coluna da sua DataGridView !!!)

    Se tiver assim vai funcionar!


    Fulvio Cezar Canducci Dias

    quinta-feira, 21 de novembro de 2013 11:29
  • Fulvio,

    Você criou um Int idcliente para um campo que é string. Como eu converto? no meu BD o clienteID é um campo int


    quinta-feira, 21 de novembro de 2013 11:34
  • Fulvio,

    Você criou um Int idcliente para um campo que é string. Como eu converto? no meu BD o clienteID é um campo int


    private void delCliente_Click(object sender, EventArgs e)
    {
    	try
    	{
    		string sql = "Delete FROM clientes Where idCliente=@idCliente";
    		using (SqlConnection conn = new SqlConnection(conexao))
    		{
    			conn.Open();
    			using (SqlCommand cmd = new SqlCommand(sql, conn))
    			{
    				int linha = dataGridView1.CurrentRow.Index;
    				int idCliente = int.Parse(dataGridView1.Rows[linha].Cells[0].ToString());
    				cmd.Parameters.AddWithValue("@idCliente", idCliente);
    				
    				if (cmd.ExecuteNonQuery() > 0){
    					MessageBox.Show("Cliente apagado com sucesso");
    					Form2_Load(null, null);
    				}
    			}
    			conn.Close();
    		}
    	}
    	catch (Exception ex1)
    	{
    		MessageBox.Show(ex1.Message);		
    		throw;
    	}
    }

    já coloquei ai esqueci mesmo! 

    comando int.Parse


    Fulvio Cezar Canducci Dias

    quinta-feira, 21 de novembro de 2013 12:06
  • Muito Obrigado pela ajuda,

    acabei mudando meu código e fiz assim:

            private void delCliente_Click(object sender, EventArgs e)
            {
                try
                {
                    string sql = "Delete FROM clientes Where clienteID=@clienteID";
                    
    
                    using (SqlConnection conn = new SqlConnection(conexao))
                    {
                        conn.Open();
    
                        using (SqlCommand cmd = new SqlCommand(sql, conn))
                        {
                            cmd.Parameters.AddWithValue("@clienteID", dataGridView1.CurrentRow.Cells[1].Value);
    
                            if (cmd.ExecuteNonQuery() > 0)
                            {
                                MessageBox.Show("Cliente apagado com sucesso");
                                Form2_Load(null, null);
                            }
                        }
                        
                        conn.Close();
                    }
                }
                catch (Exception ex1)
                {
                    MessageBox.Show(ex1.Message);
                    throw;
                }
            }
        }
    }

    O que eu estava fazendo de errado era considerar o clienteID como 0 e o mesmo é 1.

    Mas mesmo assim muito GRATO MESMOOOOO

    quinta-feira, 21 de novembro de 2013 12:37