Duvida com Filtro

24 respostas
cristianoventura

Pessoal no meu Java criei um método de pesquisa para fazer um filtro no flex .Coloquei uma caixa de texto para que quando o usuário digitar o código e apertar no botão pesquisar ele trazer o valor escolhido .Vou colocar o código Java e o meu em Actionscript3 a minha dúvida estar no ActionScript porque não está funcionando.No aguardo

public static Cliente pesquisar (String codigo) {
		Cliente cliente = new Cliente();
		try{
			String sql = "SELECT * FROM CLIENTE WHERE CODIGO=?";
			Connection conn = ConnectionFcatory.getConnection();
			PreparedStatement stmt = conn.prepareStatement(sql);
			stmt.setString(1, codigo);
			ResultSet res = stmt.executeQuery();
			if (res.next()){
				cliente.setCodigo(res.getInt("CODIGO"));
				cliente.setNome(res.getString("NOME"));
				cliente.setCpf(res.getString("CPF"));
				
			}
			stmt.close();
			res.close();
			conn.commit();
		} catch (SQLException e){
			e.printStackTrace();
		}

		return cliente;
	}
Action Script3
public function  pesquisar_cliente():void {
  		
  		cliente = new Cliente();
  	        cliente.codigo = ti_codigo.text;
  	        conectarjava.pesquisar();
  	        conectarjava.listar();
  		}

24 Respostas

R

Cristiano,

coloque o código responsável por liberar os recursos sempre dentro de um bloco finally,assim vc garante que ele SEMPRE será executado.

cristianoventura

OK meu procedimento pesquisar em actionScript3 o que devo fazer para funciona no aguardo vc acha que está certo.No aguardo.

Ivan_Alves

Primeiro seu código no banco é de que tipo se for Inteiro você tem que receber como parametro um tipo int e ao enviar o código deve ser feito em vez disso:

faça isso:

qualquer coisa fala ai, flw!!

cristianoventura

Entendi Ivan e no meu Código Flex como dever fazer um procedimento Action Script 3

essa é a principal dúvida.

public function  pesquisar_cliente():void {
  		
  		cliente = new Cliente();
  	    cliente.codigo = ti_codigo.text;
  	    conectarjava.pesquisar();
  	   	    
  	    conectarjava.listar();
  		}
Ivan_Alves

Ta você primeiro precisa de uma biblioteca para conectar o Flex com o Java eu uso o BlazeDS e configurar as classes Java que você irá utilizar, depois declarar um RemoteObject que referencia essa classe e assim chamar o seu método que está no flex

Tem esse tutorial ai que inclusive tem a declaração do RemoteObject e também a chamada da classe Java no Flex
http://www.leonardofranca.com.br/index.php/2009/04/21/integrando-flex-com-java-usando-blazeds-primeiros-passos/

cristianoventura

Ivan o meu sistema ja esta conectando com o java eu estou utiliznado o blazeds mesmo ja está resgatando as informações do banco de dados a minha dúvida é referente somente a este Código no flex que postei a função pesquisar no flex.No aguardo

S

Mostra o código da chamada que você está tentando fazer…

S

Ivan_Alves

Ai em cima a chamada está assim:

agora como ele recebe o parametro do tipo inteiro você deve mandar o parametro junto se ele estiver em um TextInput você pode tentar assim:

olha ai e avisa, flw!!

cristianoventura

esse é codigo do flex action script o conectarjava.pesquisar esta vindo meu remot-config e o meu pesquisar é o meu metodo java responsável pela pesquisa a minha dúvida é na parte do flex mesmo.De qualquer maneira segue o meu metodo do meu pesquisar da classe ClienteDAO

codigo em action script 3

public function  pesquisar_cliente():void {  
          
        cliente = new Cliente();  
        cliente.codigo = ti_codigo.text;  
        conectarjava.pesquisar();  
              
        conectarjava.listar();  
        }

e codigo em java

