none
Filtro entre datas organiza por dias e mistura meses RRS feed

  • Pergunta

  •  Boa tarde eu tenho um filtro entre duas data. ele pega as data (dias) certinho, porem mistura os meses

    exemplo filtra 01/12/2017 á 30/12/2017 ele pega assim:

    01/10/2017

    02/10/2017

    01/12/2017

    05/12/2017

    ou seja ele pega todas as datas em ordem certa porem mistura os mese

    não pega os dias e somente o mês que eu seleciono segue o código

    Private Sub PConsultas()
            Using con As OleDbConnection = getConnection()
                Try
                    Dim Sql As String
                    Sql = "SELECT  RSOCIAL,CodigoNotaFiscal,DESCRICAO,UNIDADE,QUANTIDADE,VUNITARIO,VTOTAL,DATA ,format(Data, 'DD/MM/YYYY') from Tab_Nota WHERE Data >= CDATE('" & MaskedTextBox1.Text & "') AND Data <= CDATE('" & MaskedTextBox2.Text & "')"
                    Sql += " ORDER BY DATA ASC "


                    Dim cmd As OleDb.OleDbCommand = New OleDbCommand(Sql, con)
                    Dim da As OleDb.OleDbDataAdapter = New OleDbDataAdapter(cmd)
                    Dim dt As DataTable = New DataTable
                    da.Fill(dt)
                    dgvCadastro1.DataSource = dt
                Catch ex As Exception
                    MsgBox(ex.Message)
                Finally
                    con.Close()
                End Try
            End Using

        End Sub

    sexta-feira, 15 de dezembro de 2017 17:55

Respostas

  • Boa noite.

    Qual banco de dados você está usando?

    Qual o formato de data é gravado?

    Raramente o formato é dd/MM/yyyy, ainda que (o Access por exemplo) seja mostrado assim, o formato no banco pode ser MM/dd/yyyy ou yyyy/MM/dd.

    Neste caso, além de converter em data com CDate, você deve informar o formato de data armazenado.

    Também deve verificar quais os caracteres de início e fim. Para o Access é #.

    Abaixo deixo um trecho de um relatório cujo banco é Access.

                        

    CMD.CommandText = "SELECT mov_item, mov_anterior, mov_movimento, mov_preco, mov_operador, mov_data_hora

    FROM movimento where mov_ccb = " & Psr_ID_CCB &

    " and mov_data_hora >= #" & CDate(Lsr_Param_1).ToString("MM/dd/yyyy") & " 00:00:00#

    and mov_data_hora <= #" & CDate(Lsr_Param_2).ToString("MM/dd/yyyy") & " 23:59:59#

    order by mov_data_hora"




    MARIANO1776

    • Marcado como Resposta Arlindo António segunda-feira, 18 de dezembro de 2017 17:06
    sexta-feira, 15 de dezembro de 2017 21:07

Todas as Respostas

  • Boa noite.

    Qual banco de dados você está usando?

    Qual o formato de data é gravado?

    Raramente o formato é dd/MM/yyyy, ainda que (o Access por exemplo) seja mostrado assim, o formato no banco pode ser MM/dd/yyyy ou yyyy/MM/dd.

    Neste caso, além de converter em data com CDate, você deve informar o formato de data armazenado.

    Também deve verificar quais os caracteres de início e fim. Para o Access é #.

    Abaixo deixo um trecho de um relatório cujo banco é Access.

                        

    CMD.CommandText = "SELECT mov_item, mov_anterior, mov_movimento, mov_preco, mov_operador, mov_data_hora

    FROM movimento where mov_ccb = " & Psr_ID_CCB &

    " and mov_data_hora >= #" & CDate(Lsr_Param_1).ToString("MM/dd/yyyy") & " 00:00:00#

    and mov_data_hora <= #" & CDate(Lsr_Param_2).ToString("MM/dd/yyyy") & " 23:59:59#

    order by mov_data_hora"




    MARIANO1776

    • Marcado como Resposta Arlindo António segunda-feira, 18 de dezembro de 2017 17:06
    sexta-feira, 15 de dezembro de 2017 21:07
  • oi boa tarde,esta resolvido, eu tinha de marcar como data/hota, estava texto, foi mudar e resolveu

    segunda-feira, 18 de dezembro de 2017 17:07