Ir para conteúdo

Arquivado

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

lezão

Consultas entres duas tabelas

Recommended Posts

Ola galera, boa tarde!

 

estou com um probleminha com meu codigo

Estou usando a consulta duas vezes, a primeira consulta utilizo o nome da primeira tabela (Semana) a segunda tabela (Programação).

Essas tabelas ja estaun relacionadas no banco.

a primeira consulta esta funcionando perfeitamente.

 

vejam

forun.png

 

 

Agora a segunda consulta q é a tabela Programação naun roda, na vdd ela funciona mas naun esta pegando os valores q estaun no banco.

Notem q ( NENHUM REGISTRO ENCONTRADO) faz parte da segunda consulta...

 

vejam como eu fiz...

<link href="Css/styles.css" rel="stylesheet" type="text/css" />

  
  <% 


		registros = 7
' Definindo o caminho do banco de dados
caminho = "Dados/Quadrangular.mdb"

' Fazendo a conexão com o banco de dados (paginacao.mdb)
set objconn = Server.CreateObject("ADODB.Connection")
DSN = "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("Dados/Quadrangular.mdb")
objconn.Open DSN

' String SQL para consulta
SQL = "select * from Semana order by Id"

' Abrindo o registro
SET objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open SQL,objconn,3

' Se não encontrar nada escreve a mensagem
' Senão lista os registros
If objRS.EOF Then
Response.Write("Nenhum registro foi encontrado")
Else
' Definindo o número de registros por página
objRS.PageSize = registros

' Recupera o valor da variável pagina
pagina = Request.QueryString("pagina")

' Se a variável pagina for vazio, indica que a página sera a primeira
' Senão a variável pagina recebe o valor da página corrente, definida acima
If pagina = "" Then
objRS.AbsolutePage = 1
pagina = 1
Else
objRS.AbsolutePage = pagina
End If
%>
  
  
  

<table width="140" border="0" cellspacing="0" cellpadding="6">
  <tr> <%While Not objRS.EOF AND x < objRS.PageSize
     	x = x + 1 
q = q + 1
%>
    <td height="300" valign="top">
<fieldset>    
    
<table width="130" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td height="30">
    
    <div align="center">
    <font size="5" color="#777777" face="Arial">
	<b><%=objRS("Dia")%></b>
    </font>
    </div>
    
    </td>
  </tr>
  <tr>
    <td height="270" valign="top">
<% 
		registros = 20
' Definindo o caminho do banco de dados
caminho = "Dados/Quadrangular.mdb"

' Fazendo a conexão com o banco de dados (paginacao.mdb)
set objconn = Server.CreateObject("ADODB.Connection")
DSN = "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("Dados/Quadrangular.mdb")
objconn.Open DSN

' String SQL para consulta
SQL = "select * from Programacao WHERE Id LIKE '"& IdSemana &"' ORDER BY Id DESC"

' Abrindo o registro
SET Prgm = Server.CreateObject("ADODB.Recordset")
Prgm.Open SQL,objconn,3

' Se não encontrar nada escreve a mensagem
' Senão lista os registros
If Prgm.EOF Then
Response.Write("<center><font face=Verdana color=#999 size=2><b>Nenhum registro encontrado!</b><br><br><a href=javascript:history.back(-1)><font face=Verdana, Arial, Helvetica, sans-serif size=1 color=#000>PROGRAMACOES DO DIA AKI...</font></a> </center></font>")
Else
' Definindo o número de registros por página
Prgm.PageSize = registros

' Recupera o valor da variável pagina
pagina = Request.QueryString("pagina")

' Se a variável pagina for vazio, indica que a página sera a primeira
' Senão a variável pagina recebe o valor da página corrente, definida acima
If pagina = "" Then
Prgm.AbsolutePage = 1
pagina = 1
Else
Prgm.AbsolutePage = pagina
End If
%>    
 <%While Not Prgm.EOF AND x < Prgm.PageSize
     	x = x + 1 
