Como pegar um dos campos que veio de retorno de um SQL  XML
Índice dos Fóruns » RIA - Flex, JavaFX e outros
Autor Mensagem
jrcardoso007
Thread.start()
[Avatar]

Membro desde: 23/02/2008 16:30:31
Mensagens: 25
Localização: Goiânia - GO
Offline

Amigos, estou iniciando em flex e estou com uma duvida que acredito não ser muito dificil resolver.
tenho uma function onde passo um sql para a classe getDados.
public function ObterItemSelecionadoComboBox():void
{
var item:Object = cb_modulo.selectedLabel;
var sql:String = "SELECT cd, descr FROM MODULOS WHERE CD = '" + item.toString()+"'";
banco.getDados2(sql, "PostGres",2);
}

Esta classe me devolve 2 campos como podem ver. O problema é no result do método getDados2.

public function ResultadoChamaModulo2(event:ResultEvent):void
{

descr_modulo.text = event.result.toString();
}

Como eu consigo pegar o campo descr que veio no resultado do evento???
[Email] [MSN]
luxu
GUJ Ranger
[Avatar]

Membro desde: 28/10/2008 18:23:12
Mensagens: 881
Localização: Presidente Prudente/SP
Offline

se fosse em java seria String descricao = modulo.getDescricao(); em flash deve ser algo parecido...



zicadopv.wordpress.com
[WWW]
ssh
JavaEvangelist
[Avatar]

Membro desde: 08/10/2011 11:18:37
Mensagens: 413
Offline

Se fosse em java, sua query SQL deveria ficar armazenada em um ResultSet .

e você usuaria. ResultSet.getString("nome da coluna/ ou numero");

getString para quando o campo é varchar.
horochovec
Debugger
[Avatar]

Membro desde: 16/05/2006 12:43:11
Mensagens: 69
Localização: Rio de Janeiro - RJ
Offline

Vamos lá

Não consegui entender sua estrutura, você está trabalhando com Flex e está usando AMF? Porque o Flex não conecta com banco de dados, então sua função: ObterItemSelecionadoComboBox não vai funcionar no Flex, e sim no Java.

Esse trecho também está confuso: banco.getDados2(sql, "PostGres",2);

O que é "banco"?

Para poder ajudar, você vai ter que postar mais código ai, para ao menos tentarmos entender o que você está tentando fazer.


Stefan Horochovec
Engenheiro de Software
Blog: http://www.horochovec.com.br/
[Email] [MSN]
Ivan Alves
JavaEvangelist
[Avatar]

Membro desde: 06/08/2008 18:53:36
Mensagens: 415
Localização: Aparecida de Goiânia - GO
Offline

Não entendi muita coisa, por acaso você está retornando um objeto que contém os atributos e quer pegar o atributo 'descricao'?
[Yahoo!] [MSN]
jrcardoso007
Thread.start()
[Avatar]

Membro desde: 23/02/2008 16:30:31
Mensagens: 25
Localização: Goiânia - GO
Offline

Amigos, me desculpem, vou tentar ser mais claro.
banco.getDados (é um método em java que utilizo para conectar com o banco de dados e extrair informações)
neste trecho estou conectando com o banco e passando o sql que quero executar. A função ResultadoChamaModulo2 é a que trata o retorno deste método. Estou retornando no metodo getDados um List com os campos (cd, descr) gostaria de pegar pelo result o conteudo do campo descr.
Se acharem necessario, posto a classe completa para terem maior claresa na informação.
[Email] [MSN]
jrcardoso007
Thread.start()
[Avatar]

Membro desde: 23/02/2008 16:30:31
Mensagens: 25
Localização: Goiânia - GO
Offline

Srs. vou tentar ser mais claro nas informações.
public function ObterItemSelecionadoComboBox():void
{
var item:Object = cb_modulo.selectedLabel;
var sql:String = "SELECT cd, descr FROM MODULOS WHERE CD = '" + item.toString()+"'";
banco.getDados2(sql, "PostGres",2);
}
Neste método estou conectando com o banco de dados e passando o sql definido para execução, através do método(Java) getDados2.

Este método esta retornando uma List com os dois campos (cd e descr). Este retorno esta sendo tratado pela função ResultadoChamaModulo2 definida na tag abaixo do flex
<mx:method name="getDados2" result="ResultadoChamaModulo2(event)"/>

Eu gostaria de pegar a coluna descr do event.result e atribuir a uma Label. Ex.: label.text = event.resul.descr

Obs. Verifiquei que os dados estão sendo retornado no result do evento, porque consegui colocar as informações em uma grid, para testar a informação.


[Email] [MSN]
Ivan Alves
JavaEvangelist
[Avatar]

Membro desde: 06/08/2008 18:53:36
Mensagens: 415
Localização: Aparecida de Goiânia - GO
Offline

coloca o método java getDados2 para esclarecer melhor!
[Yahoo!] [MSN]
horochovec
Debugger
[Avatar]

Membro desde: 16/05/2006 12:43:11
Mensagens: 69
Localização: Rio de Janeiro - RJ
Offline

Bom, vamos lá

Primeiro: Essa estrutura que você está montando não é indicada. Você não deve passar suas consultas entre Flex / Java e sim trafegar apenas objetos serializados e tipados. Quem deve se preocupar com sua consulta é o Java e não o Flex que corresponde a sua View.

