Dúvida urgente!

3 respostas
V

Boa tarde a todos,

Vamos lá, estou com o seguinte problema, estou usando Struts com MVC e estou tendo um problema na minha classe DAO.
Essa minha classe tenho um método q é uma lista, e nele passo como parâmetros um tipo String e 2 tipos int.
Na minha jsp tenho 2 campos, um é codInicial e o outro codFinal. Esses 2 caras são passados como parâmetros no método como int.
Qd digito uma informação nesses dois campos e mando pesquisar, ele tinha q trazer a determinada faixa que foi digitada, ex: de 1 a 10, caso tenha digitado esses 2 valores, ao clicar em pesquisar tem q trazer a faixa compreendida entre esses valores, ex: {1,2,3,4,5,6,7,8,9,10}.
Mas só q não esta acontecendo isso, ele esta trazendo todos os códigos.

Segue abaixo o código do meu DAO.
public List listarPDV(String livre, int codPDVIni, int codPDVFim){
			
		List listaPDV = new ArrayList();
		
		try{
			
			System.out.println("Entrou CadPDVFaixaDAO");
			Connection con = getConnection();
			
			System.out.println("Antes da Query ");
			String sql= "SELECT sidagentevenda,nStatus FROM tbldealer_faixas WHERE 1=1 ";
					
			if (livre.equals("S")){
				sql = sql + " and nstatus = 0";
			}
			if(codPDVIni > 0){
				sql = sql + " and sidagentevenda >= " + codPDVIni;
			}
			if(codPDVFim > 0){
				sql = sql + " and sidagentevenda <= " + codPDVFim; 
			}
			sql = sql + " order by sidagentevenda";
			
			pstm = con.prepareStatement(sql);	   
		
		    rs = pstm.executeQuery(sql);
		      
		    System.out.println("antes do while");
		    
		    while (rs.next()){
		    	
		    	CadPDVFaixaVO pdvFaixaVO = new CadPDVFaixaVO();		      	
		      		
		      	pdvFaixaVO.setCodPDV(rs.getInt("sidagentevenda"));
		      	pdvFaixaVO.setStatus(rs.getString("nStatus"));
		      	System.out.println("Status: " + rs.getInt("sidagentevenda"));		      	
		
		        listaPDV.add(pdvFaixaVO);
		      
		    };
		    
		    System.out.println("depois do while");  
			
			}catch(java.sql.SQLException sqlException){
				System.out.println("sqlException: "+ sqlException);
			}catch(Exception e){
			  	System.out.println("Exception: "+ e);
			}finally{
			  	try{
			  		System.out.println("antes de fechar conexao.");
			  		con.close();
			  		System.out.println("depois de fechar conexao.");
			  	}catch(SQLException sqlException){
			  		System.out.println("sqlException: "+ sqlException);
			  	}
			}
			  
		return listaPDV;
	}

Segue também a minha Action:

[code]
public ActionForward executaPesquisa( ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {		
			
			System.out.println("CadPDVFaixasAction.entrou");
			
			CadPDVFaixaVO pdvFaixaVO = new CadPDVFaixaVO();
			CadPDVFaixaDAO pdvFaixaDAO = new CadPDVFaixaDAO();			
			CadPDVFaixaForm pdvFaixaForm = (CadPDVFaixaForm) form;
			
			List listaPDV = pdvFaixaDAO.listarPDV(pdvFaixaForm.getLivre(), Integer.parseInt(pdvFaixaForm.getCodPDVIni()), Integer.parseInt(pdvFaixaForm.getCodPDVFim()));
			
			HttpSession session = request.getSession();
			
			if (listaPDV.isEmpty()){ 
				session.removeAttribute("lstPDVFaixa");				
			}
			else{
				session.setAttribute("lstPDVFaixa", listaPDV);				
			}
		return mapping.findForward("success");		
	}

Espero que alguém possa me ajudar.

Muito obrigado,
Vitor

3 Respostas

Marcio_Duran

São dois campos JSP

São um 1 String
e dois 2 int

vc determinou uma faixa 1 a 10 ou entre 1 a 10 ?
ai ele traz tudo de uma vez só …

tanto int como a cadeia de string ?

if(codPDVIni &gt; 0){  
                 sql = sql + " and sidagentevenda &gt;= " + codPDVIni;  
             }  
             if(codPDVFim &gt; 0){  
                 sql = sql + " and sidagentevenda &lt;= " + codPDVFim;   
             }
V

Isso, são dois campos jsp chamados: codInicial e codFinal.
Essa faixa foi só um exemplo poderia ter sido de 8000 a 8010 por exemplo, qd for exibir tem q mostrar os números entre essa faixa determinada.
Mas só q mesmo vc determinando uma faixa ele traz todos os codigos q estão no BD.

na tabela o campo é codigo, mas nesse caso quero pegar o codInicial e codFinal.

Desde já agradeço,
Vitor

Marcio_Duran

Tenta eliminar o
String livre , só para ver se ele não traz na tabela do DB as cadeias nao desejada ou melhor fazer ele funcionar quando vc testar só o parametro de int.

E Veja o que acontece… acho que o erro esta na passagem de parametros.

Criado 15 de abril de 2008
Ultima resposta 15 de abr. de 2008
Respostas 3
Participantes 2