Ir para conteúdo

Arquivado

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

criacaoi7

Criar página para exibir dados.

Recommended Posts

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

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

com certeza nao ha mesmo necessiadade

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

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

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

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

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

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

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

isso mesmo

 

voce setou Dados e usou rsDados

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

as duas tabelas tem os campos id_escola para se relacionar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

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

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

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

Existe id_estado na tabela cadastro_escolas? Ou é na cidades?

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.