Segundo: A tua consulta retorna um objeto obtido no Java, o correto é você criar um DTO (ou VO) e trafegar este objeto de forma tipada, por exemplo, você vai ter um objeto do tipo "PessoaDTO" no Java e o mesmo vai retornar para o Flex como PessoaDTO. Caso opte por não trabalhar com objetos (o que não é legal), você pode por no teu método java um retorno direto da String que você deseja, ex:

resultSet.getString("nome da coluna/ ou numero");

E no Flex você pode verificar o retorno dele como:

protected function ResultadoChamaModulo2(event:ResultEvent) : void
{
label.text = event.result as String;
}

Provavelmente vai dar certo, mas como eu disse, nada recomendável trabalhar desta forma.


Stefan Horochovec
Engenheiro de Software
Blog: http://www.horochovec.com.br/
[Email] [MSN]
lucasbemo
Entusiasta Java
[Avatar]

Membro desde: 28/07/2010 10:03:29
Mensagens: 23
Localização: SP & Brasília/DF
Offline

Eu também aconselho você remover essa parte que esta passado o SQL dentro do Flex, você deve passar SQL no código java, é na camada java que deve se preocupar com o SQL. Isso não é legal nem boa prática(dica: procure saber sobre design pattern ).


vlw, abrç.
[Email] [MSN]
jrcardoso007
Thread.start()
[Avatar]

Membro desde: 23/02/2008 16:30:31
Mensagens: 25
Localização: Goiânia - GO
Offline

Ok amigos, obrigado pelas dicas, vou estar alterando o local do meu sql e colocar diretamento no java. E aproveitar e dar uma olhada nos designer patter como sugerido.
Estou inserindo abaixo o método getBancos conforme solicitado pelo Ivan para deixar mais claro, mas de qualquer forma ja vou fazer as alterações sugeridas tambem.

public List getDados(String sql, String banco, int campos)
{
executaSQL(sql, banco);
List lista_final = new ArrayList();
try
{
while (rs.next())
{
HashMap dados = new HashMap();
dados.put("cd",rs.getString("cd"));
lista_final.add(dados);
}
}catch(Exception e)
{
JOptionPane.showMessageDialog(null, "Erro na criação dos dados HashMap");
}
return lista_final;
}

public void executaSQL(String sql, String banco)
{
Conecta(banco);
try
{
st = conn.createStatement();
rs = st.executeQuery(sql);
}catch(Exception e)
{
JOptionPane.showMessageDialog(null, "Erro no comando SQL" + e);
}
}
[Email] [MSN]
horochovec
Debugger
[Avatar]

Membro desde: 16/05/2006 12:43:11
Mensagens: 69
Localização: Rio de Janeiro - RJ
Offline

Realmente o código precisa ser refatorado, tá cheio de JOptionXYZ... Isso ai não funciona com Flex

Stefan Horochovec
Engenheiro de Software
Blog: http://www.horochovec.com.br/
[Email] [MSN]
Ivan Alves
JavaEvangelist
[Avatar]

Membro desde: 06/08/2008 18:53:36
Mensagens: 415
Localização: Aparecida de Goiânia - GO
Offline

A sim está usando HashMap que também não é o mais recomendado porém vamos analisar, você envia de volta para o flex uma List de HashMaps cada uma com os atributos que você colocou como 'cd' então no Result você faz



tenta arrumar seu código ai de acordo com as dicas do pessoal ai de cima depois tenta isso ai, flw!

This message was edited 1 time. Last update was at 18/10/2011 11:52:11

[Yahoo!] [MSN]
jrcardoso007
Thread.start()
[Avatar]

Membro desde: 23/02/2008 16:30:31
Mensagens: 25
Localização: Goiânia - GO
Offline

Ivan, muito obrigado cara.

Realmente deu certo fazendo como indicou. Ja estou acertando o código conforme o pessoal indicou.
Agora só mais uma coisa. Voce comentou que usar o HashMap, não é o mais indicado.
Qual seria a maneira mais indicada de passar o retorno do sql neste caso???
E você saberia me indicar um livro bom que trata o assunto java e Flex juntos????


Vlw
Abraço.
[Email] [MSN]
Ivan Alves
JavaEvangelist
[Avatar]

Membro desde: 06/08/2008 18:53:36
Mensagens: 415
Localização: Aparecida de Goiânia - GO
Offline

Não sei se é o seu caso mais comigo por exemplo eu crio minha tabela no banco de dados de acordo com as minhas classes por exemplo seu eu quero representar um produto eu crio assim:


e no banco crio uma tabela com os campos id e descrição

na maioria dos casos quando faço uma consulta quero buscar os dados de uma tabela, podendo assim guarda-los em um objeto do tipo 'Produto' e assim envia-los para o flex seja em uma List ou apenas 1 objeto.
No flex também quero utiliza-los como o tipo 'Produto' então crio uma classe Produto lá também com os mesmos atributos e faço as devidas referencias, então as uso normalmente geralmente setando elas com 'Bindable' entre outros.
Nesse site tem um exemplo talvez você entenda melhor
http://blog.digows.com/en/integrando-adobe-flex-blazeds-springframework-hibernate-uma-soluo-opensource-para-sistemas-web-parte-1/

flw!

This message was edited 1 time. Last update was at 18/10/2011 13:11:19

[Yahoo!] [MSN]
 
Índice dos Fóruns » RIA - Flex, JavaFX e outros
Ir para:   
Powered by JForum 2.1.8 © JForum Team