none
Filtrar intervalo de datas com RowFilter RRS feed

  • Pergunta

  • Olá,

    Estou com um problema ao passar um filtro de intervalo de datas para minha DataTable, segue o código.

    DataTable.DefaultView.RowFilter = " Pagamento >= '01/11/2012' and  Pagamento  <= '30/11/2012' and Situacao Like 'Q'";

    Não da nenhum erro, mas os dados em meu DataGridView aparecem filtrados apenas pelo dia.

    Agradeço a colaboração.

    sábado, 15 de dezembro de 2012 01:48

Respostas

  • Olá,

    Depois de apanhar um pouco encontrei uma solução e vou compartilhar aqui para quem precisar.

    A DataTable erá preenchida diretamente por um DataAdapter e assim a propriedade DataType das colunas ficavam como System.String e assim o campo era filtrado com string.

    A solução setar a propriedade DataType como System.DataTime.

    public DataTable SelectDataTable()
    {
        DataTable dt = new DataTable();
    
        //ADICIONANDO COLUNAS COM SEUS RESPECTIVOS TIPOS
        dt.Columns.Add("IdFornecedor", typeof(System.String));
        dt.Columns.Add("Baixa", typeof(System.String));
        dt.Columns.Add("Descricao", typeof(System.String));
        dt.Columns.Add("ValorPago", typeof(System.Double));
        dt.Columns.Add("Pagamento", typeof(System.DateTime));
    
        //PREENCHENDO TABELA TEMPORÁRIO COM MÉTODO QUE ME RETORNA UM DataTable via DataAdapter
        DataTable dtr = Select( "SELECT * FROM VDocumentoPag ", CommandType.Text);
       
        //REPASSANDO OS REGISTROS DA TABELA TEMPORÁRIA PARA TABELA A SER RETORNADA
        foreach (DataRow rw in dtr.Rows)
        {
            DataRow rws = dt.NewRow();
            for (int i = 0; i < dtr.Columns.Count; i++)
            {
                rws[i] = rw[i];   
            }                
            dt.Rows.Add(rws);
        }
        return dt;
    }
    E assim resolvi meu problema.

    • Marcado como Resposta Saulo Vinícius sábado, 15 de dezembro de 2012 12:16
    sábado, 15 de dezembro de 2012 12:16