public static Cliente pesquisar (String codigo) {  
    Cliente cliente = new Cliente();  
    try{  
        String sql = "SELECT * FROM CLIENTE WHERE CODIGO=?";  
        Connection conn = ConnectionFcatory.getConnection();  
        PreparedStatement stmt = conn.prepareStatement(sql);  
        stmt.setString(1, codigo);  
        ResultSet res = stmt.executeQuery();  
        if (res.next()){  
            cliente.setCodigo(res.getInt("CODIGO"));  
            cliente.setNome(res.getString("NOME"));  
            cliente.setCpf(res.getString("CPF"));  
              
        }  
        stmt.close();  
        res.close();  
        conn.commit();  
    } catch (SQLException e){  
        e.printStackTrace();  
    }  
  
    return cliente;  
}
cristianoventura

Ivan vou tentar fazer o procedimento te falo já se deu certo.Só um momento.

cristianoventura

Ivan estamos chegando perto eu clico no botão pesquisar mas ele não traz o resultado o que pode ser,mas também não apresenta erro fiz da seguinte forma que vc pediu? Vou te mandar o formulário de cliente em mxml e o action Script.No aguardo.

public function  pesquisar_cliente():void {
  		
  		cliente = new Cliente();
  	  
  	    conectarjava.pesquisar(Number(ti_codigo.text));
  	   	    
  	    conectarjava.listar();
  	
  		}
<?xml version="1.0" encoding="utf-8"?>
<mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="688" height="418"  creationComplete="{listar_pessoa()}" showCloseButton="true"  close="PopUpManager.removePopUp(this)" title="Cadastro de Clientes">


<mx:RemoteObject id="conectarjava" destination="conectarjava">
	<mx:method  name="insert"  result="ResultadoGravacao(event)"  fault="falhaConexao(event)"/>
	<mx:method name="deleta" result="ResultadoExclusao(event)" fault="falhaConexao(event)"/>
	<mx:method name="listar" result="ResultadoLista(event)" fault="falhaConexao(event)"/>
	<mx:method name="update" result="ResultadoAlteracao(event)" fault="falhaConexao(event)"/>
	<mx:method name="pesquisar" result="ResultadoPesquisa(event)" fault="falhaConexao(event)"  />
</mx:RemoteObject>

     
       <mx:Script source="indexcliente.as"/>
       
   
 
	
	<mx:TextInput x="114" y="165"  id="ti_codigo"    width="86" text="{datagrid_cliente.selectedItem.codigo}"/>
	<mx:TextInput x="114" y="213" text="{datagrid_cliente.selectedItem.nome}" id="ti_nome" width="264"/>
	<mx:TextInput x="114" y="260" id="ti_cpf"  text="{datagrid_cliente.selectedItem.cpf}" width="264" height="25"/>
	<mx:Label x="34" y="210" text="NOME.:"/>
	<mx:Label x="34" y="260" text="CPF.:"/>
	<mx:Label x="32" y="162" text="CÓDIGO.:"/>

	
	<mx:DataGrid x="0" y="0" height="131" width="668" id="datagrid_cliente" dataProvider="{dados_cliente}">
		<mx:columns>
			<mx:DataGridColumn headerText="Código" dataField="codigo"/>
			<mx:DataGridColumn headerText="Nome" dataField="nome"/>
			<mx:DataGridColumn headerText="Cpf" dataField="cpf"/>
		</mx:columns>
	</mx:DataGrid>
	<mx:Button x="208" y="309" label="Gravar" width="117"  click="gravar_cliente()" height="41" icon="@Embed(source='icons/save.png')"/>
	<mx:Button x="458" y="309" label="Excluir " width="116" height="41" click="deleta_cliente()" icon="@Embed(source='icons/delete.png')"/>
	<mx:Button x="333" y="309" label="Alterar" height="41" click="alterar_cliente()"   icon="@Embed(source='icons/update.png')"/>
	<mx:Button x="95" y="309" label="Novo" height="41" click="limpar_campos()" icon="@Embed(source='icons/novo.png')"/>
	<mx:TextInput x="306" y="168" width="194" id="ti_pesquisa"/>
	<mx:Button x="458" y="165" label="Pesquisar" id="btnpesquisar" click="pesquisar_cliente()"/>
	
