Ir para conteúdo

POWERED BY:

Arquivado

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

Chagas Neto

Asp Combobox

Recommended Posts

Ola amigos. Ja procurei neste forum e tambem ja vasculhei na net e nao consegui achar uma saida. Sou meio fraco em APS, mas ja faço algumas coisas.

 

Tenho uma tabela com o item GEX (empresas) e os municipios onde tem essas empresas. Quero fazer uma pesquisa, selecionando a empresa num combo e o outro combo me coloca as cidades onde tem essa empresa selecionada. No primeiro eu consegui selecionar as empresas, mas nao consigo mostrar as cidades no segundo. O BD é Access e utilizo o ASP. Se alguem puder ajudar, eu vou ficar muito feliz. Segue o codigo abaixo:

 

// GEX - Nome da Empresa
// APS - Cidade da Empresa, ambos na mesma tabela do BD Dados.mdb

// A funcao go() abriria uma pagina com os dados selecionados quando se clicar no botao Exibir.  Se tivesse somente o primeiro combo a funcao go eu tinha feito abaixo e tava funcionando ok.

<script language="Javascript">

function go() {
  var Opc=document.abcd.ComboGEX.options[document.abcd.ComboGEX.selectedIndex].value;
  
  if (Opc==""){
     alert("Por favor, Escolha a Empresa");
     return(false);}
     
  document.location = document.abcd.a.options[document.abcd.a.selectedIndex].value
}
</script>


<script language="JavaScript">


<%

  Dim mDataBaseDir
  mDataBaseDir = "Dados.mdb" 

  ' * Abre DSNless coneccao com Cartorios.mdb *'
  set connGlobal = server.createobject("ADODB.Connection")
  connGlobal.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ= " & server.mappath(mDataBaseDir)
  

  '* montando SQL para pegar os dados *'
  mSQL = "SELECT * FROM Dados ORDER BY GEX"
 
  
  '* Executa a sequencia SQL  *'
  set rsGlobal = connGlobal.execute(mSQL)
  
  Dim Gerencia(50), Gex1, Gex2, n
  
  Gex1 = rsGlobal("GEX")
  Gerencia(0) = rsGlobal("GEX")
  // Variavel utilizada pra contar a quantidade pra cada GEX (Empresa)
  n = 0
  
  while not rsGlobal.eof
    if ( rsGlobal("GEX") <> Gex1 ) then
       Gex1 = rsGlobal("GEX")
       n = n + 1
       Gerencia(n) = rsGlobal("GEX")
    end if
  
    // movendo para o próximo registro
    rsGlobal.movenext

  wend

 
  '* Fechando o arquivo e a conexao *'
  rsGlobal.close
  set rsGlobal = nothing
  
  connGlobal.close
  set connGlobal = nothing


%>


<form name="abcd">
<p style="margin-left: 10px" align="left">
<select name="ComboGEX" size="1" style="font-family: Tahoma; font-size: 10px">
<option selected>.:. Escolha a Gerência .:.</option>
<% for p=0 to n  %> 
  <% Dim Link %>
  <% Link = "javascript:AbreJanela('win','MostraGerencia.asp?Unidade" & Gerencia(p) & "',10,20,700,500,0,0,0,1,1)" %>
  <Option value = "<% =Gerencia(p) %>"><% =Gerencia(p) %></Option>
<% next  %>
</select> 

// [b]ate aqui ta tudo ok, pois o combo é preenchido com todas as empresas (GEX)[/b]


<% Dim NomeGEX
   // pegando o valor do primeiro combo
   NomeGEX = Request.QueryString("ComboGEX")

   // Aqui eu mandei escrever só pra ver se ele mostra o resultado do primeiro combo selecionado, mas é mostrado apenas o Texto Empresa
   // e se tivesse funcionando mostraria "Empresa: " + o valor selecionado no primeiro combo
   response.write "Empresa: " & NomeGEX & "<br>"

   mBD = "Dados.mdb" 

   ' * Abre conexao com o mdb *'
   set connGlobal = server.createobject("ADODB.Connection")
   connGlobal.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ= " & server.mappath(mBD)
  

   '* montando SQL para pegar os dados *'
   mSQL = "SELECT * FROM Dados Where GEX = '" & NomeGex & "'"
 
  
   '* Executa a sequencia SQL  *'
   set rsGlobal = connGlobal.execute(mSQL)

   
%>

<select name="ComboUnidade" size="1" style="font-family: Tahoma; font-size: 10px">
<option selected>.:. Escolha a Unidade .:.</option>

