FILTRO EM RELATORIO
Olá a todos!
Pessoal, estou desenvolvendo uma aplicação simples em VS2008, é tão simples que utiliza base de dados acess. Desta forma estou tendo dificuldades para filtrar o periodo entre datas. Pois bem, a rotina está pronta, o sistema lê os dados porem não retorna o periodo escolhido nos textbox.
Exemplo: ao digitar um periodo como [Ô]01/10/2011 a 30/10/2011[Ô] ele não seleciona as ordens de serviço emitidas em 01/10/2011, somente considera após 01/10/2011. Para que o sistema reconheça o dia 01/10 preciso digitar na data inicial 31/09/2011 e final 30/10/2011, assim ele consegue imprimir as ordens de serviço do dia 01/10.
Abaixo segue o código que estou utilizando:
Private Sub Relat001_BeginPrint(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintEventArgs) Handles Relat001.BeginPrint
lavanderia.Open()
status = [Ô]F[Ô]
Dim cmd As New OleDbCommand([Ô]select * from CPRol WHERE CP304 >= Cdate([ô][Ô] & dtaini.Value & [Ô][ô]) and CP304 <= CDate([ô][Ô] & dtafim.Value & [Ô][ô]) and CP151 like [ô][Ô] & tbcp151.Text & [Ô][ô] and CP101 like [ô][Ô] & tbcp101.Text & [Ô][ô] and CP307 like [ô][Ô] & status & [Ô][ô][Ô], lavanderia)
Leitor = cmd.ExecuteReader
paginaAtual = 1
End Sub
Lembrando que o campo da tabela CP304 refere-se a data de fechamento;
CP151 Grupo de consumo;
CP101 Código do cliente;
CP307 Status da ordem de serviço.
Obrigado desde já!!!!
Pessoal, estou desenvolvendo uma aplicação simples em VS2008, é tão simples que utiliza base de dados acess. Desta forma estou tendo dificuldades para filtrar o periodo entre datas. Pois bem, a rotina está pronta, o sistema lê os dados porem não retorna o periodo escolhido nos textbox.
Exemplo: ao digitar um periodo como [Ô]01/10/2011 a 30/10/2011[Ô] ele não seleciona as ordens de serviço emitidas em 01/10/2011, somente considera após 01/10/2011. Para que o sistema reconheça o dia 01/10 preciso digitar na data inicial 31/09/2011 e final 30/10/2011, assim ele consegue imprimir as ordens de serviço do dia 01/10.
Abaixo segue o código que estou utilizando:
Private Sub Relat001_BeginPrint(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintEventArgs) Handles Relat001.BeginPrint
lavanderia.Open()
status = [Ô]F[Ô]
Dim cmd As New OleDbCommand([Ô]select * from CPRol WHERE CP304 >= Cdate([ô][Ô] & dtaini.Value & [Ô][ô]) and CP304 <= CDate([ô][Ô] & dtafim.Value & [Ô][ô]) and CP151 like [ô][Ô] & tbcp151.Text & [Ô][ô] and CP101 like [ô][Ô] & tbcp101.Text & [Ô][ô] and CP307 like [ô][Ô] & status & [Ô][ô][Ô], lavanderia)
Leitor = cmd.ExecuteReader
paginaAtual = 1
End Sub
Lembrando que o campo da tabela CP304 refere-se a data de fechamento;
CP151 Grupo de consumo;
CP101 Código do cliente;
CP307 Status da ordem de serviço.
Obrigado desde já!!!!
tente formatar a data pra o padrao americano isso pode resolver!
Olha só!
Tentei usar o comando sugerido pelo NILSON2,porem retorna mensagem de erro...
Como faço para formatar a tabela do acess para mm/dd/yyyy ? já que o campo em questão está assim: dd/mm/yyyy e mesmo usando o BetWeen não dá certo, as vezes mostra todos os registros e as vezes dá erro...
Tentei usar o comando sugerido pelo NILSON2,porem retorna mensagem de erro...
Como faço para formatar a tabela do acess para mm/dd/yyyy ? já que o campo em questão está assim: dd/mm/yyyy e mesmo usando o BetWeen não dá certo, as vezes mostra todos os registros e as vezes dá erro...
Qual é o tipo de dados do campo?
Poste a consulta já com a alteração sugerida pelo colega acima.
Poste a consulta já com a alteração sugerida pelo colega acima.
Olá a todos!
O campo no acess está formatado como:
Data/hora
Formato: data abreviada
Máscara de entrada: 00/00/0000;0;_
[txt-color=#e80000]O erro quando executa segue abaixo[/txt-color]
O campo no acess está formatado como:
Data/hora
Formato: data abreviada
Máscara de entrada: 00/00/0000;0;_
[txt-color=#e80000]O erro quando executa segue abaixo[/txt-color]
Desculpe Nilson!
Segue o código conforme sugeriu:
Private Sub Relat001_BeginPrint(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintEventArgs) Handles Relat001.BeginPrint
lavanderia.Open()
status = [Ô]F[Ô]
Dim cmd As New OleDbCommand([Ô]select * from CPRol WHERE CP304 BetWeen #[Ô] & Format$(cdataini, [Ô]mm/dd/yyyy[Ô]) & [Ô]# And #[Ô] & Format$(cdatafim, [Ô]mm/dd/yyyy[Ô]) & [Ô]# and CP151 like [ô][Ô] & tbcp151.Text & [Ô][ô] and CP101 like [ô][Ô] & tbcp101.Text & [Ô][ô] and CP307 like [ô][Ô] & status & [Ô][ô][Ô], lavanderia)
Leitor = cmd.ExecuteReader
paginaAtual = 1
End Sub
Segue o código conforme sugeriu:
Private Sub Relat001_BeginPrint(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintEventArgs) Handles Relat001.BeginPrint
lavanderia.Open()
status = [Ô]F[Ô]
Dim cmd As New OleDbCommand([Ô]select * from CPRol WHERE CP304 BetWeen #[Ô] & Format$(cdataini, [Ô]mm/dd/yyyy[Ô]) & [Ô]# And #[Ô] & Format$(cdatafim, [Ô]mm/dd/yyyy[Ô]) & [Ô]# and CP151 like [ô][Ô] & tbcp151.Text & [Ô][ô] and CP101 like [ô][Ô] & tbcp101.Text & [Ô][ô] and CP307 like [ô][Ô] & status & [Ô][ô][Ô], lavanderia)
Leitor = cmd.ExecuteReader
paginaAtual = 1
End Sub
Olha só!
O erro está ocorrendo quando faço a formatação para mm/dd/yyyy.
quando a data esta no intervalo do ano ele aceita,ou seja, 11/12/2011 quando convertido para: 12/11/2011 agora quando a data é como a data atual: 13/11/2011 ao converter para: 11/13/2011 ocorre o erro.
Já utilizei esta formatação: cdataini = Format(dtaini.Value, [Ô]yyyy/mm/dd[Ô])
Mas continua dando erro.
Tem alguma maneira de fazer esta conversão sem erros e sem precisar mudar as configurações regionais no painel de controle do windows ?
O erro está ocorrendo quando faço a formatação para mm/dd/yyyy.
quando a data esta no intervalo do ano ele aceita,ou seja, 11/12/2011 quando convertido para: 12/11/2011 agora quando a data é como a data atual: 13/11/2011 ao converter para: 11/13/2011 ocorre o erro.
Já utilizei esta formatação: cdataini = Format(dtaini.Value, [Ô]yyyy/mm/dd[Ô])
Mas continua dando erro.
Tem alguma maneira de fazer esta conversão sem erros e sem precisar mudar as configurações regionais no painel de controle do windows ?
Tópico encerrado , respostas não são mais permitidas