none
Erro ao fitrar data no asp.net RRS feed

  • Pergunta

  • Olá pessoal.
    Estou tentando fazer um filtro entre datas para exibir em um GridView.
    Estou usando textbox com maskedit do ajax.
    else if (DdlColunas.SelectedItem.Text == "DATA LIGAÇÃO")            
            {
                string datainicial = txtDataInicial.Text;
                string datafinal = txtDataFinal.Text;
    
                string FilterExpression = string.Concat(DdlColunas.SelectedValue, "between '" + txtDataInicial.Text + "'  AND '" + txtDataFinal.Text + "' ");
                SqlDsStoredProcedureData.FilterParameters.Clear();
                SqlDsStoredProcedureData.FilterParameters.Add(new ControlParameter(datainicial, "txtDataInicial", "Text"));
                SqlDsStoredProcedureData.FilterParameters.Add(new ControlParameter(datafinal, "txtDataFinal", "Text"));
                SqlDsStoredProcedureData.FilterExpression = FilterExpression;
            }
    No MaskEdit eu estou usando o formato 99/99/9999 com o UserDateFormat do tipo DayMonthYear.


    Obrigado.
    segunda-feira, 5 de agosto de 2013 15:21

Todas as Respostas

  • O erro está sendo gerado pois a instrução SQL está sendo montada incorretamente, conforme mostrado na exceção que voce postou.

    Dá uma olhada no SQL gerado e veja como ela está sendo montada.


    Washington Luíz | MCP, MCTS
    O Senhor é minha força e somente Nele confio.

    quarta-feira, 7 de agosto de 2013 18:40
  • Opa tudo bem? a coluna que esta utilizando no banco de dados esta em formato de data correto? para isso você terá que utilizar o mesmo formato no between.


    Exemplo se no banco de dados esta assim:

    1998-01-02 00:00:00.000

    você esta enviando 99/99/9999


    Você terá que utilizar a mesma visão em ambos os campos.. fora isso.. o maskedit que esta utilizando não tem horario.. por tanto terá que incluir.. faça algo assim:


     string FilterExpression = string.Concat(DdlColunas.SelectedValue, "between '" + txtDataInicial.Text + " 00:00:00.000'  AND '" + txtDataFinal.Text + " 00:00:00.000' ")

    Lembrando que a data você terá que converter no formato 9999/99/99

    Abraços!

    se for útil. marque... abs




    Edgar Esteves | Edgar Esteves (ASP .NET, C#, WinForms, SQL)

    quarta-feira, 7 de agosto de 2013 22:11
  • Oi Edgar.
    Eu fiz do jeito que vc disse mas não funcionou.
    Simplesmente, não acontece nada.
    Você ou outra pessoa teria alguma orientação a fazer?
    Quando eu clico em consultar, não vai.
    Tenho outras consulta no mesmo código que estão funcionando perfeitamente.
    Não sei se eu disse, mais estou usando SQLDataSource e Stored Procedure retornando dados do mysql.
    No parâmetro eu uso QueryString e os parâmetros são datainicial e datafinal.
    Os mesmo que estão no mysql.
    Obrigado.
    • Editado Fabrício MD sexta-feira, 9 de agosto de 2013 13:49
    sexta-feira, 9 de agosto de 2013 13:28
  • Eu colei exatamente a linha que o Edgar mandou e me retornou o erro que está no print em anexo.
    Obrigado.

    sexta-feira, 9 de agosto de 2013 14:17