<%  while not rsGlobal.eof %>
     <Option value = "<% =RsGlobal("APS") %>"><% =rsGlobal("APS") %></Option>

<%  rsGlobal.movenext %>
<%   wend  %>

</select>

<%

  '* Fechando o arquivo e a conexao *'
  rsGlobal.close
  set rsGlobal = nothing
  
  connGlobal.close
  set connGlobal = nothing


%>

<input type="button" value="Exibir" onClick="go()" style="font-family: Tahoma; font-size: 10px">
</p>
</form>

// fim

Compartilhar este post


Link para o post
Compartilhar em outros sites

Chagas acredito que você terá que usar ajax ou uma função javascript.

O ideal seria essa pergunta estar sendo feita na área de Javascript.

 

Peça para algum moderador mover seu tópico para lá que será mais rápida a resposta.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok. Compreendo, postei em ASP porque o importante neste caso é o asp. Mas se algum moderador queira mover eu agradeço. Quanto ao Ajax nem mesmo sei o que é porque nao li nada a respeito ainda. Realmente estou precisando desta resposta se alguem puder ajudar eu agradeço. Lembro que faz uns tres dias que estou a procura e nao encontrei entao resolvi postar aqui.

 

Obrigado a todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

existe um exemplo, que postei usando bd , onde você seleciona no primeiro combo e ele atraves do evento onchange do combo preenche o próximo, e também existe outros ótimos, abaixo um exemplo com AJAX

 

Tabela estados
Campos: Cod, Estado

Tabela Cidades
Campos: CodCidade, Cidade, CodEstado

Tabela Imoveis
Campos: CodImovel, CodEstado, Imoveis, CodCidade

Arquivo default.asp

CÓDIGO
<%
'AQUI REALIZAMOS A CONEXÃO COM O BANCO DE DADOS. NENHUM SEGREDO.
Set conexao = Server.CreateObject("ADODB.connection")
DSNtest = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.Mappath("dados_01.mdb")
conexao.Open DSNtest

sql = "select * from estados"
set rs = conexao.Execute(sql)
%>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>:: ::</title>
<style type="text/css">
<!--
/*AQUI APLICAMOS UMA PEQUENO CSS SIMPLES.*/
body {
margin-left: 0px;
margin-top: 0px;
margin-right: 0px;
margin-bottom: 0px;
}
-->
</style></head>

<body>
<!-- CHAMAMOS AQUELA FAMOSA FUNÇÃO DE AJAX QUE COMO SEMPRE DIGO É PADRÃO PARA TUDO.
VEJA EXPLICAÇÕES DELA EM OUTROS ARTIGOS MEUS, QUE SE TRATA DE AJAX.
-->
<script language="javascript" src="ajax.js"></script>
<FORM method="post" name="frm1" id="frm1">
<table width="779" height="19" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
    <td width="163" height="40" valign="top"><table width="163" border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td height="29" background="Imagens/menu_001.gif"> </td>
      </tr>
      <tr>
        <td height="450" valign="top" bgcolor="#ECF2F0"><table width="150" border="0" cellspacing="0" cellpadding="0">
          <tr>
            <td height="19">
       <select style="width:200" id="estado" name="estado" onchange="trazdados();">
     <option value="0"></option>
                <%
    'ABAIXO NÓS PREENCHEMOS A PRIMEIRA COMBO. ATÉ AQUI TAMBÉM SEM NENHUM SEGREDO, NÉ?
    'NÃO ESQUEÇAM DE UMA COISA: PRECISAREMIS DO ID DA PRIMEIRA COMBO PARA PREENCHER O AS OUTRAS DUAS.
    'PORTANTO COLOQUEM NO VALUE DA COMBO O CÓDIGO DELA. PARA PEGARMOS DEPOIS...
    while not rs.EOF
    %>
                <option value="<%Response.Write(rs("COD") & "|" & rs("ESTADO"))%>" <%=selected%>><%=rs("ESTADO")%></option>
                <%
       rs.MoveNext
      wend
      
      rs.close
      set rs = nothing  
      %>
              </select>
            </td>
          </tr>
          <tr>
            <td height="19">
   <!-- VEJAM QUE AQUI EU NÃO FAÇO A SEGUNDA COMBO. COLOCO ELA VAZIA, APENAS PARA QUANDO O USUÁRIO ENTRAR
    VER QUE TEM A COMBO.
    E REPAREM QUE EXISTE ABAIXO ISSO: <span id='divcombouf'>. ESSA DIVI SERÁ A SEGUNDA COMBO QUE VIRÁ PREENCHIDA APÓS
    SELECIONAR UM REGISTRO NA PRIMEIRA COMBO. MAIS A FRENTE SERÁ EXPLICADO COMO E QUAL A FUNÇÃO QUE FAZ ISSO.
     -->
   <span id='divcombouf'>
              <select style="width:200" id="cidade" name="cidade" onChange="dadoscidade();">
      <option value="0"></option>
     </select>
   </span>
   </td>
          </tr>
          <tr>
            <td height="19">
   <!-- ESSA É A TERCEIRA COMBO. A EXPLICAÇÃO DA SEGUNDA (ACIMA) É EXATEMENTE IGUAL. NÃO MUDA NADA. -->
   <span id='divcomboimovel'>
              <select style="width:200" id="imovel" name="imovel">
                <option value="0"></option>
              </select>
   </span>
   </td>
          </tr>
          <tr>
            <td height="19"> </td>
          </tr>
        </table></td>
      </tr>
    </table></td>
    <td width="453"></td>
    <td width="163" valign="top"><table width="163" border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td height="29" background="Imagens/menu_002.gif"> </td>
      </tr>
      <tr>
        <td height="450" bgcolor="#F9FBFA"> </td>
      </tr>
    </table></td>
  </tr>
