Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Felismar

Combo Dinamico (Não to conseguindo)...

Recommended Posts

- Ola, É o seguinte, peguei um exemplo de combo dinamico em um outro post aqui no forum.- Montei em acess conforme esta no exemplo e funciona tranquilho, porém quando fui colocar em sqlserver 2000 o segundo combo não esta sendo preenchido.- Como não manjo nada de asp, to apanhando muito.- segue abaixo os 02 scripts sendo o acess que peguei aqui e o sqlserver que estou mexendo...- ACESS (Este esta dando certo)...<%'Efetuando a conexão com a base de dados criadaSet objConn = Server.CreateObject("AdoDb.Connection") objConn.provider="Microsoft.Jet.OLEDB.4.0" objConn.connectionstring=Server.Mappath("loja.mdb") objConn.open %><form name="form1"><select name="txt_categoria" onChange="BuscaProdutos()"><% 'aqui setamos na propriedade onChange, a função BuscaProdutos(). A cada mudança, a função é executada.%><option>-- Selecione categoria --</option><%'Fazemos a busca de todas as categorias para preencher o primeiro combo.SQL_Cat = "select * from categorias order by categoria"Set RS_Cat = objConn.Execute(SQL_Cat)Do Until RS_Cat.EOF Response.Write "<option value="&RS_Cat("id")&">"&RS_Cat("categoria")&"</option>" RS_Cat.MoveNextLoop%></select><br><%'nesse outro combo, não definimos nenhuma opção (option). Ele apenas receberá o retorno da função.%><select name="txt_produto"></select></form><%'Vamos então analisar a função BuscaProdutos()%><script>function BuscaProdutos(){//a variável categoria vai receber o valor selecionado na primeira combo (txt_categoria) var categoria = document.form1.txt_categoria.options[document.form1.txt_categoria.selectedIndex].value;//setamos duas variáveis auxiliares que irão ser utilizadas para controlesvar controle = 0var contador = 0<%'Listamos as categoriasSQL_Cat2 = "select * from categorias order by categoria"Set RS_Cat2 = objConn.Execute(SQL_Cat2)'Enquanto não for final de arquivo, listamos os produtos da categoria atual (que está no loop)Do Until RS_Cat2.EOF SQL_Prod = "select * from produtos where id_categoria = "&RS_Cat2("id") Set RS_Prod = objConn.Execute(SQL_Prod) 'Vamos verificar a quantidade de registros encontrados. Serve também como um controle. SQL_Count = "select count(*) as maximo from produtos where id_categoria = "&RS_Cat2("id") Set RS_Count = objConn.Execute(SQL_Count) Do Until RS_Prod.EOF %> //Enquanto não for fim de arquivo, verificamos se o produto retornado pertence à categoria guardada na //variável categoria (Java Script) e se nosso "controle" é menor que o máximo de registros. //Se tudo estiver OK, incrementamos "controle" e "contador" e escrevemos a nova opção em txt_produto. //Reparem que "contador" atua como a posição que o registro ocupará no combo. if(<%=RS_Prod("id_categoria")%> == categoria && controle < <%=RS_Count("maximo")%>) { controle++ document.form1.txt_produto.options[contador]=new Option('<%=RS_Prod("produto")%>','<%=RS_Prod("id")%>'); contador++ }<% RS_Prod.MoveNext Loop RS_Cat2.MoveNextLoop%>}</script>Este é em SQLServer (Só preenche o primeiro combo, o segundo fica em branco) <!-- #include file = "../public.asp" --> <% Dim cnnDB, sid Set cnnDB = CreateCon sid = GetSid %><form name="form1"><select name="txt_categoria" onChange="BuscaProdutos()"><% 'aqui setamos na propriedade onChange, a função BuscaProdutos(). A cada mudança, a função é executada.%><option>-- Selecione categoria --</option><%'Fazemos a busca de todas as categorias para preencher o primeiro combo.SQL_Cat = "select * from categorias order by categoria"Set RS_Cat = SQLQuery(cnnDB, "select * from categorias order by categoria")Do Until RS_Cat.EOF Response.Write "<option value="&RS_Cat("id")&">"&RS_Cat("categoria")&"</option>" RS_Cat.MoveNextLoop%></select><br><%'nesse outro combo, não definimos nenhuma opção (option). Ele apenas receberá o retorno da função.%><select name="txt_produto"></select></form><%'Vamos então analisar a função BuscaProdutos()%><script>function BuscaProdutos(){//a variável categoria vai receber o valor selecionado na primeira combo (txt_categoria) var categoria = document.form1.txt_categoria.options[document.form1.txt_categoria.selectedIndex].value;//setamos duas variáveis auxiliares que irão ser utilizadas para controlesvar controle = 0var contador = 0<%'Listamos as categoriasSQL_Cat2 = "select * from categorias order by categoria"Set RS_Cat = SQLQuery(cnnDB, "select * from categorias order by categoria")'Enquanto não for final de arquivo, listamos os produtos da categoria atual (que está no loop)Do Until RS_Cat2.EOF SQL_Prod = "select * from produtos where id_categoria = "&RS_Cat2("id") Set RS_Cat = SQLQuery(cnnDB, "select * from produtos where id_categoria = "&RS_Cat2("id")) 'Vamos verificar a quantidade de registros encontrados. Serve também como um controle. SQL_Count = "select count(*) as maximo from produtos where id_categoria = "&RS_Cat2("id") Set RS_Cat = SQLQuery(cnnDB, "select count(*) as maximo from produtos where id_categoria = "&RS_Cat2("id")) Do Until RS_Prod.EOF %> //Enquanto não for fim de arquivo, verificamos se o produto retornado pertence à categoria guardada na //variável categoria (Java Script) e se nosso "controle" é menor que o máximo de registros. //Se tudo estiver OK, incrementamos "controle" e "contador" e escrevemos a nova opção em txt_produto. //Reparem que "contador" atua como a posição que o registro ocupará no combo. if(<%=RS_Prod("id_categoria")%> == categoria && controle < <%=RS_Count("maximo")%>) { controle++ document.form1.txt_produto.options[contador]=new Option('<%=RS_Prod("produto")%>','<%=RS_Prod("id")%>'); contador++ }<% RS_Prod.MoveNext Loop RS_Cat2.MoveNextLoop%>}</script>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.