none
Filtrar no DataGridView o valor digitado no Textbox RRS feed

  • Pergunta

  • Olá pessoal,

    Gostaria da ajuda de vocês, estou iniciando na programação e não sou expert.

    Possuo um formulário para consultar a tabela e listar no DataGridView a consulta, e nos textboxes para fazer o Update.

    Estou tendo erro na busca, pois não retorna a lista (o código) no DataGridView.

    Segue o código do botão filtrar. É moleza para voces.

    Quero obter o resultado no DataGridView - o código desejado está no textBox1.Text .  Erro está no SQL com o parametro para fazer o Where.

    Já usei o numeroparcela e não funcionou.

      Abraços e obrigado.
            private void btn_filtrar_Click(object sender, EventArgs e)
            {
                int numeroparcela = Convert.ToInt32(textBox1.Text);
           
                this.numero_Parcelas_a_PagarTableAdapter.FillFiltroParcela(this.numeroParcelasaPagarUpdate.Numero_Parcelas_a_Pagar, numeroparcela);
                string constr = @"Data Source=DESKTOP-3O98051;Initial Catalog=SGFRenaissance;Integrated Security=True";
                using (SqlConnection conn = new SqlConnection(constr))
                {
                    string Busca = "SELECT Cod_Numero_Parcelas_a_Pagar, Cod_Entrada_Titulos_a_Pagar, Numero_Parcela, Data_Vencimento, Valor_Parcela, Historico, Cod_Status_Titulo"
                                    + "FROM Numero_Parcelas_a_Pagar"
                                    + "WHERE(Cod_Numero_Parcelas_a_Pagar LIKE Cod_Numero_Parcelas_a_Pagar)";
                    DataTable DT = new DataTable();
                
    
                    try
                    {
                        conn.Open();
                        if(conn.State == ConnectionState.Open)
                        {
                            objAdapter = new SqlDataAdapter(Busca, conn);
                            objAdapter.Fill(DT);
                            numero_Parcelas_a_PagarDataGridView.DataSource = DT;
                        }
                        else
                        {
                            MessageBox.Show("Falha na Abertura da Conexão ao Banco de Dados!", "Erro!");
                        }
                    }
                    catch (Exception Ex)
                    {
                        MessageBox.Show("Falha na Leitura dos Dados na Tabela! " + Ex.Message);
                    }
                    finally
                    {
                        conn.Close();
                    }
                }
            }

         

    sábado, 11 de maio de 2019 19:20

Respostas

  • Fabio boa noite,

    Não é problema de conversão. É de não encontrar o registro na tabela. Estava vindo o primeiro registro, sempre. 

    Qualquer número que eu digitasse, aparece sempre o 1º registro da tabela.

    Já consegui resolver. Muito Obrigado.

    Segue o código abaixo. Tudo OK.

    private void btn_filtrar_Click(object sender, EventArgs e)
            {
                int numeroparcela = Convert.ToInt32(textBox1.Text); 
                this.numero_Parcelas_a_PagarTableAdapter.FillFiltroParcela(numeroParcelasaPagarUpdate.Numero_Parcelas_a_Pagar, numeroparcela);
                string constr = @"Data Source=DESKTOP-3O98051;Initial Catalog=SGFRenaissance;Integrated Security=True";
                data_VencimentoDateTimePicker.CustomFormat = null;
                data_VencimentoDateTimePicker.Value.ToShortDateString();
                using (SqlConnection conn = new SqlConnection(constr))
                {
                    string sql = String.Format("SELECT Cod_Numero_Parcelas_a_Pagar, Cod_Entrada_Titulos_a_Pagar, Numero_Parcela, Data_Vencimento, Valor_Parcela, Historico, Cod_Status_Titulo"
                                    + " FROM Numero_Parcelas_a_Pagar"
                                    + " WHERE(Cod_Numero_Parcelas_a_Pagar LIKE '{0}')", numeroparcela);
                    DataTable DT = new DataTable(sql);
                    try
                    {
                        conn.Open();
                        if (conn.State == ConnectionState.Open)
                        {
                            SqlDataAdapter objAdapter = new SqlDataAdapter(sql, conn);
                            objAdapter.Fill(DT);
                            numero_Parcelas_a_PagarDataGridView.DataSource = DT;
                        }
    
                        else
                        {
                            MessageBox.Show("Falha na Abertura da Conexão ao Banco de Dados!", "Erro!");
                        }
                    }
                    catch (Exception Ex)
                    {
                        MessageBox.Show("Falha na Leitura dos Dados na Tabela! " + Ex.Message);
                    }
                    finally
                    {
                        conn.Close();
                    }
                }
            }
    

    terça-feira, 14 de maio de 2019 01:33