</table>
<table width="779" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
    <td height="33" background="Imagens/barra_003.gif"> </td>
  </tr>
</table>

<!-- AQUI COMO JÁ TINHA DITO PRECISO DOS ID'S DOS REGISTROS QUE ESTÃO NA COMBO PARA PODER PREENCHER CADA UMA.
ENTÃO CRIA - SE UM CAMPO HIDDEN PARA CADA COMBO. ASSIM QUANDO SELECIONAR UM REGISTRO, O ID DELE IRÁ PARA OS CAMPOS HIDDEN'S.
ISSO VALE PARA AS TRÊS COMBOS.
-->
<input type="hidden" name="codestado" id="codestado" value="<%=codestado%>" size="3">
<input type="hidden" name="codcidade" id="codcidade" value="<%=codcidade%>" size="3">
<input type="hidden" name="codimovel" id="codimovel" value="<%=codimovel%>" size="3">
</form>
</body>
</html>

<script>

//ESSA FUNÇÃO IRÁ TRAZER O ID DO ESTADO SELECIONADO NA PRIMEITA COMBO PARA PODERMOS PREENCHER A SEGUNDA E TERCEIRA COMBO.
function trazdados()
{
    //AQUI "INFORMAMOS" QUE O PRIMEIRA COMBO SERÁ SELECIOANDA E DEPOIS DAMOS UM SPLIT NA BARRA (|) QUE
    //SEPARA OS VALORES QUE ESTÃO NO VALUE DA COMBO1. SE você'S EXIBREM O CÓDIGO FONTE NO BROWSER VERÃO QUE A COMBO1 ESTARÁ ASSIM:
    // IDESTADO | NOMEESTADO.
    var arr = new String(frm1.estado.value);
    arr = arr.split('|');

  //AQUI TRAZEMOS APENAS O ID DE CADA ESTADO QUE FOR SELECIONADO.  
    frm1.codestado.value = arr[0];

  combocidade(); //CHAMA A FUNÇÃO AJAX QUE PREENCHER A COMBO CIDADE, ASSIM QUE É SELECIONADO UM REGISTRO NA COMBO1.
  comboimovel(); //CHAMA A FUNÇÃO AJAX QUE PREENCHER A COMBO IMÓVEK, ASSIM QUE É SELECIONADO UM REGISTRO NA COMBO1.    
      
}

//AQUI É A FUNÇÃO QUE PREENCHE A COMBO CIDADE.
//NÃO VOU ME APROFUNDAR NA EXPLICAÇÃO DESSA FUNÇÃO, JÁ QUE NOS OUTROS ARTIGOS QUE FIZ SOBRE AJAX, TEM A EXPLICAÇÃO SOBRE ELA.
//MAS REPAREM NO NOME DA DIV QUE DEMOS AQUI: divcombouf. É O MESMO NOME QUE DEMOS NO ID DAQUELA DIV QUE EXISTE ANTES DA COMBO2 NA PÁGINA.
function combocidade()
{
    var combouf = createXMLHTTP();
    combouf.open("post", "objestado.asp", true);
    combouf.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    combouf.onreadystatechange=function(){
     if (combouf.readyState==4){// abaixo o texto do gerado no arquivo executa.asp e colocado no div
      document.all.divcombouf.innerHTML = combouf.responseText;}}
      combouf.send("codestado=" + frm1.codestado.value);

}

