Usuário com melhor resposta
Filtro entre datas organiza por dias e mistura meses

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
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
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
-