Ir para conteúdo
Fórum CódigoFonte.net
Entre para seguir isso  
Isaac

Atualização de um combo a partir de outro

Recommended Posts

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, alguem 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:

Compartilhar este post


Link para o post
Compartilhar em outros sites

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, alguem 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:

Cara, não li todo o seu código, mas recentemente fiz uma coisa parecida. O X da questão não está no JavaScript, e sim em seu banco. Se ele estiver redondo, com uma integridade boa, no JavaScript, vc só precisa fazer o Select, passando como parãmentro o Value que foi selecionado no combo de cima.

Ex: Select C.NOME FROM CLIENTE C WHERE C.CIDADE = C.CID_CLIENTE;

Não se siga exatamente a minha consulta, eh soh pra te dar uma idéia de como vc vai ter que consultar. Isso vai depender de como é seu banco, onde estão os valores, FK´s e PK´s.

Se num entendeu direito, pergunta aí.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
Entre para seguir isso  

×
×
  • Criar Novo...