</mx:TitleWindow>
Ivan_Alves
Seguindo seu MXML caso retorna uma pesquisa ele retorna por esse método
private function ResultadoPesquisa(event:ResultEvent){
       //primeiro pegue o resultado
       //caso esteja retornando o tipo Cliente que  está mapeado corretamente no Flex faça isso

       var cliente:Cliente = event.result as Cliente; //convertendo objeto recebido, caso não receba nada esse objeto irá receber null
       if(cliente != null){
             Alert.show("Pesquisa retornou resultado!!!");
             //resto do seu código...
       }else{
             Alert.show("Sua pesquisa não retornou resultado!!!");
       }
}
cristianoventura

Ivan substitui a função que vc falou ele realmente traz a resposta Pesquisa retornou resultado!!!

agora no dbgrid ele não faz nada por exemplo se eu coloco codigo 2 e clico em pesquisar o dbgrid não faz nada ficam todos os registros lá.No aguardo

Ivan_Alves

Perceba que no seu datagrid possui uma propriedade chamada dataProvider que recebe ‘dados_cliente’ sendo que ‘dados_cliente’ provavelmente é do tipo ArrayCollection(Parecido com List em Java) então se você quer popular a sua data grid com apenas esse objeto o mais correto a se fazer e inseri-lo no seu dados_cliente podendo ser feito dessa forma:

//coloque isso ao receber o resultado da pesquisa dados_cliente = new ArrayCollection(); //limpa a lista e com ela sua datagrid dados_cliente.add(seuObjetoCliente); //adiciona seu objeto recebido

Uma coisa que precisa ficar atento e verificar a declaração dessa ArrayCollection e certifique se que ela é Bindable fica mais ou menos assim:

[Bindable] private var dados_cliente:ArrayCollection...

testa ai, e fale…

