• 0
Sign in to follow this  
Isaac Newton

Atualização De Um Combo A Partir De Outro

Question

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:

Share this post


Link to post
Share on other sites

4 answers to this question

Recommended Posts

  • 0

Rapaz, nem testei seu script, mas é só pegar o valor do primeiro combo e usar como critério para seleção dos clientes.

Share this post


Link to post
Share on other sites
  • 0

mas teria que fazer 2 paginas, o cara teria que selecionar a cidade, ai na outra pagina eu carregaria com os nomes dos cliente, mas queria que atualizasse na mesma pagina, pode ateh da refresh, porque eu sei que sem refresh so ajax.

Share this post


Link to post
Share on other sites
  • 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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this