Eu tenho um arraylist onde pega valores do banco, o problema é o seguinte, tenho duas tabelas, uma com letras e outra tabela com numeros, na pagina web tenho dois selevtonelistbox onde cada qual correspondete ao seu banco o que eu quero fazer e não estou conseguindo é fazer com que: exemplo quando escolhe a opçao A de um listbox apareca o numero 1,2 e 3 e quando eu escolhesse a opcao B aparecesse os numeros 5, 6 e 7.
tenho esse arraylist
public List<SelectItem> getDivi() throws SQLException{
PreparedStatement st;
ResultSet rs = null;
Connection Conn = Ascessando.getConnection();
List<SelectItem> opcao2 = new ArrayList<SelectItem>();
try{
st = Conn.prepareStatement("SELECT numero,descricao FROM divisao WHERE fsecao='1' order by numero");
while (opcao2.equals("B")){
st = Conn.prepareStatement("SELECT numero,descricao FROM divisao WHERE fsecao='2' oder by numero");
st.executeUpdate("SELECT numero,descricao FROM divisao WHERE fsecao='2' order by numero");
}
st.execute();
rs = st.executeQuery();
while (rs.next()){
opcao2.add(new SelectItem(rs.getString("descricao"),rs.getString("numero") ) );
}
System.out.println("Selecionado com Sucesso");
st.close();
Conn.close();
}catch (Exception e) {
e.printStackTrace();
}
return opcao2;
}
Não entendi onde no seu código você faz o algoritmo que precisa.
De qualquer forma, na linha 08 a condição do while será veradeira quando o ArrayList for igual à string “B”.
Uma forma mais simples de abordar este problema é selecionar todos os dados e jogar tudo no JavaScript.
Por exemplo, com Velocity ficaria algo como:
var array = [
#for( $item in $array )
{ letra: "$item.letra", numero: "$item.numero" },
#end
]
O que imprimiria algo como:
var array = [
{ letra: "A", numero: "1" },
{ letra: "A", numero: "2" },
{ letra: "A", numero: "3" },
{ letra: "B", numero: "4" },
...
]
Desta forma seria muito mais simples para que, no onchange do primeiro select, populasse o segundo com os dados pertinentes.
baudamix eh isso mesmo pq o fsecao eh uma chave estrangeira
e Filipe
o codigo que eu preciso eu tentei fazer assim
st = Conn.prepareStatement("SELECT numero,descricao FROM divisao WHERE fsecao='1' order by numero");
while (opcao2.equals("B")){
st = Conn.prepareStatement("SELECT numero,descricao FROM divisao WHERE fsecao='2' oder by numero");
st.executeUpdate("SELECT numero,descricao FROM divisao WHERE fsecao='2' order by numero");
ele seleciona numero from divisao where fsecao=‘1’ e eu tentei fazer que qnd a opcao for equals(“B”)
ele selcionasse numero da divisão quando fsecao = 2 entendeu???
bem como eu creio sua tabela deve estar assim no bancodados por isso o resultado… o select está certo, mas skisito…
tenta assim…
[code]String i = opcao2.equals(“B”) ? “1” : “2”;
String sql = “SELECT numero,descricao FROM divisao WHERE fsecao=’” + i +"’ order by numero";
st = Conn.prepareStatement(sql);
rs = st.executeQuery(); [/code]