cristianoventura
import mx.collections.ArrayCollection;
	import mx.controls.Alert;
	import mx.events.CollectionEvent;
	import mx.managers.PopUpManager;
	import mx.rpc.events.FaultEvent;
	import mx.rpc.events.ResultEvent;
	
	import vo.Cliente;
  		
  	[Bindable]
  	private var  dados_cliente:ArrayCollection;	
  	            
  	             
  	
  	private var cliente:Cliente;
  		
  		public function  gravar_cliente():void {
  		
  		cliente = new Cliente();
  	    cliente.codigo = ti_codigo.text;
  		cliente.nome = ti_nome.text;
  		cliente.cpf= ti_cpf.text;
  	   
  		conectarjava.insert(cliente);
  		conectarjava.listar();
  	
  		}
  
  	  
  	  public function  deleta_cliente():void {
  		
  		cliente = new Cliente();
  	    cliente.codigo = ti_codigo.text;	
  	    cliente.nome= ti_nome.text;
  		cliente.cpf = ti_cpf.text;
  	    conectarjava.deleta(cliente);
  	    conectarjava.listar();
  		}
  		
  		
  	  public function  pesquisar_cliente():void {
  		
  		cliente = new Cliente();
  	   
  	    conectarjava.pesquisar(Number(ti_codigo.text));
  	   	       conectarjava.listar();
  	
  		}
  	  
  	  
  	  public function alterar_cliente():void {
  	  	
  	  	cliente = new Cliente();
  	    cliente.codigo = ti_codigo.text;	
  	    cliente.nome= ti_nome.text;
  		cliente.cpf = ti_cpf.text;
  	    conectarjava.update(cliente);
  	    conectarjava.listar();
  	  	
  	  	
  	  }
  	  
  	  
  	  
  	  
  	  public function limpar_campos():void{
  	  	ti_codigo.text="";
  	  	ti_nome.text="";
  	  	ti_cpf.text="";
  	 
  	   }
  	  
  	  
  	  
  	  public function listar_pessoa():void {
  	   conectarjava.listar();
  	  }
  	  
  	    public function falhaConexao(event:FaultEvent):void {
  	    	Alert.show("Erro= "+event.fault.faultString);
  	    }		
  			
  	       
  	       
  	       
				public function ResultadoLista(event:ResultEvent):void 
				  {
					dados_cliente = event.result as ArrayCollection;
			     }
  	       
  	       
			//	public function ResultadoPesquisa(event:ResultEvent):void 
				//  {
			//		dados_cliente = event.result as ArrayCollection;
			    // }
  	      
  		      
  				
				public function ResultadoExclusao(event:ResultEvent): void {
		    		
		    	if (event.result == true)
		    	 {
		    	Alert.show("Excluido com sucesso!");
		    	 
		    	 }
		    	else 
		    	Alert.show("Erro na Exlcusao!");
		    		
		    		}      
  		      
  			
				public function ResultadoGravacao(event:ResultEvent): void {
		    		
		    	if (event.result == true)
		    	 {
		         Alert.show("Gravado com sucesso!");
		    
		    	 }
		    	else 
		    	Alert.show("Erro na gravação!");
		    		
		    		}    
		    		
		    		
				public function ResultadoAlteracao(event:ResultEvent): void {
		    		
		    	if (event.result == true)
		    	 {
		         Alert.show("Alterado com sucesso!");
		    
		    	 }
		    	else 
		    	Alert.show("Erro na Alteracao!");
		    		
		    		}        
		
		      private function chamarlogin():void{
		         	var logar:login
		      	    logar = login(PopUpManager.createPopUp(this,login,true));
		      	    logar.ti_usuario.setFocus()
		            PopUpManager.centerPopUp(logar);
		      }  
		      
		     private function ResultadoPesquisa(event:ResultEvent)
		     {  
       //primeiro pegue o resultado  
       //caso esteja retornando o tipo Cliente que  está mapeado corretamente no Flex faça isso  
  
       var cliente:Cliente = event.result as Cliente; //convertendo objeto recebido, caso não receba nada esse objeto irá receber null  
       if(cliente != null){  
             Alert.show("Pesquisa retornou resultado!!!");  
             //resto do seu código...  
       }else{  
             Alert.show("Sua pesquisa não retornou resultado!!!");  
                  }  
        }
