Ir para conteúdo

POWERED BY:

Arquivado

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

Adriano M.

[Resolvido] em 2 tabelas relacionadas

Recommended Posts

Ajuda em consulta de 2 tabelas

galera me ajudem.. eu to usando o seguinte codigo abaixo para listar um menu q esta numa tabela chamada categorias..porem linkei essas categorias com uma pagina q vai mostrar o conteudo q esta em outra tabela.. eu trabalhei assim mais usando apenas uma tabela.. agora com 2 estou tendo problemas.. segue abaixo o codigo do menu listado:

 

<!--#include file="conexao.asp"-->
<%
strSQL = "SELECT * FROM categorias order by id"
RS.Open strSQL, conexao, 3,3
%>

<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#FFFFFF" id="AutoNumber6" height="1" width="179">
<% do while not RS.EOF %>
<tr> 
<td width="17" height="1" bordercolor="#000099"> <font size="1" face="Arial"> <img border="0" src="bullet.gif" width="7" height="8"></font></td> 
<td height="1" bgcolor="#FFCC00" onmouseover="bgColor='#FEB301'" onmouseout="bgColor='#FFCC00'" width="159"> 
<font face="Arial" size="1"> <a href="vercont.asp?cat=<%=RS("id")%>" style="text-decoration: none"><font color="#000000"><%=RS("categoria")%></font></a></font></td>
</tr>
<% RS.MoveNext
loop %>

vercont.asp

essa pagina é a pagina q vai listar o conteudo q tem cada menu..

 

<%
set conexaox=server.CreateObject("adodb.connection")
cnpath="DBQ=" & server.mappath("banco/banco.mdb")
conexaox.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & cnpath

strSQLx = "SELECT * FROM categorias WHERE categoria=" & request.querystring("cat") & ""

set RS = Server.CreateObject("ADODB.RecordSet")
RS.Open strSQLx, conexaox, 3,3

teste = RS("campo6")
%>

obs: as 2 tabelas estao relacionadas.. o campo ID da tabela CATEGORIAS esta relacionada com o campo CATEGORIA da tabela produtos.. acredito q tenho q usar um INNER JOIN.. mais nao sei como utilizar.. ja tentei colocar o INNER JOIN mais nao deu certo.. talvez eu tenha colocado errado.. mais eu preciso recuperar o codigo do link q eu estou clicando, para q abra o respectivo produto

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas que problemas está tendo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas que problemas está tendo?

ADODB.Field (0x800A0BCD)

BOF ou EOF são verdadeiros, ou o registro atual foi excluído. A operação solicitada pelo aplicativo requer um registro atual.

 

ou seja.. o request.querystring nao esta conseguindo recuperar o valor da variavel.. nao to conseguindo recuperar o valor

Compartilhar este post


Link para o post
Compartilhar em outros sites

Antes de tentar acessar algum campo do banco é necessário verificar se existe algum registro.

 

Ex.

if not rs.eof then
'aqui vem o código da página
else
response.write "Nenhum registro foi encontrado"
end if

Compartilhar este post


Link para o post
Compartilhar em outros sites

Antes de tentar acessar algum campo do banco é necessário verificar se existe algum registro.

 

Ex.

if not rs.eof then
'aqui vem o código da página
else
response.write "Nenhum registro foi encontrado"
end if

mais o problema é q nao estou conseguindo nem pegar o valor da variavel querystring..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta isso:

<%
dim cat

cat = request.querystring("cat")

if not isnumeric(cat) then
	cat = 0
end if

response.write "Categoria:" &  cat & "<br />"

set conexaox=server.CreateObject("adodb.connection")
cnpath="DBQ=" & server.mappath("banco/banco.mdb")
conexaox.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & cnpath

strSQLx = "SELECT * FROM categorias WHERE categoria=" & cat & ""

set RS = Server.CreateObject("ADODB.RecordSet")
RS.Open strSQLx, conexaox, 3,3

if not rs.eof then
	teste = RS("campo6")
end if
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta isso:

<%
dim cat

cat = request.querystring("cat")

if not isnumeric(cat) then
	cat = 0
end if

response.write "Categoria:" &  cat & "<br />"

set conexaox=server.CreateObject("adodb.connection")
cnpath="DBQ=" & server.mappath("banco/banco.mdb")
conexaox.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & cnpath

strSQLx = "SELECT * FROM categorias WHERE categoria=" & cat & ""

set RS = Server.CreateObject("ADODB.RecordSet")
RS.Open strSQLx, conexaox, 3,3

if not rs.eof then
	teste = RS("campo6")
end if
%>

 

cara... deu certo! valeu mesmo eim.. teria como você me explicar a logica? eu nao entendi pq eu nao estava conseguindo daquele modo.. caso eu passe por isso de novo.. ja sei oq esta acontecendo..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você estava recebendo a variável e já jogando direto na consulta. Eu separei e validei, já que o campo era numérico, é obrigatório ter número na comparação. Para isso utilizei a função isnumeric:

cat = request.querystring("cat")

if not isnumeric(cat) then

cat = 0

end if

 

E depois, antes de acessar os dados do banco, verifiquei se existia algum. Se fosse fim de arquivo (não existisse nenhum registro), não entraria nesse if.

if not rs.eof then

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.