Problemas de select em um cadastro

3 respostas
D
Pessoal, tenho um problema 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.

3 Respostas

M

Salve,

bem está rolando aqui neste mesmo fórum esta questão aí… o link é http://www.portaljava.com.br/home/modules.php?name=Forums&file=viewtopic&t=22483&sid=f3ba3a7242e155e4ae9a3c3caf3f07fb

:okok:

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("<option value= " + rs.getString("codgrupo") + ">"+rs.getString("nome"));

                        }

                        rs.close();

                        stmt.close();

                    }

                    out.println("</SELECT>");

                    out.println("</td></tr><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("<td align=left colspan=1>Empresa:</td> <td> <SELECT name='Empresa' onchange='atualizaDados2()'>");

                                out.println("<option value=0>Selecione a Empresa</option>");

                            }

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

                            cont++; 

                        }                        

                        out.println("</select><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("<td align=left colspan=1>Empresa:</td> <td> <SELECT name='Empresa' onchange='atualizaDados2()'>");                                          

                                }

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

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

                                }

                                else{

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

                                }

                                cont++; 

                            }

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

                    }%>

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

M

bem,

primeiramente, peço para utilizar jstl… bem agora os teus javascript não funcionam muito bem não. Faça com que eles submetam para mesma página.

nomeFormulario.action="pagina"; nomeFormulario.submit();[/code]

Criado 22 de julho de 2005
Ultima resposta 27 de jul. de 2005
Respostas 3
Participantes 2