Ivan o meu código esta da seguinte forma qual a sua sugestão?No aguardo
Ivan_Alves
import mx.collections.ArrayCollection;  
    import mx.controls.Alert;  
    import mx.events.CollectionEvent;  
    import mx.managers.PopUpManager;  
    import mx.rpc.events.FaultEvent;  
    import mx.rpc.events.ResultEvent;  
      
    import vo.Cliente;  
          
    [Bindable]  
    private var  dados_cliente:ArrayCollection = new ArrayCollection();   
                  
                   
      
    private var cliente:Cliente;  
          
        public function  gravar_cliente():void {  
          
        cliente = new Cliente();  
        cliente.codigo = ti_codigo.text;  
        cliente.nome = ti_nome.text;  
        cliente.cpf= ti_cpf.text;  
         
        conectarjava.insert(cliente);  
        conectarjava.listar();  
      
        }  
    
        
      public function  deleta_cliente():void {  
          
        cliente = new Cliente();  
        cliente.codigo = ti_codigo.text;      
        cliente.nome= ti_nome.text;  
        cliente.cpf = ti_cpf.text;  
        conectarjava.deleta(cliente);  
        conectarjava.listar();  
        }  
          
          
      public function  pesquisar_cliente():void {  
          
        cliente = new Cliente();  
         
        conectarjava.pesquisar(Number(ti_codigo.text));  
               conectarjava.listar();  
      
        }  
        
        
      public function alterar_cliente():void {  
          
        cliente = new Cliente();  
        cliente.codigo = ti_codigo.text;      
        cliente.nome= ti_nome.text;  
        cliente.cpf = ti_cpf.text;  
        conectarjava.update(cliente);  
        conectarjava.listar();  
          
          
      }  
        
        
        
        
      public function limpar_campos():void{  
        ti_codigo.text="";  
        ti_nome.text="";  
        ti_cpf.text="";  
       
       }  
        
        
        
      public function listar_pessoa():void {  
       conectarjava.listar();  
      }  
        
        public function falhaConexao(event:FaultEvent):void {  
            Alert.show("Erro= "+event.fault.faultString);  
        }         
              
             
             
             
                public function ResultadoLista(event:ResultEvent):void   
                  {  
                    dados_cliente = event.result as ArrayCollection;  
                 }  
             
             
            //  public function ResultadoPesquisa(event:ResultEvent):void   
                //  {  
            //      dados_cliente = event.result as ArrayCollection;  
                // }  
            
                
                  
                public function ResultadoExclusao(event:ResultEvent): void {  
                      
                if (event.result == true)  
                 {  
                Alert.show("Excluido com sucesso!");  
                   
                 }  
                else   
                Alert.show("Erro na Exlcusao!");  
                      
                    }        
                
              
                public function ResultadoGravacao(event:ResultEvent): void {  
                      
                if (event.result == true)  
                 {  
                 Alert.show("Gravado com sucesso!");  
              
                 }  
                else   
                Alert.show("Erro na gravação!");  
                      
                    }      
                      
                      
                public function ResultadoAlteracao(event:ResultEvent): void {  
                      
                if (event.result == true)  
                 {  
                 Alert.show("Alterado com sucesso!");  
              
                 }  
                else   
                Alert.show("Erro na Alteracao!");  
                      
                    }          
          
              private function chamarlogin():void{  
                    var logar:login  
                    logar = login(PopUpManager.createPopUp(this,login,true));  
                    logar.ti_usuario.setFocus()  
                    PopUpManager.centerPopUp(logar);  
              }    
                
             private function ResultadoPesquisa(event:ResultEvent)  
             {    
       //primeiro pegue o resultado    
       //caso esteja retornando o tipo Cliente que  está mapeado corretamente no Flex faça isso    
    
       var cliente:Cliente = event.result as Cliente; //convertendo objeto recebido, caso não receba nada esse objeto irá receber null    
       if(cliente != null){    
             dados_cliente = new ArrayCollection(); //limpa a lista e com ela sua datagrid  
             dados_cliente.add(cliente); //adiciona seu objeto recebido  
       }else{
             dados_cliente = new ArrayCollection(); //limpa a lista e com ela sua datagrid
             Alert.show("Sua pesquisa não retornou resultado!!!");    
                  }    
        }

ve se funfa!

cristianoventura

Ivan cara quando coloquei o código ele até a mensagem de pesquisa retornou não aparece mais é Você pode acessar minha maquina via TeamViewr para mim dar um auxilio ou então eu te mando o sistema por uma url acredito que meu problema esteja no front-end.

Ivan_Alves

No código que alterei, eu só mostra a mensagem se não enviar nenhum objeto, mas qualquer coisa manda o que você tem…

cristianoventura

vc pode acessar via teamViewer

Ivan_Alves

Não sei o que é isso, é algum tipo de acesso remoto? Se for manda ai que eu vejo!

cristianoventura

Eu te add o seu msn no meu o seu por acaso é esse aqui.

i

Ivan_Alves

Aqui é bloqueado msn manda uma mensagem pessoal

cristianoventura

Valeu ivan pela ajuda o meu problema era porque eu estava chamando todos os registros ,mas quando vc me pediu para retirar conectarjava.listar() foi resolvido.Obrigado.

public function pesquisar_cliente():void {

cliente = new Cliente();
   
    conectarjava.pesquisar(Number(ti_codigo.text));
   	

	}
Criado 11 de outubro de 2011
Ultima resposta 13 de out. de 2011
Respostas 24
Participantes 4