Ir para conteúdo

Arquivado

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

franchinni

JSP - Buscar de Registros entre as data Inicial e final

Recommended Posts

Boa tarde e Feliz Natal a todos!!!

 

Preciso de uma ajuda acho é simples !!!!!!!!!

 

Tenho uma tabela LISTA com um campo chamado DATAPG tenho uma pagina de busca onde informo em um formulário entre dois campos não acoplados, buscando todos os registros através da data inicial e final.

ex;

Registros entre as datas 15/03/2007 a 30/03/2007.

 

 

 

Obs:Esse que fiz esta funcionando porem pelo que identifiquei ele esta buscando somente entre os dias que informo no inicio e fim, não analisa o mês e nem o ano, os dados estão armazenados no bd access.

 

 

PAG BUSCA:

<h4>Buscar Vencimentos</h4>
<form action="devedorrecebe.jsp" method="get" name="form2">
Data Inicial: <input type="text" name="pesq" id="pesq" size="10" maxlength="10" onKeyPress="valida(this)"> <b>entre</b>
<input type="text" name="pesq2" id="pesq2" size="10" maxlength="10" onKeyPress="valida(this)">
<input type="submit" value="Pesquisar" title="Informe a Data Inicial no primeiro campo e no segundo campo a Data Final" onClick="validaSubmete()" name="button">
<br>
<br>
<br>
<br>
<br>
</form>
<script LANGUAGE="JavaScript" SRC="../valida.js"></SCRIPT>
<a href=../index.htm><--Voltar</a><br>
</body>
</html>



SEGUE CODE:

%@ page language="java" %>
<%@ include file="../conecta.jsp" %>
<%
String pesq1 = request.getParameter("pesq");
String pesq2 = request.getParameter("pesq2");
//Exibindo dados
sql = "SELECT * FROM lista WHERE DATAPG  between '"+ pesq1 +"'and  '"+ pesq2 +"' ORDER BY DATAPG ";