%>    
    <br/>
 <div align="left">
 <font size="2" color="#666666" face="Arial">
  <%=Prgm("Descricao")%>
 </font>
 </div>    
<%	 		
Prgm.MoveNext
 
 		Wend
%>    
<div align="right">
	<%' Criando a barra de navegação
' Se a variável pagina for maior que 1 então imprime o botão Anterior com link
' Senão imprime sem link
If CInt(pagina) > 1 Then
Response.Write("")
Else
Response.Write("")
End If

' Lista todas as páginas encontradas
if objRs.PageCount < 11 then
 For i = 1 To objRS.PageCount
   response.write("")
 Next
end if

if objRs.PageCount > 10 then
     inicio=pagina
     fim=pagina + 9
     tot = pagina + 9
     if tot > ObjRS.PageCount then
       inicio = pagina-((pagina+9)-ObjRs.PageCount)
       fim = inicio+9
     end if
     for i = inicio to fim
         response.write("")
     next
end if


' Se a variável pagina for menor que o total de páginas então imprime o botão Próxima com link
' Senão imprime sem link
If CInt(pagina) < objRS.PageCount Then
Response.Write("")
Else
Response.Write("")
End If
End If
%>

	</div>	    
    
    
    </td>
  </tr>
</table>
</fieldset>      
</td><% If q = 7 Then %>	
</tr>
<%	 	
 	q = 0  	
 		End If    	
objRS.MoveNext
 
 		Wend
%>
</table> 


	
	<%' Criando a barra de navegação
' Se a variável pagina for maior que 1 então imprime o botão Anterior com link
' Senão imprime sem link
If CInt(pagina) > 1 Then
Response.Write("")
Else
Response.Write("")
End If

' Lista todas as páginas encontradas
if objRs.PageCount < 11 then
 For i = 1 To objRS.PageCount
   response.write("")
 Next
end if

if objRs.PageCount > 10 then
     inicio=pagina
     fim=pagina + 9
     tot = pagina + 9
     if tot > ObjRS.PageCount then
       inicio = pagina-((pagina+9)-ObjRs.PageCount)
       fim = inicio+9
     end if
     for i = inicio to fim
         response.write("")
     next
end if


' Se a variável pagina for menor que o total de páginas então imprime o botão Próxima com link
' Senão imprime sem link
If CInt(pagina) < objRS.PageCount Then
Response.Write("")
Else
Response.Write("")
End If
End If
%>
      <%
' Fecha e destroi os objetos RS e conn
objRS.Close : objconn.Close
Set RS = Nothing : Set objconn = Nothing
%>

	
    

alguém pode me dar um help !!!!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu acho q o secreto esta aki nessa parte de meu codigo ????

SQL = "select * from Programacao WHERE Id LIKE '"& IdSemana &"' ORDER BY Id DESC"

Compartilhar este post


Link para o post
Compartilhar em outros sites

agora coloquei assim e deu certo

SQL = "select Semana.Dia, Programacao.Descricao from Semana, Programacao WHERE Semana.Cod=Programacao.Id;"

mas ainda naun esta rodando certinho as descrições q aparece em cada dia da semana é de alguns dias..

 

vejam

http://shopcolina.com.br/quadrangular/prg.asp

Compartilhar este post


Link para o post
Compartilhar em outros sites

queria q ficasse assim vms ver se vcs entendam ???

 

 

(tabela Semana) >>> SEGUNDA TERÇA QUARTA QUINTA

 

(Tab.Programacao) >> texto texto texto texto

texto texto texto texto

texto texto texto texto

Compartilhar este post


Link para o post
Compartilhar em outros sites

usa o Between

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na vdd eu acho q estou precisando é de while ou loop.

Pq os dias da semana estaun certinho dando loop para direita, agora os textos q nan estaun saindo em baixo de cada dia da semana ......

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, por que você não faz uma consulta só, usando JOIN, e pega de uma vez os dados da semana, e a programação dela?