Todas as Respostas

  • F.oliveirarocha,

       Seria isso?!?

    string Busca = "SELECT Cod_Numero_Parcelas_a_Pagar, Cod_Entrada_Titulos_a_Pagar, Numero_Parcela, Data_Vencimento, Valor_Parcela, Historico, Cod_Status_Titulo"
       + "FROM Numero_Parcelas_a_Pagar"
       + "WHERE(Cod_Numero_Parcelas_a_Pagar LIKE '" + numeroparcela  + "')";

    []'s,
    Fabio I.

    • Editado Fabio I sábado, 11 de maio de 2019 20:55
    sábado, 11 de maio de 2019 20:55
  • Fabio boa tarde,

    Seria isso, porém dá erro. "Não pode converter string para int"

    Já coloquei "%" +  numeroparcela + "%"

    e tbm "%" + textBox1.Text + "%" 

    Dá erro!

    domingo, 12 de maio de 2019 14:40
  • F.oliveirarocha,

       Por favor, veja os exemplos:

    =============================================
    Converter uma String em Um inteiro

    int valor = Convert.ToInt32("<sua string>");
    https://social.msdn.microsoft.com/Forums/pt-BR/fa2bf24b-40bc-4300-85ec-b8df0650ba57/converter-uma-string-em-um-inteiro?forum=vscsharppt
    =============================================
    Como: converter uma cadeia de caracteres em um número (Guia de Programação em C#)

    https://docs.microsoft.com/pt-br/dotnet/csharp/programming-guide/types/how-to-convert-a-string-to-a-number

    =============================================
    Convert Class

    https://docs.microsoft.com/pt-br/dotnet/api/system.convert?view=netframework-4.8

    =============================================
    Convert String to Integer in c#
    SilentCodes
    Publicado em 22 de jun de 2014

    https://youtu.be/xcdKTbHT_mY
    =============================================

    []'s,
    Fabio I.
    segunda-feira, 13 de maio de 2019 00:30
  • Fabio boa noite,

    Não é problema de conversão. É de não encontrar o registro na tabela. Estava vindo o primeiro registro, sempre. 

    Qualquer número que eu digitasse, aparece sempre o 1º registro da tabela.

    Já consegui resolver. Muito Obrigado.

    Segue o código abaixo. Tudo OK.

    private void btn_filtrar_Click(object sender, EventArgs e)
            {
                int numeroparcela = Convert.ToInt32(textBox1.Text); 
                this.numero_Parcelas_a_PagarTableAdapter.FillFiltroParcela(numeroParcelasaPagarUpdate.Numero_Parcelas_a_Pagar, numeroparcela);
                string constr = @"Data Source=DESKTOP-3O98051;Initial Catalog=SGFRenaissance;Integrated Security=True";
                data_VencimentoDateTimePicker.CustomFormat = null;
                data_VencimentoDateTimePicker.Value.ToShortDateString();
                using (SqlConnection conn = new SqlConnection(constr))
                {
                    string sql = String.Format("SELECT Cod_Numero_Parcelas_a_Pagar, Cod_Entrada_Titulos_a_Pagar, Numero_Parcela, Data_Vencimento, Valor_Parcela, Historico, Cod_Status_Titulo"
                                    + " FROM Numero_Parcelas_a_Pagar"
                                    + " WHERE(Cod_Numero_Parcelas_a_Pagar LIKE '{0}')", numeroparcela);
                    DataTable DT = new DataTable(sql);
                    try
                    {
                        conn.Open();
                        if (conn.State == ConnectionState.Open)
                        {
                            SqlDataAdapter objAdapter = new SqlDataAdapter(sql, conn);
                            objAdapter.Fill(DT);
                            numero_Parcelas_a_PagarDataGridView.DataSource = DT;
                        }
    
                        else
                        {
                            MessageBox.Show("Falha na Abertura da Conexão ao Banco de Dados!", "Erro!");
                        }
                    }
                    catch (Exception Ex)
                    {
                        MessageBox.Show("Falha na Leitura dos Dados na Tabela! " + Ex.Message);
                    }
                    finally
                    {
                        conn.Close();
                    }
                }
            }
    

    terça-feira, 14 de maio de 2019 01:33