rs=st.executeQuery(sql);
if (rs != null)
  {
	
	String NOME1="";
	String MATRICULA1="";
	String DTAMATRICULA1="";
	String DIAVENC1="";
	String MODERACAO1="";
	String TIPOPLANO1="";
	String SEXO1="";
	String DATANASC1="";
	String CPF1="";
	String ENDERECO1="";
	String BAIRRO1="";
	String CEP1="";
	String CIDADE1="";
	String EMAIL1="";
	String CELULAR1="";
	String TELEFONE1="";
	String DATAPG1="";
	


	
  
  while(rs.next())
  {
	
  
		NOME1=rs.getString("NOME");
		MATRICULA1=rs.getString("MATRICULA");
		DTAMATRICULA1=rs.getString("DTAMATRICULA");
		DIAVENC1=rs.getString("DIAVENC");
		MODERACAO1=rs.getString("MODERACAO");
		TIPOPLANO1=rs.getString("TIPOPLANO");
		SEXO1=rs.getString("SEXO");
		DATANASC1=rs.getString("DATANASC");
		CPF1=rs.getString("CPF");
		ENDERECO1=rs.getString("ENDERECO");
		BAIRRO1=rs.getString("BAIRRO");
		CEP1=rs.getString("CEP");
		CIDADE1=rs.getString("CIDADE");
		EMAIL1=rs.getString("EMAIL");
		CELULAR1=rs.getString("CELULAR");
		TELEFONE1=rs.getString("TELEFONE");
		DATAPG1=rs.getString("DATAPG");
		

	
		
	  
	
  
		  NOME1 = NOME1.replaceAll(pesq1,"" + pesq1 + "");
			MATRICULA1 = MATRICULA1.replaceAll(pesq1,"" + pesq1 + "");
			DTAMATRICULA1 = DTAMATRICULA1.replaceAll(pesq1,"" + pesq1 + "");
			DIAVENC1 = DIAVENC1.replaceAll(pesq1,"" + pesq1 + "");
			MODERACAO1 = MODERACAO1.replaceAll(pesq1,"" + pesq1 + "");
			TIPOPLANO1 = TIPOPLANO1.replaceAll(pesq1,"" + pesq1 + "");
			SEXO1 = SEXO1.replaceAll(pesq1,"" + pesq1 + "");
			DATANASC1 = DATANASC1.replaceAll(pesq1,"" + pesq1 + "");
			CPF1 = CPF1.replaceAll(pesq1,"" + pesq1 + "");
			ENDERECO1 = ENDERECO1.replaceAll(pesq1,"" + pesq1 + "");
			BAIRRO1 = BAIRRO1.replaceAll(pesq1,"" + pesq1 + "");
			CEP1 = CEP1.replaceAll(pesq1,"" + pesq1 + "");
			CIDADE1 = CIDADE1.replaceAll(pesq1,"" + pesq1 + "");
			EMAIL1 = EMAIL1.replaceAll(pesq1,"" + pesq1 + "");
			CELULAR1 = CELULAR1.replaceAll(pesq1,"" + pesq1 + "");
			TELEFONE1 = TELEFONE1.replaceAll(pesq1,"" + pesq1 + "");
			DATAPG1 = DATAPG1.replaceAll(pesq1,"" + pesq1 + "");



			
  
%>

<tr>
 	<td><a href="../consulta/recebe.jsp?CXMATRICULA=<%=MATRICULA1%>&CXNOME=<%=NOME1%>&CXDTAMATRICULA=<%=DTAMATRICULA1%>&CXDIAVENC=<%=DIAVENC1%>&CXMODERACAO=<%=MODERACAO1%>&CXTIPOPLANO=<%=TIPOPLANO1%>&CXSEXO=<%=SEXO1%>&CXDATANASC=<%=DATANASC1%>&CXCPF=<%=CPF1%>&CXENDERECO=<%=ENDERECO1%>&CXBAIRRO=<%=BAIRRO1%>&CXCEP=<%=CEP1%>&CXCIDADE=<%=CIDADE1%>&CXEMAIL=<%=EMAIL1%>&CXCELULAR=<%=CELULAR1%>&CXTELEFONE=<%=TELEFONE1%>&CXDATAPG=<%=DATAPG1%>" title="Acessar o cadastro deste Aluno"><%=NOME1%></td>
	
	   <td><%=MATRICULA1%></td>
	<td><%=DTAMATRICULA1%></td>
	<td><%=DIAVENC1%></td>
	<td><%=MODERACAO1%></td>
	<td><%=TIPOPLANO1%></td>
	<td><%=SEXO1%></td>
	<td><%=DATANASC1%></td>
	<td><%=CPF1%></td>
	<td><%=ENDERECO1%></td>
	<td><%=BAIRRO1%></td>
	<td><%=CEP1%></td>
	<td><%=CIDADE1%></td>
	<td><%=EMAIL1%></td>
	<td><%=CELULAR1%></td>
	<td><%=TELEFONE1%></td>
	<td><%=DATAPG1%></td>


</tr>
<%
	}
  }

st.close();
con.close();
%>
</table>
<p><a href="../index.htm"><< Menu >></a></p>
</BODY>
</HTML>

 

Desde já agradeço a atenção .

 

Ótima semana a todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta ai , usando aqui o mysql funciona legal..

sql = "SELECT * FROM lista WHERE RIGHT(DATAPG,5) between '"+ pesq1 +"'and '"+ pesq2 +"' ORDER BY DATAPG ";

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu mais tem algo errado.

 

Fiz uma busca com a seguinte data: 25/01/2008 a 30/01/2009 e veio os registros.

 

 

25/01/2008 OK

26/01/2009 OK

27/02/2009 não ok!

 

Ele só esta buscando pelo dia.

 

Desde já Muito obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

o campo no DB esta com que tipo de dados?

 

texto?

 

pois aparentemente está tratando-o como tal

 

se for recomendo a mudar para o tipo de dados data

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mário...foi provavelmente o que aconteceu.

E ele não liga para o dia,e sim para o primeiro caracter.

Troca o tipo de dado dessa coluna (como citado).

E aproveitando...é interessante em statements ao invés de concatenação usar 'os bindInt(s) e etc que esses lhe oferecem',deixa o código mais legivel.

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim, esta tratando como texto

Compartilhar este post


Link para o post
Compartilhar em outros sites

Franchini, boa noite.

 

eu uso MYSQL a bastante tempo e pelo que vi ele salva as dadas ao contrario, ou seja, aaaa-mm-dd, sendo assim ao fazer sua consulta você deve inverter a data.

ex:

1) você recebe a informação do formulario

2) você inverte a data e depois joga na senteça sql.

 

select * from lista where DATAPAG BETWEEN '2008-01-01' and '2008-01-31' ORDER BY DATAPAG;

 

espero ter ajudado.

um abraço

MarquinhosJAVA

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.