none
Como Pegar um valor de uma Celula do DataGridView e Verificar se já existe o valor na BD RRS feed

  • Pergunta

  • Ola Minha gente.

    Estou a tentar criar um Metodo que me vai Verificar se um determinado dado ou valor de uma Celula do DataGrid existe na BD. Pelo esforço esta, no caso quero verificar se um Conta existe na tabela Subconta. Aqui vai o meu codigo para quem poder ajudar:

    private bool VerificaConta(bool p)
            {
              
                int cant = 0;
                //int counter = 0;
    
                //Conexao 
                using (SqlConnection con = Conexao.coneta())
                {
                    string sql = "SELECT COUNT (*) FROM SubContas WHERE idSubConta = @idSubConta";
    
                    SqlCommand cmd = new SqlCommand(sql, con);
                    //Determina o tempo do Comando Procurar os Dados na BD;
                    cmd.CommandTimeout = 60;
                    cmd.CommandType = CommandType.Text;
                    cmd.Parameters.AddWithValue("@idSubConta", dataGridLança.CurrentRow.Cells["Conta"]);
    
                    //Realiza a Consulta    
                    cant = Convert.ToInt32(cmd.ExecuteScalar());
    
                    if (cant > 0)
                    {
                        //Instancia de um novo objecto Subconta
                        
                        DataGridViewRow row = dataGridLança.CurrentRow;                    
                        row.Cells["Conta"].Value = cant;
    
                        return true;
                    }
                    else
                    {
                        return false;
                    }
    
                }
            }       


    E para o meu Botão Lançamento tenho:

    private void butInserirMov_Click(object sender, EventArgs e)
            {
                int counter = 0;                    
                //Criamos um objecto Conta
                bool Ret = VerificaConta(dataGridLança.Rows[counter].Cells["Conta"].Value != null);
                //
                if (Ret)
                {
                    MessageBox.Show("Lançamento efectuado com sucesso!");
                    //Limpa os Controles Depois de Clicar no botaão Ok
                    this.dataGridLança.CurrentRow.Cells["Conta"] = null;
    
                }
                else
                {
                    MessageBox.Show("Erro! Verifica o seu Lançamentoe tente novamente.");
                    //Limpa os Controles Depois de  Ok
                    //Poe o focu na celula Conta
                    this.dataGridLança.CurrentRow.Cells["Conta"] = null;     
    
                }             
                gravarMov();
            }

    Agradeço desde já a todos

    Atenciosamente,


    NekFred,Lda

    domingo, 8 de setembro de 2013 16:47

Respostas

  • Ola Gente 

    Para meu agrado posto aqui a solução deste problema:

    Verificação se existe ou não na BD:

    /// <summary>
            /// Botão Inserir Movimento
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void butInserirMov_Click(object sender, EventArgs e)
            {
                //Criamos um objecto bool para verificar contas
                bool SeExiste = VerificaConta();
                //Se existe a conta emite uma Mensagem
                if (SeExiste)
                {
                    MessageBox.Show("Contas encontradas com sucesso!");
                    //Lança o Movimento depois de Clicar no botaão Ok
                    gravarMov();                               
                }
                //Se não erro
                else
                {
                    MessageBox.Show("Erro! Conta Enexistente ou Invalida para Lançamento.");
                    return;
                }
            }
            public bool VerificaConta()
            {
                int cant = 0;
                //Conexao com a BD 
                using (SqlConnection con = Conexao.coneta())
                {
                    string sql = "SELECT COUNT (*) FROM SubContas WHERE SubConta = @subConta";
                    SqlCommand cmd = new SqlCommand(sql, con);
                    cmd.CommandTimeout = 30;
                    cmd.CommandType = CommandType.Text;                
                    cmd.Parameters.AddWithValue("@subConta", Convert.ToInt32(dataGridLança.CurrentRow.Cells["Conta"].Value));
    
                    //Realiza a Consulta 
                    cant = Convert.ToInt32(cmd.ExecuteScalar());
                      
                    //Se cante for maior que zero, retorna verdadeiro
                    if (cant > 0)
                    {                                  
                        return true;
                    }
                    else
                    {
                        return false;
                    }                
                }
            }
            //       

    Atenciosamente,

    Nekrumah


    NekFred,Lda

    • Marcado como Resposta Jesus Spray terça-feira, 1 de outubro de 2013 16:53
    terça-feira, 1 de outubro de 2013 16:53