//AQUI É A FUNÇÃO QUE SERÁ PREENCHIDA DE ACORDO COM O REGISTRO SELECIONADO NA COMBO1 E NA COMBO2.
//A EXPLICAÇÃO DA FUNÇÃO ACIMA VALE PARA ESSA TAMBÉM, JÁ QUE SÃO IGUAIS.
function comboimovel()
{
    var comboimovel = createXMLHTTP();
    comboimovel.open("post", "objimovel.asp", true);
    comboimovel.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    comboimovel.onreadystatechange=function(){
     if (comboimovel.readyState==4){// abaixo o texto do gerado no arquivo executa.asp e colocado no div
      document.all.divcomboimovel.innerHTML = comboimovel.responseText;}}
      comboimovel.send("codestado=" + frm1.codestado.value + "&codcidade="+frm1.codcidade.value);

}

//NESTA FUNÇÃO IREMOS OBTER O ID DA CIDADE. E PRA QUE PRECISAMOS DELA? PARA PREENCHER A COMBO IMÓVEL.
//A COMBO IMÓVEL SÓ TRARÁ REGISTROS DE ACORDO COM O REGISTRO SELECIONADO NA COMBO2.
//A EXPLICAÇÃO DA FUNÇÃO TRAZDADOS TAMBÉM VALE PARA ESSA.
function dadoscidade()
{
    var arr = new String(frm1.cidade.value);
    arr = arr.split("|");
  
    frm1.codcidade.value = arr[3];
    
    //VEJA QUE CHAMAMOS A FUNÇÃO QUE PREENCHE A COMBO IMÓVEL, DEPOIS QUE UM REGISTRO DA COMBO CIDADE É SELECIONADA.
    comboimovel();
}

//VOCÊS DEVEM TER REPARADO QUE NAS FUNÇÕES combocidade E comboimovel EXISTEM ESSE CAMINHO OBJETO/NOMEDOARQUIVO.ASP. CERTO?
//PORQUE CRIEI? PORQUE SE NO SEU SISTEMA VOCÊ PRECISAR USAR UMA DESSAS COMBOS, VOCÊ CHAMA APENAS O OBJETO.
//É COMO TRABALHAR COM ORIENTAÇÃO A OBJETOS.

//VEJA A EXPLICAÇÃO DAS PÁGINAS LOGO ABAIXO:
</script>


Arquivo objestado.asp

CÓDIGO
<%
'FAZ A CONEXÃO, SEM NENHUM SEGREDO.
Set conexao = Server.CreateObject("ADODB.connection")
DSNtest = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.Mappath("dados_01.mdb")
conexao.Open DSNtest

'RESGATA O ID DO ESTADO SELECIONADO PARA FAZER A SELAÇÃO DA COMBO DOIS (CIDADE).
codestado = request("codestado")

'AQUI ESTÁ NOSSO SELECT.
sql = "SELECT ESTADOS.COD, ESTADOS.ESTADO, CIDADES.CIDADE, CIDADES.CODCIDADE, IMOVEIS.CODIMOVEL, IMOVEIS.IMOVEIS "
sql = sql & "FROM (ESTADOS INNER JOIN CIDADES ON ESTADOS.COD = CIDADES.CODESTADO) "
sql = sql & "INNER JOIN IMOVEIS ON CIDADES.CODCIDADE = IMOVEIS.CODCIDADE WHERE ESTADOS.COD = " & codestado & " order by cidades.cidade"
set rs = conexao.Execute(sql)
%>

<!-- AUI MONTAMOS NOSSA COMBO DE CIDADE, CONFORME O ESTADO SELECIONADO -->
<table cellpadding="0" cellspacing="0" border="0">
<tr>
  <td>
       <select style="width:200" id="cidade" name="cidade" onChange="dadoscidade(this.value);">
                <%
      while not rs.EOF
      
       'if CStr(codestado) = Cstr(rs("COD")) then
       ' selected = "selected"
       'else
       ' selected = ""
       'end if
      %>
                <option value="<%Response.Write(rs("COD") & "|" & rs("ESTADO") & "|" & rs("CIDADE") & "|" & rs("CODCIDADE") & "|" & rs("CODIMOVEL") & "|" & rs("IMOVEIS"))%>" <%'=selected%>><%=server.HTMLEncode(rs("CIDADE"))%></option>
                <%
        rs.MoveNext
      wend
      
      rs.close
      set rs = nothing  
      %>
              </select>
  </td>
</tr>
</table>



Arquivo objimovel.asp

CÓDIGO
<%
'CONEXÃO COM O BANCO.
Set conexao = Server.CreateObject("ADODB.connection")
DSNtest = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.Mappath("dados_01.mdb")
conexao.Open DSNtest

