criacaoi7 0 Denunciar post Postado Maio 27, 2008 Pessoal tenho uma tabela com os seguintes campos: Tabela: Cadastro_Escolas Campos: id_cidade / id_estado / id_escola / escola / endereco / complemento Lembrando que eu tenho outra tabela Cidades Campos: id_cidade / id_estado / cidade e mais uma tabela Estados Campos: id_estado / estado / sigla Eu quero numa página listar apenas as cidades que tem escolas cadastradas, ou seja, aquelas cidades que eu cadastrei uma ou mais escolas. A página no caso listará o nome da cidade e na frente o estado. Vai precisar ter um link, pra quando clicar no nome da cidade abrir uma página com os dados daquela escola salvos no DB. Podem me ajudar a fazer isso. Obrigado. Jr. Compartilhar este post Link para o post Compartilhar em outros sites
NaPraia 12 Denunciar post Postado Maio 27, 2008 select distinct e.estado, c.cidade from cadastro_escolas ce inner join cidade c on (ce.id_escola = c.id_escola) inner join estado e on (ce.id_estado = e.id_estado) no caso que está sua tabela, não necessita ter o campo id_estado na tabela cadastro_escolas, pois você já tem o campo id_cidade e na tabela cidade tem o id_estado. o campo está sendo repetido sem necessidade Compartilhar este post Link para o post Compartilhar em outros sites
Mário Monteiro 179 Denunciar post Postado Maio 27, 2008 com certeza nao ha mesmo necessiadade Compartilhar este post Link para o post Compartilhar em outros sites
criacaoi7 0 Denunciar post Postado Maio 28, 2008 NaPraia removi o campo id_estado da tabela cadastro_escolas como você sugeriu. Bem estou tentando fazer a página pra exibir os registros, apenas as cidades que tem escolas cadastradas. Estou com este erro: Erro de compilação do Microsoft VBScript erro '800a0409' Constante de seqüência não finalizada /cidades/paginacao.asp, line 10 strDados = "select distinct e.estado, c.cidade from cadastro_escolas ce -----------------------------------------------------------------------^ Veja como está o código da minha página que deverá exibir resultados: <% 'Abrimos a Conexão com o Banco Dim caminho Dim conexao Set conexao = Server.CreateObject("ADODB.Connection") conexao.Open= "Microsoft.Jet.OLEDB.4.0;Data Source=c:\web\olimpiadaconsespcombr\database\BD_DADOS.mdb" 'Selecionamos todos os Produtos da Tabela Set Dados = Server.CreateObject("ADODB.Recordset") strDados = "select distinct e.estado, c.cidade from cadastro_escolas ce inner join cidade c on (ce.id_escola = c.id_escola) inner join estado e on (ce.id_estado = e.id_estado)" rsDados.open strDados, conexao, 3, 3 'Definimos o Numero de Paginas com a propriedade "PageSize" do objeto Recordset rsDados.PageSize = 10 'Criamos as Validações if rsDados.eof then Mensagem = "Nenhum Registro Encontrado" Response.End else 'Definimos em qual pagina o visitante está if Request.QueryString("pagina")="" then intpagina = 1 else if cint(Request.QueryString("pagina"))<1 then intpagina = 1 else if cint(Request.QueryString("pagina"))>rsDados.PageCount then intpagina = rsDados.PageCount else intpagina = Request.QueryString("pagina") end if end if end if end if %> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Tutorial de Paginação</title> <style> /* Criei estas CSSs somente para melhorar o layout da Tabela de Paginação. Vocês podem modificar ao seus gostos... usem e abusem...:) */ .TProdutos{ border: 1px solid #666666; margin: 2px 0px 2px 0px; background: #FFFFFF; border-collapse:collapse; width: 800px; } .TProdutos td { border: 0px solid #666666; border-collapse:collapse; } .TProdutos td#Titulo { border: 0px solid #666666; font: 7pt Verdana, Arial, Helvetica; height: 17px; background: #063d97; color:#FFFFFF; } .TProdutos td#Dados { border: 1px solid #CCCCCC; font: 7pt Verdana, Arial, Helvetica; height: 18px; background: #EAEFFF; color: #666666; } </style> </head> <body> <table border="0" class="TProdutos"> <tr> <td width="181" id="Titulo">Produto ID</td> <td width="208" id="Titulo">Nome</td> <td width="201" id="Titulo">Tipo</td> <td width="190" id="Titulo">Categoria</td> </tr> <% 'Iniciamos o Loop rsDados.AbsolutePage = intpagina intrec = 0 While intrec<rsDados.PageSize and not rsDados.eof %> <tr> <td id="Dados"><%=rsDados("Escola")%></td> <td id="Dados"><%=rsDados("Endereco")%></td> <td id="Dados"><%=rsDados("Telefone")%></td> <td id="Dados"><%=rsDados("Fax")%></td> </tr> <% rsDados.MoveNext intrec = intrec + 1 if rsDados.eof then response.write " " end if Wend %> <tr> <td colspan="3" id="Dados"></td> <td id="Dados"> <% 'Criamos as Validações para a navegação "Anterior" e "Próximo" if intpagina>1 then %> <a href="paginacao.asp?pagina=<%=intpagina-1%>">Anterior</a> <% end if if StrComp(intpagina,rsDados.PageCount)<>0 then %> <a href="paginacao.asp?pagina=<%=intpagina + 1%>">Próximo</a> <% end if rsDados.close Set rsDados = Nothing %> </td> </tr> </table> </body> </html> Compartilhar este post Link para o post Compartilhar em outros sites
Mário Monteiro 179 Denunciar post Postado Maio 28, 2008 deixe isso em uma linha so strDados = "select distinct e.estado, c.cidade from cadastro_escolas ce inner join cidade c on (ce.id_escola = c.id_escola) inner join estado e on (ce.id_estado = e.id_estado)" Assim strDados = "select distinct e.estado, c.cidade from cadastro_escolas ce inner join cidade c on (ce.id_escola = c.id_escola) inner join estado e on (ce.id_estado = e.id_estado)" Compartilhar este post Link para o post Compartilhar em outros sites
hargon 64 Denunciar post Postado Maio 28, 2008 Une essas linhas: strDados = "select distinct e.estado, c.cidade from cadastro_escolas ce inner join cidade c on (ce.id_escola = c.id_escola) inner join estado e on (ce.id_estado = e.id_estado)" Deve ficar assim: strDados = "select distinct e.estado, c.cidade from cadastro_escolas ce inner join cidade c on (ce.id_escola = c.id_escola) inner join estado e on (ce.id_estado = e.id_estado)" o.O postamos no mesmo minuto... rs Compartilhar este post Link para o post Compartilhar em outros sites
criacaoi7 0 Denunciar post Postado Maio 28, 2008 Mário e hargon obrigado pela ajuda, retornou novamente um erro anterior que estava reproduzindo: Microsoft OLE DB Provider for ODBC Drivers erro '80004005' [Microsoft][ODBC Driver Manager] Nome da fonte de dados não encontrado e nenhum driver padrão especificado /cidades/paginacao.asp, line 6 Na linha 6 do código tenho isso: conexao.Open= "Microsoft.Jet.OLEDB.4.0;Data Source=c:\web\olimpiadaconsespcombr\database\BD_DADOS.mdb" <% 'Abrimos a Conexão com o Banco Dim caminho Dim conexao Set conexao = Server.CreateObject("ADODB.Connection") [b]conexao.Open= "Microsoft.Jet.OLEDB.4.0;Data Source=c:\web\olimpiadaconsespcombr\database\BD_DADOS.mdb"[/b] 'Selecionamos todos os Produtos da Tabela Set Dados = Server.CreateObject("ADODB.Recordset") strDados = "select distinct e.estado, c.cidade from cadastro_escolas ce inner join cidade c on (ce.id_escola = c.id_escola) inner join estado e on (ce.id_estado = e.id_estado)" rsDados.open strDados, conexao, 3, 3 Compartilhar este post Link para o post Compartilhar em outros sites
Mário Monteiro 179 Denunciar post Postado Maio 28, 2008 esta aplicação é local ou esta em um seridor já? tem qeu colocar o caminho correto do db Compartilhar este post Link para o post Compartilhar em outros sites
criacaoi7 0 Denunciar post Postado Maio 28, 2008 Mário já está no servidor, fiz uma pequena alteração na conexão com o DB e resolveu... veja como ficou: <% 'Abrimos a Conexão com o Banco Dim caminho Dim conexao Set conexao = Server.CreateObject("ADODB.Connection") conexao.provider= "Microsoft.Jet.OLEDB.4.0;Data Source=c:\web\olimpiadaconsespcombr\database\BD_DADOS.mdb" conexao.open 'Selecionamos todos os Produtos da Tabela Set Dados = Server.CreateObject("ADODB.Recordset") strDados = "select distinct e.estado, c.cidade from cadastro_escolas ce inner join cidade c on (ce.id_escola = c.id_escola) inner join estado e on (ce.id_estado = e.id_estado)" rsDados.open strDados, conexao, 3, 3 'Definimos o Numero de Paginas com a propriedade "PageSize" do objeto Recordset rsDados.PageSize = 10 Estou com este erro agora: Erro de tempo de execução do Microsoft VBScript erro '800a01a8' Objeto necessário: 'rsDados' /cidades/paginacao.asp, line 12 Minha linha 12: rsDados.open strDados, conexao, 3, 3 Obrigado. Jr. Compartilhar este post Link para o post Compartilhar em outros sites
hargon 64 Denunciar post Postado Maio 28, 2008 Ao invés de rsDados, utilize Dados. Ou então ao invés de Set Dados = Server.CreateObject("ADODB.Recordset"), utilize Set rsDados = Server.CreateObject("ADODB.Recordset") Compartilhar este post Link para o post Compartilhar em outros sites
Mário Monteiro 179 Denunciar post Postado Maio 28, 2008 isso mesmo voce setou Dados e usou rsDados Compartilhar este post Link para o post Compartilhar em outros sites
criacaoi7 0 Denunciar post Postado Maio 28, 2008 hargon e mário, alterei: Erro: Microsoft JET Database Engine erro '80040e14' Erro de sintaxe (operador faltando) na expressão de consulta '(ce.id_escola = c.id_escola) inner join estado e on (ce.id_estado = e.id_estado)'. /cidades/paginacao.asp, line 12 Compartilhar este post Link para o post Compartilhar em outros sites
Mário Monteiro 179 Denunciar post Postado Maio 28, 2008 as duas tabelas tem os campos id_escola para se relacionar? Compartilhar este post Link para o post Compartilhar em outros sites
hargon 64 Denunciar post Postado Maio 28, 2008 Se os campos estiverem corretos, tenta assim: strDados = "SELECT DISTINCT E.estado, C.cidade "&_ "FROM (cadastro_escolas CE INNER JOIN cidade C ON CE.id_escola = C.id_escola) INNER JOIN estado E ON CE.id_estado = E.id_estado " Compartilhar este post Link para o post Compartilhar em outros sites
criacaoi7 0 Denunciar post Postado Maio 28, 2008 Mário só a tabela cadastro_escolas tem o campo id_escola, pra idêntificar a escola, qual outra tabela precisaria ter este campo? Jr. Compartilhar este post Link para o post Compartilhar em outros sites
hargon 64 Denunciar post Postado Maio 28, 2008 Pelo seu SQL, a de cidade também. Na tabela cadastro_escolas não existe um campo código da cidade? Se existe, o SQL ficaria assim: strDados = "SELECT DISTINCT E.estado, C.cidade "&_ "FROM (cadastro_escolas CE INNER JOIN cidade C ON CE.id_cidade = C.id_cidade) INNER JOIN estado E ON CE.id_estado = E.id_estado " Onde id_cidade (por exemplo) é o código da cidade. Compartilhar este post Link para o post Compartilhar em outros sites
Mário Monteiro 179 Denunciar post Postado Maio 28, 2008 na minah opiniao nenhuma precisa mais So que voce usa como se tivesse aqui CE.id_escola = C.id_escola Compartilhar este post Link para o post Compartilhar em outros sites
criacaoi7 0 Denunciar post Postado Maio 28, 2008 Mário e hargon, eu deixei o código assim: Set rsDados = Server.CreateObject("ADODB.Recordset") strDados = "SELECT DISTINCT E.estado, C.cidade "&_ "FROM (cadastro_escolas CE INNER JOIN cidades C ON CE.id_cidade = C.id_cidade) INNER JOIN estados E ON CE.id_estado = E.id_estado " rsDados.open strDados, conexao, 3, 3 Só existe id_escola na tabela Cadastro_Escolas No código assim corrigi o nome das tabelas que o certo é cidades e estados. Estou com este erro: Microsoft JET Database Engine erro '80040e10' Nenhum valor foi fornecido para um ou mais parâmetros necessários. /cidades/paginacao.asp, line 13 Tenho isso na linha 13: rsDados.open strDados, conexao, 3, 3 Compartilhar este post Link para o post Compartilhar em outros sites
NaPraia 12 Denunciar post Postado Maio 28, 2008 xxx Compartilhar este post Link para o post Compartilhar em outros sites
hargon 64 Denunciar post Postado Maio 28, 2008 Existe id_estado na tabela cadastro_escolas? Ou é na cidades? Compartilhar este post Link para o post Compartilhar em outros sites