Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Leandro Ribeiro

Problemas na consulta por Periodo

Recommended Posts

Olá pessoal, gostaria que alguém me ajuda-se a solucionar o problema abaixo...

 

Estou com um problema em um sistema, fiz um filtro para listar os contratos liberados por período, onde a data inicial e data final encontram-se em apenas um campo. (dataliberado)

 

O comando que utilizei foi o seguinte:

 

dataliberado Between #"&request.form("datai")&"# and #"&request.form("dataf")&"#

 

(Datai) é a data inicial digitada pelo usuário e (Dataf) é a data final também digitada pelo usuário .

 

O problema na verdade é o seguinte: O sistema funciona corretamente, só que quando o usuário digita uma data não existente o sistema não lista nenhum contrato liberado no período.

 

Exemplo: Data Inicial: 15/10/2008 Data Final: 01/11/2008,

 

Nesse exemplo a data final não existe por não ter sido liberado contratos nessa data, então o sistema não lista nada. Eu preciso que o sistema liste pelo menos os contratos liberados até antes do dia 01/11/2008 já que antes dessa data foram liberados contratos quase todos os dias.

 

 

Alguém pode me ajudar??

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa

 

Primeiro para que o Between funcione o campo deve ser do tipo data no banco de dados, pelo visto você está usando Access nao é?

 

Uma outra forma seria

 

Select * from tabela where data >= #"&request.form("datai")&"# and data <= #"&request.form("dataf")&"#

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa

 

Primeiro para que o Between funcione o campo deve ser do tipo data no banco de dados, pelo visto você está usando Access nao é?

 

Uma outra forma seria

 

Select * from tabela where data >= #"&request.form("datai")&"# and data <= #"&request.form("dataf")&"#

 

Abraços

Sim, o banco é em Access, e o campo esta definido como data abreviada, mas eu não tinha visto nada sobre (>= <= ) os sinais de maior menor e igual, vou fazer um teste e te comunico se funcionar ok;

 

Desde de já agradeço pela dica...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa

 

Primeiro para que o Between funcione o campo deve ser do tipo data no banco de dados, pelo visto você está usando Access nao é?

 

Uma outra forma seria

 

Select * from tabela where data >= #"&request.form("datai")&"# and data <= #"&request.form("dataf")&"#

 

Abraços

Eu acrescentei os sinais, mas o seguinte erro ocorre:

 

 

Microsoft JET Database Engine erro '80040e14'

 

Erro de sintaxe (operador faltando) na expressão de consulta 'convenio like 'DIANA%' and dataliberado Between >= #15/10/2008# and <= #01/11/2008#'.

 

/testes/imprimir_relatorio_convenios_periodo.asp, line 103

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa

 

Primeiro para que o Between funcione o campo deve ser do tipo data no banco de dados, pelo visto você está usando Access nao é?

 

Uma outra forma seria

 

Select * from tabela where data >= #"&request.form("datai")&"# and data <= #"&request.form("dataf")&"#

 

Abraços

Eu acrescentei os sinais, mas o seguinte erro ocorre:

 

 

Microsoft JET Database Engine erro '80040e14'

 

Erro de sintaxe (operador faltando) na expressão de consulta 'convenio like 'DIANA%' and dataliberado Between >= #15/10/2008# and <= #01/11/2008#'.

 

/testes/imprimir_relatorio_convenios_periodo.asp, line 103

 

 

Nao coloque Between ok

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nao coloque Between ok

Sim, retirei o Between, mas o erro permanece, segue o código abaixo de como fiz:

<%
SQL = "SELECT codigo_agente, nome_agente, nome_cliente, dataemissao, dataliberado, bancoconvenio, convenio, valorempresatado from tbl_contratos where convenio like '"&request.form("convenio2")&"%' and dataliberado >= #"&request.form("datai")&"# and <= #"&request.form("dataf")&"# GROUP BY codigo_agente, nome_agente, nome_cliente, dataemissao, dataliberado, bancoconvenio, convenio, valorempresatado order by dataliberado"
Set RS = conexao.execute(sql)
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente com essa SQL:

SELECT codigo_agente, nome_agente, nome_cliente, dataemissao, dataliberado, bancoconvenio, convenio, valorempresatado from tbl_contratos where convenio like '"&request.form("convenio2")&"%' and dataliberado >= #"&request.form("datai")&"# and dataliberado <= #"&request.form("dataf")&"# GROUP BY codigo_agente, nome_agente, nome_cliente, dataemissao, dataliberado, bancoconvenio, convenio, valorempresatado order by dataliberado

Como retirou o Between você terá que especificar o campo para as duas condições.

 

Teste e veja se continua ou altera o erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Referente ao erro verifique a coluna a qual você se refere na Base de Dados , pois não foi encontrada. Verifique a ortografia.eu testei aqui um exemplo com between e foi normalmente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente com essa SQL:

SELECT codigo_agente, nome_agente, nome_cliente, dataemissao, dataliberado, bancoconvenio, convenio, valorempresatado from tbl_contratos where convenio like '"&request.form("convenio2")&"%' and dataliberado >= #"&request.form("datai")&"# and dataliberado <= #"&request.form("dataf")&"# GROUP BY codigo_agente, nome_agente, nome_cliente, dataemissao, dataliberado, bancoconvenio, convenio, valorempresatado order by dataliberado

Como retirou o Between você terá que especificar o campo para as duas condições.

 

Teste e veja se continua ou altera o erro.

Olá, obrigado pela dica... O select funcionou sim, mas o problema continua, pois ele só lista os contratos se o usuário digitar datas em que já foram liberados contratos.

 

Por exemplo: Se para a Data Inicial 15/10/2008 tiver contratos liberados mas para a Data final: 01/11/2008 não existir contratos liberados o sistema não lista nada. Só que antes da data final 01/11/2008 foram liberados contratos quase todos os dias...

 

O que posso Fazer para solucionar isso...

Compartilhar este post


Link para o post
Compartilhar em outros sites

é gerado algum erro ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Referente ao erro verifique a coluna a qual você se refere na Base de Dados , pois não foi encontrada. Verifique a ortografia.eu testei aqui um exemplo com between e foi normalmente.

Olá, obrigado pela dica...

Então as duas maneiras funciona que tentei funcionou, mas o problema continua, pois ele só lista os contratos se o usuário digitar datas em que já foram liberados contratos.

 

Por exemplo: Se para a Data Inicial 15/10/2008 tiver contratos liberados mas para a Data final: 01/11/2008 não existir contratos liberados o sistema não lista nada. Só que antes da data final 01/11/2008 foram liberados contratos quase todos os dias...

 

O que posso Fazer para solucionar isso...

Compartilhar este post


Link para o post
Compartilhar em outros sites

tente assim:

 

SELECT codigo_agente, nome_agente, nome_cliente, dataemissao, dataliberado, bancoconvenio, convenio, valorempresatado from tbl_contratos where convenio like '%"&request.form("convenio2")&"%' and dataliberado >= #"&request.form("datai")&"# and dataliberado <= #"&request.form("dataf")&"# GROUP BY codigo_agente, nome_agente, nome_cliente, dataemissao, dataliberado, bancoconvenio, convenio, valorempresatado order by dataliberado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente colocar as datas no formato americano (mm/dd/aaa) em sua busca.

Compartilhar este post


Link para o post
Compartilhar em outros sites

tente assim:

 

SELECT codigo_agente, nome_agente, nome_cliente, dataemissao, dataliberado, bancoconvenio, convenio, valorempresatado from tbl_contratos where convenio like '%"&request.form("convenio2")&"%' and dataliberado >= #"&request.form("datai")&"# and dataliberado <= #"&request.form("dataf")&"# GROUP BY codigo_agente, nome_agente, nome_cliente, dataemissao, dataliberado, bancoconvenio, convenio, valorempresatado order by dataliberado

Olá, então dessa forma funcionou, mas continua com problemas... Eu fiz uma consulta utilizando as seguintes datas: Data Inicial: 15/10/2008 e Data Final: 30/12/2008. Essa data final não possui contratos liberados para ela, mas o sistema listou os contratos até o ultimo dia que foram liberados sendo 6/11/2008. Acredito que funcionou corretamente.

 

Mas quando tento colocar outra data como 01/11/2008 não é listado nada, sendo que deveria listar os contratos até a data de 28/10/2008 que foi a ultima...

 

Será algum problema no formato da data? No banco o campo esta como data....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente colocar as datas no formato americano (mm/dd/aaa) em sua busca.

Olá Salgado, eu digitei na busca no formato americano como você me disse, funcionou... a consulta ocorreu corretamente. mas existe uma forma de o usuario digitar no forma brasileiro e o sistema inverter retornando a consulta corretamente?

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pode exibir no formato PT-br e grava, normalmente no banco.você pode usar o Session.LCID=”1046”, ou procure no fórum que existe vários tópicos.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Olá Salgado, eu digitei na busca no formato americano como você me disse, funcionou... a consulta ocorreu corretamente. mas existe uma forma de o usuario digitar no forma brasileiro e o sistema inverter retornando a consulta corretamente?
Sim, dê uma olhada no "Laboratório de Scripts", lá possui uma função postada por usuário que ajuda a formatar as datas para o formato americano.

 

Você pode fazer também da seguinte forma:

Armazena o dado requisitado em uma variável, "transforma" em uma data (usando a função CDate), usa as funções de data: Month, Day e Year para concatenar no formato correto.

 

Qualquer duvida poste novamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.