'RESGATAMOS O ID DO ESTADO E DA CIDADE. PORQUE? PORQUE QUANDO SELECIONARMOS UM ESTADO A COMBO DE CIDADES E INÓVEL SERÁ PREENCHIDA.
'E QUANDO SELECIONARMOS UMA CIDADE A COMBO IMÓVEL SERÉ PREENCHIDA COM O REGISTRO CERTO.
codestado = request("codestado")
codcidade = request("codcidade")

'UMA PEQUENA COMPRAÇÃO PARA NÃO FAZER TODA A INSTRUÇÃO DENTRO DO SELECT.
'BEM SIMPLES, NÃO É? RSRSRSRS
if len(codcidade) then
filtro = " and CIDADES.codcidade = "&codcidade
else
filtro = ""
end if

'NOSSA SQL. VEJA QUE CHAMA A VARIÁVEL FILTRO NO SQL. É COMO SUBSTITUIR AQUELE INSTRUÇÃO QUE ATRIBUI A FILTRO NA CLÁSULA SQL.
sql = "SELECT ESTADOS.COD, ESTADOS.ESTADO, CIDADES.CIDADE, CIDADES.CODCIDADE, IMOVEIS.CODIMOVEL, IMOVEIS.IMOVEIS "
sql = sql & "FROM ESTADOS INNER JOIN (CIDADES INNER JOIN IMOVEIS "
sql = sql & "ON CIDADES.CODCIDADE = IMOVEIS.CODCIDADE) ON ESTADOS.COD = CIDADES.CODESTADO "
sql = sql & "WHERE ESTADOS.COD = " & codestado & filtro & " ORDER BY IMOVEIS.IMOVEIS"
'response.Write(sql)
'response.End()
set rs = conexao.Execute(sql)
%>

<!-- AQUI MONTAMOS NOSSA COMBO DE IMÓVEL
PARA QUANDO FOR SELECIONADO UM REGISTRO NA COMBO ESTADO E NA COMBO CIDADE.
-->
<table cellpadding="0" cellspacing="0" border="0">
<tr>
  <td>
       <select style="width:200" id="imovel" name="imovel">
                <%while not rs.EOF%>
                <option value="<%Response.Write(rs("COD") & "|" & rs("ESTADO") & "|" & rs("CIDADE") & "|" & rs("CODCIDADE") & "|" & rs("CODIMOVEL") & "|" & rs("IMOVEIS"))%>" <%'=selected%>><%=server.HTMLEncode(rs("IMOVEIS"))%></option>
                <%
        rs.MoveNext
      wend
      
      rs.close
      set rs = nothing  
      %>
              </select>
  </td>
</tr>
</table>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu nao sei nada de Ajax, vou estudar o codigo e tentar adaptar ao que estou fazendo e postar aqui o resultado. Mesmo assim ja agradeco aos amigos pelas respostas.

 

Muitissimo obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

este exemplo que postei usa AJAX, um ótimo code...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado amigos. Com a preciosa ajuda de voces consegui fazer o que pretendia e exatamente como queria. Utilizando AJAX tomando como base o codigo postado aqui deu tudo ok.

Compartilhar este post


Link para o post
Compartilhar em outros sites

legal...

parabéns...

qualquer coisa posta ae...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi xanburzum, eu copiei seu exemplo mas esta dando erro na linha 129 do default.asp

 

arr = arr.split("|");

 

esse post seu foi feito ja fas tempoo mas c puder me ajudar ..... meu e-mail LENONFLPP@HOTMAIL.COM

 

obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola pessoal. Eu postei como resolvido. Mas agora depois de varias colegas me mandarem um email, o codigo ta otimo, mas nao funciona no Firefox. Alguem tem uma dica?

 

O codigo é semelhante (e foi baseado nele) dos estados postado por xanburzum, mas agora descobri que nao funciona no firefox, testei em varias versoes mas nao funciona. No IExplorer funciona normalmente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ele gera algum erro ????

você testou em maq. diferentes ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

ele gera algum erro ????

você testou em maq. diferentes ?

 

Olha eu testei em duas ou tres maquinas que tem o firefox instalado e com versões diferentes, inclusive na minha é uma versão beta, e as outras nao sao versões beta do firefox. Nao dá erro nenhum apenas quando clica-se no botao exibir, nada acontece, nao erro, nem nada. Lembrando que o firefox está com execucao de javascript ativada e o bloqueador de popups desativado.

 

