Problemas com select em um cadastro

4 respostas
D
Pessoal, estou tendo problemas com dois campos selectBox onde o segundo campo depende do que for selecionado no primeiro. São campos de uma tela de cadastro. Para estes dois campos eu tenho as tabelas Empresa e Grupo, sendo que para uni-las eu tenho o campo codgrupo. Abaixo está o trecho de código:
<td align=left colspan=1>Grupo:</td> 
<td align=left colspan=1><select name="grupo"> 
<%SQL = "SELECT * from grupo order by nome"; 

Statement stmt = conn.createStatement(); 
ResultSet rs = stmt.executeQuery(SQL); 
while (rs.next()){ 
String nomegrupo = rs.getString(2);%> 
<option value="<%=nomegrupo%>"><%=nomegrupo%></option> 
<%} 
rs.close(); 
stmt.close(); 
conn.close(); 
%></select></td> 
<td align=left colspan=1>Empresa:</td> 
<td align=left colspan=1><select name="empresa"> 
<%SQL2 = "SELECT * from empresa order by nome"; 

Statement stmt2 = conn2.createStatement(); 
ResultSet rs2 = stmt2.executeQuery(SQL2); 
while (rs2.next()){ 
String nomeempresa = rs2.getString(3);%> 
<option value="<%=nomeempresa%>"><%=nomeempresa%></option> 
<%} 
rs2.close(); 
stmt2.close(); 
conn2.close(); 
%></select></td>

Como eu poderia fazer para pegar a variável codgrupo do grupo selecionado no primeiro select e jogar para selecionar a empresa correspondente no outro. Agradeço se alguém puder me dar uma ajuda.

4 Respostas

paulinhohd

Tente fazer com PrepareStatement, fica mais fácil de manipular váriáveis tb…e melhor visível o código…

Valeu! 8)

rmarin

Não tem jeito sem dar reload na página. Ou você dá um reload geral na página e pega o atributo, ou você dá um reload só na parte onde monta o segundo select.

Quando vc deve fazer o reload?

Quando o primeiro selectBox, o do grupo, for alterado ou seja:

<select blábláblá onchange="javascript:reloadnaPagina()">

Depois que a página, ou parte dela, foi recarregada você pega com:
request.getParameter(“grupocod”)” o valor do primeiro select e utiliza no segundo select.

D

Agradeço pela ajuda pessoal, mas seria possível alguém me dar um exemplo de código onde eu possa fazer este processo de select, np qual dependendo do que for selecionado no primeiro selectBox, sejam abertas diferentes opções no segundo.

D
Valeu pessoal, consegui resolver parcialmente o problema. Acontece que agora quando seleciono o grupo me é retornada a mesma tela só que com o selectBox do grupo vazio. O código é o seguinte:
function atualizaDados() {  

  grupo = form1.Grupo.value;

  location.href='cadMovimento.jsp?grupo='+grupo;

}
 

function atualizaDados2() {

  grupo = form1.Grupo.value;

  empresa = form1.Empresa.value;

  location.href='cadMovimento.jsp?grupo='+grupo+'&empresa='+empresa;

} 

out.println("<td align=left colspan=1>Grupo:</td> <td> <SELECT name='Grupo' onchange='atualizaDados()'>");

                if (grupo == null) { 

                    SQL  = " select distinct G.nome, G.codgrupo from grupo G, empresa E ";

                    SQL += " where E.codgrupo=G.codgrupo "; 

                    out.println("<option value=null>Selecione o Grupo</option>"); 

                    Statement stmt = conn.createStatement();

                    ResultSet rs = stmt.executeQuery(SQL); 

                    while(rs.next()){

                        out.println("<option value= " + rs.getString("codgrupo") + ">"+rs.getString("nome")); 

                    }

                    rs.close();

                    stmt.close();

                } else {

                        String nome = ""; 

                        SQL = " select distinct nome from grupo where codgrupo= "+grupo; 

                        Statement stmt = conn.createStatement();

                        ResultSet rs = stmt.executeQuery(SQL);

                        String codgrupo = rs.getString("codgrupo"); 

                        if (rs.next()){

                            nome = rs.getString(2);

                        }

                        out.println("<option selected value="+codgrupo+">"+nome+"</option>");

                        out.println("codgrupo" + codgrupo);

                        out.println("nome" + nome);

                        rs.close();

                        stmt.close();                        

                        SQL  = " select distinct G.nome, G.codgrupo from grupo G, empresa E ";

                        SQL += " where G.codgrupo=E.codgrupo and E.codgrupo <>" +codgrupo; 

                        stmt = conn.createStatement();

                        rs = stmt.executeQuery(SQL); 

                        while(rs.next()){

                            out.println("&lt;option value= " + rs.getString("codgrupo") + "&gt;"+rs.getString("nome"));

                        }

                        rs.close();

                        stmt.close();

                    }

                    out.println("&lt;/SELECT&gt;");

                    out.println("&lt;/td&gt;&lt;/tr&gt;<br>"); 

                    int cont=1;

                    if ((empresa==null) && (grupo!=null)){ 

                        SQL = " select distinct E.nome, E.codgrupo from grupo G, empresa E";

                        SQL += " where G.codgrupo=E.codgrupo and G.codgrupo="+grupo; 

                        Statement stmt = conn.createStatement();

                        ResultSet rs = stmt.executeQuery(SQL); 

                        cont=1;

                        while (rs.next()){

                            if (cont==1){

                                out.println("&lt;td align=left colspan=1&gt;Empresa:&lt;/td&gt; &lt;td&gt; &lt;SELECT name='Empresa' onchange='atualizaDados2()'&gt;");

                                out.println("&lt;option value=0&gt;Selecione a Empresa&lt;/option&gt;");

                            }

                            out.println("&lt;option value="+rs.getString("codempresa")+"&gt;"+rs.getString("nome")+"&lt;/option&gt;");

                            cont++; 

                        }                        

                        out.println("&lt;/select&gt;<br>");

                    }

                    else{ 

 

                            SQL  = " select distinct E.nome, E.codgrupo from grupo G, empresa E";

                            SQL += " where G.codgrupo=E.codgrupo and G.codgrupo="+grupo;  

                            Statement stmt = conn.createStatement();

                            ResultSet rs = stmt.executeQuery(SQL);

                            String codempresa = rs.getString("codempresa");

                            out.println(codempresa); 

                            cont=1;

                            while (rs.next()){

                                if (cont==1){

                                    out.println("&lt;td align=left colspan=1&gt;Empresa:&lt;/td&gt; &lt;td&gt; &lt;SELECT name='Empresa' onchange='atualizaDados2()'&gt;");                                          

                                }

                                if (rs.getString("codempresa").equals(empresa)){

                                    out.println("&lt;option SELECTED value="+rs.getString("codempresa")+"&gt;"+rs.getString("nome")+"&lt;/option&gt;");

                                }

                                else{

                                        out.println("&lt;option value="+rs.getString("codempresa")+"&gt;"+rs.getString("nome")+"&lt;/option&gt;");

                                }

                                cont++; 

                            }

                            out.println("&lt;/select&gt;<br>");

                    }%>

Agradeço se alguém puder me dar uma dica do que pode estar ocorrendo.

Criado 22 de julho de 2005
Ultima resposta 26 de jul. de 2005
Respostas 4
Participantes 3