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:
<tdalign=leftcolspan=1>Grupo:</td><tdalign=leftcolspan=1><selectname="grupo"><%SQL = "SELECT * from grupo order by nome"; Statementstmt=conn.createStatement();ResultSetrs=stmt.executeQuery(SQL);while(rs.next()){Stringnomegrupo=rs.getString(2);%> <optionvalue="<%=nomegrupo%>"><%=nomegrupo%></option> <%} rs.close();stmt.close();conn.close();%></select></td> <tdalign=leftcolspan=1>Empresa:</td><tdalign=leftcolspan=1><selectname="empresa"><%SQL2 = "SELECT * from empresa order by nome"; Statementstmt2=conn2.createStatement();ResultSetrs2=stmt2.executeQuery(SQL2);while(rs2.next()){Stringnomeempresa=rs2.getString(3);%> <optionvalue="<%=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.
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:
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
DouglasCar
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
DouglasCar
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:
functionatualizaDados(){grupo=form1.Grupo.value;location.href='cadMovimento.jsp?grupo='+grupo;}functionatualizaDados2(){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="selectdistinctG.nome,G.codgrupofromgrupoG,empresaE";SQL+="whereE.codgrupo=G.codgrupo";out.println("<optionvalue=null>SelecioneoGrupo</option>");Statementstmt=conn.createStatement();ResultSetrs=stmt.executeQuery(SQL);while(rs.next()){out.println("<optionvalue="+rs.getString("codgrupo")+">"+rs.getString("nome"));}rs.close();stmt.close();}else{Stringnome="";SQL="selectdistinctnomefromgrupowherecodgrupo="+grupo;Statementstmt=conn.createStatement();ResultSetrs=stmt.executeQuery(SQL);Stringcodgrupo=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("<optionvalue="+rs.getString("codgrupo")+">"+rs.getString("nome"));}rs.close();stmt.close();}out.println("</SELECT>");out.println("</td></tr><br>");intcont=1;if((empresa==null)&&(grupo!=null)){SQL="selectdistinctE.nome,E.codgrupofromgrupoG,empresaE";SQL+="whereG.codgrupo=E.codgrupoandG.codgrupo="+grupo;Statementstmt=conn.createStatement();ResultSetrs=stmt.executeQuery(SQL);cont=1;while(rs.next()){if(cont==1){out.println("<tdalign=leftcolspan=1>Empresa:</td><td><SELECTname='Empresa'onchange='atualizaDados2()'>");out.println("<optionvalue=0>SelecioneaEmpresa</option>");}out.println("<option value="+rs.getString("codempresa")+">"+rs.getString("nome")+"</option>");cont++;}out.println("</select><br>");}else{SQL="selectdistinctE.nome,E.codgrupofromgrupoG,empresaE";SQL+="whereG.codgrupo=E.codgrupoandG.codgrupo="+grupo;Statementstmt=conn.createStatement();ResultSetrs=stmt.executeQuery(SQL);Stringcodempresa=rs.getString("codempresa");out.println(codempresa);cont=1;while(rs.next()){if(cont==1){out.println("<tdalign=leftcolspan=1>Empresa:</td><td><SELECTname='Empresa'onchange='atualizaDados2()'>");}if(rs.getString("codempresa").equals(empresa)){out.println("<optionSELECTEDvalue="+rs.getString("codempresa")+">"+rs.getString("nome")+"</option>");}else{out.println("<optionvalue="+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.