No IExplorer funciona direitinho, centralizado, tudo certo. No firefox fica alinhado a esquerda, e quando escolhemos a opcao todas da um erro de a pagina nao pode ser exibida. Mas se escolhermos uma gerencia ela seleciona as unidades certinho, mas quando se clica no botao exibir nao acontece nada, nem da erro nem abre a janela popup inserida no ajax (function AbreJanela).

 

Como disse, nao sou expert apenas tento fazer o que posso, pesquiso ali, acola e peço ajuda e tento adaptar as minhas necessidades.

 

O aplicativo é composto de tres arquivos:

1) o que conta e separa as Gerencias - RepresadosGerencias.asp

 

Codigo:

[color="#006400"]<html>

<head>
<meta name="GENERATOR" content="Microsoft FrontPage 6.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Nova pagina 1</title>

<script src="ajax.js"></script>

</head>

<body oncontextmenu="return false;" topmargin="0" bottommargin="0" style="text-align: center">

<%

  Dim mDataBaseDir
  mDataBaseDir = "Dados.mdb" 
  

  ' * Abre DSNless coneccao com o mdb *'
  set connGlobal = server.createobject("ADODB.Connection")
  connGlobal.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ= " & server.mappath(mDataBaseDir)
  

  '* montando SQL para pegar os dados *'
  mSQL = "SELECT * FROM Dados ORDER BY GEX"
 
  
  '* Executa a sequencia SQL  *'
  set rsGlobal = connGlobal.execute(mSQL)
  
  Dim Gerencia(50), Totalx(50), Gex1, Gex2, nx, x, TotalGeral
  
  Gex1 = rsGlobal("GEX")
  nx = 0
  x = 0
  TotalGeral = 0
  
  while not rsGlobal.eof

    if ( rsGlobal("GEX") <> Gex1 ) then
       Gerencia(nx) = GEX1
       Totalx(nx) = x
       Gex1 = rsGlobal("GEX")
       nx = nx + 1
       x = 0
    end if
  
    // movendo para o próximo registro
    rsGlobal.movenext
    x = x + 1
    TotalGeral = TotalGeral + 1

  wend

  // Pegando o ultimo valor
  Gerencia(nx) = Gex1
  Totalx(nx)    = x
  TotalGeral = "Todas (" & FormatNumber(TotalGeral,0) & ")"
 
   
  '* Fechando o arquivo e a conexao *'
  rsGlobal.close
  set rsGlobal = nothing
  
  connGlobal.close
  set connGlobal = nothing


%>


<form name="abcd">
<table border="0" style="font-family: Tahoma; font-size: 10px; color: #000080">
<tr>
<td bgcolor="#D1D1D1">
  <p align="center"><b>Gerência Executiva</b></td>

<td bgcolor="#D1D1D1">
<p align="center"><b>Unidade de Atendimento</b></td>
</tr>

<tr>
<td>
  <select name="ComboGEX" size="1" style="font-family: Tahoma; font-size: 10px" onchange="MandaID(this.value)">
    <option selected>.:. Escolha a Gerência .:.</option>
    <option value="Todas"><% =TotalGeral  %></option>
	<% for p=0 to nx  %> 
  	<% Dim Link, Texto %>
  	<% Texto = Gerencia(p) & " (" & FormatNumber(Totalx(p),0) & ")" %>
  	<Option value = "<% =Gerencia(p) %>"><% =Texto %></Option>
	<% next  %>
  </select>
</td>

<td>
<div id="UnidadeAtendimento">
	<select size="1" style="font-family: Tahoma; font-size: 10px">
		<option selected>.:. Escolha a Unidade .:.</option>
	</select></div></td>
<td>
<input type="button" value="Exibir" onClick="ExibeIds()" style="font-family: Tahoma; font-size: 10px"></td>
</tr>

</table>
</form>

</body>

</html>[/color]

2) o Segundo arquivo que separa as unidades ligadas a as gerencias - SelecionaUnidade.asp

 

Codigo:

[color="#006400"]

<%

Response.Charset = "ISO-8859-1"
id_GEX = request.querystring("id_GEX")


if ( id_GEX = "" or id_GEX = "Todas") then %>

   <select name="ComboAPS" size="1" style="border:1px solid #009900; font-family: Tahoma; font-size: 10px; padding-left:4px; padding-right:4px; padding-top:1px; padding-bottom:1px">
	   <option selected>.:. Escolha a Unidade .:.</option>
	   <option value = "Todas">Todas</option>
   </select>
     
