USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  ASP - Active Server Page
Voltar
Autor Assunto:  prencher cidades
Martini
Pontos: 2843 Pontos: 2843
PAROBÉ
RS - BRASIL
ENUNCIADA !
Postada em 20/05/2005 15:15 hs         
Olá pessoal,
 
como faço para prencher um combo com as cidades de um estado após o usuário escolher o estado em outro combo?
 
Obrigado
   
mpuntel
SANTA MARIA
RS - BRASIL
ENUNCIADA !
Postada em 20/05/2005 16:10 hs            
O "probleminha" é que toda vez que é selecionada uma nova opção a página é carregada novamente! Mas acho que isso não é problema.
 
Uso 2 tabelas, muito simples com os seguintes esquemas :
Tabela : Combo1
id_combo1 AutoNumber
nome_combo1 Text
Tabela : Combo2
id_combo2 AutoNumber
id_combo1 Number
nome_combo2 Text

Este único ficheiro para o efeito, tem então duas combo boxes, em que a segunda é 'enchida' com dados depois de escolhermos um dos campos da primeira. Claro que o programamdor pode usar a opção 'onchange' e fazer este passo automáticamente. Eu fiz assim porque julgo de mais fácil compreensão, e depois o programador pode fazer as alterações que julgue necessárias.
ficheiro : Combo.ASP
 
<%
Sub Combo1()' função que trabalha com a combo inicial
    'vamos fazer a declaração de SQL para encher a Combo
    SQLStmt = "SELECT id_combo1, nome_combo1 FROM combo1"
    'Executamos a declaração na Base de Dados
    rs.Open SQLStmt, conn, 2, 1
    'vamos construir o HMTL da primeira combo
    Response.Write"<font face='Verdana,Arial' size='2'>"
    Response.Write"combo inicial </font>"
    Response.Write"<SELECT name='combo1'>"
    'vamos percorrer o RecordSet referente aos estados
    while not rs.EOF
        'construímos cada estado na combo
        Response.Write"<OPTION "
        'se a escolha anterior for igual à do momento, deixamo-la escolhida
        if CInt(Request.Form("combo1"))= rs(0) then
            Response.Write"selected "
        end if
        Response.Write"value='"&rs(0)&"'>"&rs(1)&"</OPTION>"
        rs.MoveNext
    wend
    Response.Write"</SELECT><br><br><br>"
    Response.Write"<INPUT type='Submit' value='OK'><br><br><br>"
    rs.close
End Sub
Sub Combo2()' aqui construímos a combo referente às cidades
    id_combo1 = Request.Form("combo1")
    'se não houver escolha na combo dos estados, é como termos 0
    if id_combo1 = "" then
        id_combo1 = 0
    end if
    'vamos fazer a procura de cidades referentes ao
    'id da estado escolhido
    SQLStmt = "SELECT id_combo2, nome_combo2 FROM combo2 "
    SQLStmt = SQLStmt & "WHERE id_combo1=" & id_combo1
    'executamos o recordset
    rs.Open SQLStmt, conn, 2, 1
    'construímos a combo das cidades
    Response.Write"<font face='Verdana,Arial' size='2'>"
    Response.Writecombo secundária </font>"
    Response.Write"<SELECT name='combo2'>"
    while not rs.EOF
        Response.Write"<OPTION "
        'aqui também se controla se houve escolha antes,
        'para não perdermos a sua visualização
        if CInt(Request.Form("combo2"))= rs(0) then
            Response.Write"selected "
        end if
        Response.Write"value='"&rs(0)&"'>"&rs(1)&"</OPTION>"
        rs.MoveNext
    wend
    Response.Write"</SELECT>"
    rs.close ' fechar o recordset
End Sub
' criação de uma conexão DSNLess
conn = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="
conn = conn & Server.Mappath("combos.mdb") & ";"
' inicialização do bjecto do recordset
Set rs = Server.CreateObject("ADODB.Recordset")
' criação do formulário que vai suportar ambas as combos
Response.Write"<FORM name='form1' action='combos.asp'"
Response.Write" method='POST'>"
' vamos chamar a combo 1
Call Combo1()
' e vamos também chamar a combo 2
Call Combo2()
' finalizamos o formulário com a Tag para o efeito
Response.Write"</FORM>"
%>
É esse que eu uso. Espero que ajude.
 
Boa sorte.

Márcio Daniel Puntel.

   
Página(s): 1/1    


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

[:)] = 
[:P] = 
[:(] = 
[;)] = 

HTML DESLIGADO

     
 VOLTAR

  



CyberWEB Network Ltda.    © Copyright 2000-2024   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página