Usuário com melhor resposta
pesquisa entre DUAS datas

Pergunta
-
olá pessoal, estou a implementa uma consulta entre duas data, porem ele pega os dias em orde crescente e vai juntados os meses, quando eu quero somente de um mes especifico ele não pega. ou seja ele filtra somente dias e não o mês e ano , preciso de ajuda.
segue o código
Using con As OleDbConnection = getConnection()
Try
con.Open()
Dim sql As String
sql = "Select NOME,TIPO,DATA,HORA,JUSTIFICATIVA "
sql += "FROM Tab_Bhoras2 "
sql += " WHERE (DATA BETWEEN #" & DataInicio.Text & "# AND #" & DataFinal.Text & "#)"
sql += "ORDER BY DATA"
Dim cmd As OleDbCommand = New OleDbCommand(sql, con)
Dim da As OleDbDataAdapter = New OleDbDataAdapter(cmd)
Dim dt As DataTable = New DataTable
da.Fill(dt)
dgvRegistros.DataSource = dt
' PFormataDataGridView()
Catch ex As Exception
MsgBox(ex.Message)
Finally
con.Close()
End Try
End Using- Editado Arlindo António segunda-feira, 10 de abril de 2017 14:35 nenhuma resposta
Respostas
-
Boa tarde, eu tenho uma consulta parecida e que funciona perfeitamente.
Somente o final da consulta que é o que interessa.
"WHERE g.idsubproduto=pp.idsubproduto " +
"AND p.idproduto=g.idsubproduto " +
"AND pt.idproduto=p.idproduto " +
"AND(date(pp.dtalteracaovar)) >= @dtinicial " +
"AND(date(pp.dtalteracaovar)) <= @dtfinal " +
"AND pt.uf='MS' " +
"ORDER BY (date(pp.dtalteracaovar))";O tratamento dos parâmetros :
cmd.Parameters.Add("@dtInicial", DB2Type.Date).Value = Data1.ToString("yyyy/MM/dd");
cmd.Parameters.Add("@dtFinal", DB2Type.Date).Value = Data2.ToString("yyyy/MM/dd");- Marcado como Resposta Robson William SilvaModerator terça-feira, 18 de abril de 2017 13:34
Todas as Respostas
-
-
Bom dia Arlindo,
Você está utilizando LINQ para fazer essa pesquisa?
Atenciosamente,
Robson William Silva
Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.
-
-
Tenta conforme abaixo.
con.Open()
Dim sql As StringBuilder
sql.Append("Select NOME,TIPO,DATA,HORA,JUSTIFICATIVA ")
sql.Append("FROM Tab_Bhoras2 ")
sql.Append("WHERE DATA BETWEEN @DATAINICIO AND @DATAFIM ")
sql.Append("ORDER BY DATA")
Dim cmd As OleDbCommand = New OleDbCommand(sql.ToString(), con)
Dim da As OleDbDataAdapter = New OleDbDataAdapter(cmd)
Dim dt As DataTable = New DataTable
Dim dataInicial As New OleDbParameter("@DATAINICIO", Convert.ToDateTime(DataInicio.Text))
Dim dataFim As New OleDbParameter("@DATAFIM", Convert.ToDateTime(DataFinal.Text))
cmd.Parameters.Add(dataInicial)
da.Fill(dt)
dgvRegistros.DataSource = dt
' PFormataDataGridView()- Sugerido como Resposta Robson William SilvaModerator quarta-feira, 12 de abril de 2017 18:36
-
-
Boa tarde, eu tenho uma consulta parecida e que funciona perfeitamente.
Somente o final da consulta que é o que interessa.
"WHERE g.idsubproduto=pp.idsubproduto " +
"AND p.idproduto=g.idsubproduto " +
"AND pt.idproduto=p.idproduto " +
"AND(date(pp.dtalteracaovar)) >= @dtinicial " +
"AND(date(pp.dtalteracaovar)) <= @dtfinal " +
"AND pt.uf='MS' " +
"ORDER BY (date(pp.dtalteracaovar))";O tratamento dos parâmetros :
cmd.Parameters.Add("@dtInicial", DB2Type.Date).Value = Data1.ToString("yyyy/MM/dd");
cmd.Parameters.Add("@dtFinal", DB2Type.Date).Value = Data2.ToString("yyyy/MM/dd");- Marcado como Resposta Robson William SilvaModerator terça-feira, 18 de abril de 2017 13:34