<% else   %>

   <select name="ComboAPS" size="1" style="border:1px solid #009900; font-family: Tahoma; font-size: 10px; padding-left:4px; padding-right:4px; padding-top:1px; padding-bottom:1px">
	   <option selected>.:. Escolha a Unidade .:.</option>
	   <option value = "Todas">Todas</option>

<%
' * Abre DSNless conexao com Cartorios.mdb *'
set connGlobal = server.createobject("ADODB.Connection")
connGlobal.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ= " & server.mappath("Dados.mdb")
  
        
'* montando SQL para pegar os dados *'
mSQL = "SELECT * FROM Dados where GEX = '" &id_GEX& "' order by APS"
 
  
'* Executa a sequencia SQL  *'
set rsGlobal = connGlobal.execute(mSQL)
        
Dim Agencia(1000), Total(1000), GEX1, n, q
GEX1 = rsGlobal("APS")
n = 0
q = 0
        
while not rsGlobal.eof
  if rsGlobal("APS") <> GEX1 then
     Agencia(n) = GEX1 
     Total(n) = q
     GEX1 = rsGlobal("APS")
     n = n + 1
     q = 0
  end if
          
  rsGlobal.movenext
  q = q + 1
        
wend

// Seleciona o ultimo registro
Agencia(n) = GEX1
Total(n) = q

        
'* Fechando o arquivo e a conexao *'
rsGlobal.close
set rsGlobal = nothing
  
connGlobal.close
set connGlobal = nothing

for p = 0 to n
	Dim Texto, NomeUnidade 
	    
	Texto = Agencia(p) & " (" & FormatNumber(Total(p), 0) & ")" 
	    
	// Retirando o codigo da unidade (So é mostrado o nome da Agencia)
	NomeUnidade = Right(Texto, Len(Texto) - 9)
	    
	%>
		<option value="<%= Agencia(p) %>"><% =NomeUnidade %></option>
<% next %>
	
</select>

<% end if %>
[/color]

3) E o arquivo Ajax.js onde dispara a funcao ExibeIDs para abrir um popup com o resultado

 

[color="#006400"]

/*'Exemplo do uso do Ajax
'Autor: Andreia_Sp - scriptbrasil.com.br'2007 versão 1.0
*/


var xmlHttp

/* Essa funo manda a ID selecionada do combo de estados para a pgina que ir filtrar as cidades */
function MandaID(str)
{
xmlHttp=GetXmlHttpObject()
	if (xmlHttp==null)
	{
		alert ("Este browser no suporta HTTP Request")
		return
	}

var url="SelecionaUnidade.asp" // o arquivo que ir executar a SQL das cidades
url=url+"?id_GEX="+str // recebe o ID do estado para filtrar as cidade
url=url+"&sidjs="+Math.random()
xmlHttp.onreadystatechange=stateChanged
xmlHttp.open("GET",url,true)
xmlHttp.send(null)
}

/* Essa funcao ir exibir o resultado na DIV */
function stateChanged()
{ 
	if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
	{ 
		document.getElementById("UnidadeAtendimento").innerHTML=xmlHttp.responseText
	}
}

/* Instancia */
function GetXmlHttpObject()
{
var objXMLHttp=null

	if (window.XMLHttpRequest)
	{
		objXMLHttp=new XMLHttpRequest()
	}
	else if (window.ActiveXObject)
	{
		objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP")
	}
return objXMLHttp
}



function ExibeIds()
{
var Gerencia = document.getElementById('ComboGEX');
var Unidade  = document.getElementById('ComboAPS');
var TextoFiltro; 


if (Gerencia.value == '')
   {
   alert('Escolha uma Gerência');
   return;
   }
   
if (Gerencia.value == "Todas") 
   {
   javascript:OpenMeFull('Default.asp');
   return;
   }
   

if (Unidade.value == ''  || Unidade.value=="Todas")
   {
   TextoFiltro = 'MostraGerencia.asp?Unidade=' + Gerencia.value;
   }
else 
	{
	//if (Gerencia.value != '' && Unidade.value != '')
	//alert('ID do Gerencia : ' + Gerencia.value + ' (' + Gerencia.options[Gerencia.options.selectedIndex].text + ')' + '\n\n' + 'ID da Unidade : ' + Unidade.value + ' (' + Unidade.options[Unidade.options.selectedIndex].text + ')');
	//alert('ID Gerencia : ' + Gerencia.value + '\n\n' + 'ID da Unidade : ' + Unidade.value);
	//alert(TextoFiltro);
	TextoFiltro = 'MostraRepresados.asp?Texto=' + Gerencia.value + '|' + Unidade.value;
	}
javascript:AbreJanela('win',TextoFiltro,10,20,800,550,0,0,0,1,1);
}