Assim você terá apenas um loop, e fará os quadros da semana com a programação de uma vez só.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acabei de ver q meu problema nuan é no select join e sim no while preciso q a tab_1 faça while para direita, e a tab_2 realize while um de baixo do outro e puxando os Id de cada para cada

Compartilhar este post


Link para o post
Compartilhar em outros sites

encontrei esse codigo, acho q ele é minha solução

mas esta dando esse erro

Microsoft VBScript runtime error '800a01a8'

Object required: ''

/quadrangular/prg.asp, line 70

codigo da net!

<%
'On Error Resume Next
Do While Not DadosHotel.EOF%>
<tr bgcolor="#CCCC99">
<td><%= DadosHotel("Nome")%></td>
<td colspan="5" bgcolor="#FFFFFF"><div align="left"><strong></strong></div> 
<div align="left">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<%Do While Not DadosTarifa.EOF
if DadosTarifa("id_Hotel") = DadosHotel("id_Hotel") then
if not DadosHotel.EOF or DadosHotel.BOF then
%>
<tr bgcolor="#CCCC99">
<td><%= DadosTarifa("Categoria")%></td>
<td width="49"><%= formatcurrency(DadosTarifa("hotBalcaosgl"))%></td>
<td width="49"><%= formatcurrency(DadosTarifa("hotBalcaodbl"))%></td>
<td width="49"><%= formatcurrency(DadosTarifa("hotAcordosgl"))%></td>
<td width="49"><%= formatcurrency(DadosTarifa("hotAcordodbl"))%></td>
</tr>
<%end if
end if
DadosTarifa.MoveNext
Loop
%>
</table>
</div> </td>
</tr>
<%DadosHotel.MoveNext
Loop

DadosHotel.Close
Set DadosHotel = Nothing
Fecha_BD()
%>

Linha do erro !

<%Do While Not DadosTarifa.EOF
if DadosTarifa("id_Hotel") = DadosHotel("id_Hotel") then
if not DadosHotel.EOF or DadosHotel.BOF then
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, com um SELECT JOIN você pega todos os dados de uma vez só, e faz apenas um loop.

 

Exemplo:

SELECT S.IdSemana, S.NmSemana, P.IdProgramacao, P.NmProgramacao, P.HoraProgramacao FROM Semana S JOIN Programacao P ON P.IdSemana = S.IdSemana ORDER BY S.IdSemana

Assim você terá todos os dados em uma única consulta, fazendo apenas um loop.

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas no meu caso será preciso fazer 2 loop

do jeito q estou usando tbm esta recuperando dos os dados das duas tabelas !

SQL = "select Semana.Dia, Programacao.Descricao, Programacao.CodSemana from Semana, Programacao WHERE Semana.Cod=Programacao.id;"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mano, eu coloquei apenas exemplos, os nomes dos campos são fictícios, para você apenas ver a sintaxe como deve ser.

Troque os campos que coloquei no exemplo pelos seus.

PS: Nas modelagens que eu faço, NM alguma coisa, significa "NOME" de alguma coisa. Ex.: NmSemana = Nome da Semana.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, na sua tabela de Programação não existe nenhum campo com o ID da semana?
Como você está fazendo essa ligação?

O correto seria existir um campo chamada "cod_semana" na tabela de programação.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então por que na sua query, esse campo não é referenciado no WHERE?

SQL = "select Semana.Dia, Programacao.Descricao, Programacao.CodSemana from Semana, Programacao WHERE Semana.Cod=Programacao.id;"

No seu WHERE tem que ser "Semana.Cod = Programacao.CodSemana", e não "Programacao.id".
Afinal, você quer as programações que estejam relacionadas à semana, logo, precisa linkar o código da seana. e não o ID da programação.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça a verificação se o dia da semana do registro atual é igual ao do registro anterior. Se for, não cria um novo quadro, apenas adiciona a programação.
Se for diferente, cria outro quadro.

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.