Ir para conteúdo
Fórum Script Brasil
  • 0

Atualização De Um Combo A Partir De Outro


Isaac Newton

Pergunta

Olá pessoal, eu tenho uma página com 2 combos diferentes, os primeiro contem UF/CIDADE que é carregado a partir de um banco de dados em access e o segundo tem o nome dos clientes que é carregado do mesmo banco, gostaria que ao selecionar o estado/cidade só aparecece no combo cliente os clientes daquele estado/cidade, eu até já arrumei um código em JS mas n consegui implantar, alguém poderia me ajudar??

O código que arrumei está ai:

<select name="departamento" onchange="lista_funcionarios()">

<option value="">-- Selecione um departamento --</option>

<%

SQL = "select distinct tbdepartamento.coddep, descdep from tbdepartamento, tbfuncionario where tbdepartamento.coddep=tbfuncionario.coddep and (tbfuncionario.bloqueado is null or tbfuncionario.bloqueado='N') and (tbfuncionario.codfunc in (select distinct codfuncdest from tbexec_t) or tbfuncionario.codfunc in (select distinct codfunc from tbexec_eexecutor)) order by descdep"

Set Rs = ObjCon.execute(SQL)

Do Until Rs.EOF

Response.write("<option value="""& Rs("coddep") & """>"& Rs("descdep") & "</option>" & VbCrlf)

Rs.MoveNext

Loop

Rs.Close

Set Rs = Nothing %>

</select>

<select name="funcionario" onChange="setDepartamento(document.form.funcionario[selectedIndex].value)">

<option value="">-- Selecione um funcionario --</option>

<%

SQL = "select distinct codfunc, coddep, nome from tbfuncionario where (bloqueado is null or bloqueado = 'N') and (codfunc in(select codfuncdest from tbexec_t) or codfunc in(select codfunc from tbexec_eexecutor)) order by nome"

Set Rs = ObjCon.Execute(SQL)

Do Until Rs.EOF

Response.write("<option value="""& Rs("codfunc") & """> "& Rs("nome") & "</option>" & VbCrlf)

Buffer = Buffer & "<input type=""hidden"" name=""FUNCDEP" & Rs("codfunc") & """ value=""" & Rs("coddep") & """>" & _

"<input type=""hidden"" name=""nome" & Rs("coddep") & """ value=""" & Rs("nome") & """>" & _

"<input type=""hidden"" name=""cod" & Rs("coddep") & """ value="""& Rs("codfunc") & """>" & _

"<input type=""hidden"" name=""nome"" value="""& Rs("nome") & """>" & _

"<input type=""hidden"" name=""codigo"" value="""& Rs("codfunc")&""">"

Rs.MoveNext

Loop

Response.write(Buffer)

Rs.Close

Set Rs = Nothing %>

</select>

<script language="JavaScript">

function lista_funcionarios()

{

var depto = document.form.departamento.value;

document.form.funcionario.length = 1;

if(depto != '')

{

var funcionarios = eval('document.form.nome' + depto);

var codigos = eval('document.form.cod' + depto);

//Se existe apenas um colaborador de departamento selecionado

if (isNaN(parseInt(funcionarios.length))== true){

document.form.funcionario.length++;

document.form.funcionario[1].value = codigos.value;

document.form.funcionario[1].text = funcionarios.value;

}else{

//Se existem dois ou mais colaboradores no departamento selecionado

for(var i = 0;i < parseInt(funcionarios.length);i++)

{

document.form.funcionario.length = i + 2;

document.form.funcionario[i + 1].value = codigos.value;

document.form.funcionario[i + 1].text = funcionarios.value;

}

}

}else{

//Se existe apenas um colaborador de departamento selecionado

if (isNaN(parseInt(document.form.nome.length)) == true){

document.form.funcionario.length++;

document.form.funcionario[1].value = document.form.codigo.value;

document.form.funcionario[1].text = document.form.nome.value;

}else{

//Se existem dois ou mais colaboradores no departamento selecionado

for(var i = 0;i < parseInt(document.form.nome.length);i++)

{

document.form.funcionario.length = i + 2;

document.form.funcionario[i + 1].value = document.form.codigo.value;

document.form.funcionario[i + 1].text = document.form.nome.value;

}

}

}

}

function setDepartamento(codfunc) {

var departamento;

var i = 0;

departamento = getDepartamentoFuncionario(codfunc);

if(departamento == "0") {

document.form.departamento[0].selected = true;

}

else {

while(parseInt(document.form.departamento.value) != parseInt(departamento) ) {

i++;

}//fecha o while

document.form.departamento.selected = true;

}

}//fecha setDepartamento

function getDepartamentoFuncionario(codfunc)

{

if(eval('document.form.FUNCDEP'+codfunc) != null)

{

var dep=eval('document.form.FUNCDEP'+codfunc+'.value');

return dep;

}

else

{

return 0;

}

}

</script>

O meu codigo está assim:

<select name="CIDADE" style="font-family: Verdana; font-size: 8 pt">

<option value="">-- Selecione uma cidade --</option>

<%

SQL = "select ucase(estado) as sestado, ucase(cidade) as scidade from tbcliente where codcliente in (select distinct codcliente from tbclienteservico) group by ucase(estado), ucase(cidade) order by ucase(estado), ucase(cidade)"

Set RsCliente = objcon.Execute(SQL)

Do Until RsCliente.Eof

Response.write("<option value="""& RsCliente("sestado") & "-" & RsCliente("scidade") &""">"& RsCliente("sestado") & " / " & RsCliente("scidade") &"</option>")

RsCliente.MoveNext

Loop

RsCliente.Close

Set RsCliente = Nothing

%>

</select>

<select name="CODCLIENTE" style="font-family: Verdana; font-size: 8 pt">

<option value="">-- Selecione um cliente --</option>

<%

SQL = "select distinct codcliente, razaosocial from tbcliente where codcliente in (select distinct codcliente from tbclienteservico) order by razaosocial"

Set RsCliente = objcon.Execute(SQL)

Do Until RsCliente.Eof

Response.write("<option value="""& RsCliente("codcliente") &""">"& RsCliente("razaosocial") &"</option>")

RsCliente.MoveNext

Loop

RsCliente.Close

Set RsCliente = Nothing

%>

</select>

o que fazer? :unsure:

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

O Primeiro combo já lista os dados do db, correto?

Manda enviar os dados do primeiro combo via post para a mesma página, e pega esse valor pra usar como critério de pesquisa do segundo combo.

O segundo combo só será alimentado depois que selecionar alguma opção no primeiro.

Ou então... AJAX

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...