// Abre uma janela com os resultados
function AbreJanela(name, url, left, top, width, height, toolbar, menubar, statusbar, scrollbar, resizable)
{
toolbar_str = toolbar ? 'yes' : 'no';
menubar_str = menubar ? 'yes' : 'no';
statusbar_str = statusbar ? 'yes' : 'no';
scrollbar_str = scrollbar ? 'yes' : 'no';
resizable_str = resizable ? 'yes' : 'no';

window.open(url, name, 'left='+left+',top='+top+',width='+width+',height='+height+',toolbar='+toolbar_str+',menubar='+menubar_str+',status='+statusbar_str+',scrollbars='+scrollbar_str+',resizable='+resizable_str);

}

// Abre em tela cheia
function OpenMeFull(x){
remote = window.open(x, 'janela_openFull', 'toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,top=0,left=0');
	remote.resizeTo(window.screen.availWidth, window.screen.availHeight);
	}

// fim do arquivo ajax.js

[/color]

Compartilhar este post


Link para o post
Compartilhar em outros sites

verifique se o browser não esta rodando nenhum plugin ou bloqueando algo

Compartilhar este post


Link para o post
Compartilhar em outros sites

verifique se o browser não esta rodando nenhum plugin ou bloqueando algo

 

Acredito que não, pois testei em pelo menos tres máquinas, em versões diferentes. Na minha eu até criei um novo perfil. Nao é bloqueio, é alguma coisa no script (provavelmente no ajax.js) que nao funciona no firefox.

 

Mas to pesquisando na net. Vamos se algum expert le o topico e dá uma luz. Apesar de tudo a grande maioria dos nossos servidores usa o IExplorer (uns 80%), mas eu queria resolver.

 

Um abraço aos amigos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenta rodar essa função

 

function getBrowser() {  
  if (window.XMLHttpRequest) {   
      a=new XMLHttpRequest(); } //Objeto nativo (FF/Safari/Opera7.6+)  
  else {  
    try {   
       a=new ActiveXObject("Msxml2.XMLHTTP");  //activeX (IE5.5+/MSXML2+)  
    }     
    catch(e) {  
      try {   
     a=new ActiveXObject("Microsoft.XMLHTTP"); //activeX (IE5+/MSXML1)  
      }     
      catch(e) { /* O navegador não tem suporte */   
     a=false;   
      }  
    }  
  }   
  return a;  
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenta rodar essa função

 

function getBrowser() {  
  if (window.XMLHttpRequest) {   
      a=new XMLHttpRequest(); } //Objeto nativo (FF/Safari/Opera7.6+)  
  else {  
    try {   
       a=new ActiveXObject("Msxml2.XMLHTTP");  //activeX (IE5.5+/MSXML2+)  
    }     
    catch(e) {  
      try {   
     a=new ActiveXObject("Microsoft.XMLHTTP"); //activeX (IE5+/MSXML1)  
      }     
      catch(e) { /* O navegador não tem suporte */   
     a=false;   
      }  
    }  
  }   
  return a;  
}

 

Usei a funcao mas tambem nao deu certo e fica dando erro bem estranho no IExplorer (sem espaco no disco) na execuçao da sequencia SQL (connGlobal.execute). Alem disso nada mudou com relacao ao Firefox.

 

 

No arquivo ajax.js original:

 

 

function GetXmlHttpObject()

{

var objXMLHttp=null

 

if (window.XMLHttpRequest)

{

objXMLHttp=new XMLHttpRequest()

}

else if (window.ActiveXObject)

{

objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP")

}

return objXMLHttp

}

 

 

 

E utilizando a funcao:

 

 

function GetXmlHttpObject()

{

if (window.XMLHttpRequest) {

a=new XMLHttpRequest(); } //Objeto nativo (FF/Safari/Opera7.6+)

else {

try {

a=new ActiveXObject("Msxml2.XMLHTTP"); //activeX (IE5.5+/MSXML2+)

}

catch(e) {

try {

a=new ActiveXObject("Microsoft.XMLHTTP"); //activeX (IE5+/MSXML1)

}

catch(e) { /* O navegador não tem suporte */

a=false;

}

}

}

return a;

}

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

estranho...

 

você tem a url para testarmos

Compartilhar este post


Link para o post
Compartilhar em outros sites

estranho...

 

você tem a url para testarmos

 

Infelizmente nao. É no trabalho (intranet) e só funciona la dentro da empresa.

 

Mas a intencao é a que fica. E ja fico feliz pelas tentativas de me ajudarem e o meu muito obrigado por isso.

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.