Ir para conteúdo
Fórum Script Brasil
  • 0

Select Ultimalinha From Noticias


PhoEniXFirE

Pergunta

Estou desenvolvendo um sistema de notícias onde a pagina default.asp vai abrir a ultima noticia enviada, estava pensando em colocar a PageSize=1, para assim fazer o q eu quero, mas acredito q possa ter um jeito mais certo de se fazer isso. porque quando eu faço a seleção SQL = "select * from noticias ORDER BY id DESC", mando selecionar tudo, quando apenas meu interesse era selecionar a última linha. Alguém sabe fazer isso?

Agora estou tendo problemas mesmo é no que vem depois disso, abaixo da última noticia lançada, devem vir as chamadas das 5 penúltimas notícias (As 5 ultimas linhas com exceção da última mesmo rolleyes.gif ), isso eu não sei fazer, como tirar a exibição da apenas última, deixando as proximas? Mas, existindo solução p/ o primeiro caso, acredito q o segundo fica fácil.

huh.gif hum?

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

Para pegar apenas a ultima noticia:

SQL = "select top 1 * from noticias ORDER BY id DESC"
para visualizar as 5 antes da ultima:
SQL = "select top 6 * from noticias ORDER BY id DESC"
set rs = conexao.execute(sql)
If not rs.eof then
   Rs.MoveNext
else
   response.write "Nenhuma Noticia encotrada"
   response.end
end if
Do while Not Rs.Eof
   'exibição
   Rs.MoveNext
Loop

Link para o comentário
Compartilhar em outros sites

  • 0
Para pegar apenas a ultima noticia:

SQL = "select top 1 * from noticias ORDER BY id DESC"
para visualizar as 5 antes da ultima:
SQL = "select top 6 * from noticias ORDER BY id DESC"
set rs = conexao.execute(sql)
If not rs.eof then
   Rs.MoveNext
else
   response.write "Nenhuma Noticia encotrada"
   response.end
end if
Do while Not Rs.Eof
   'exibição
   Rs.MoveNext
Loop
Deu um erro: ADODB.Field (0x80020009) BOF ou EOF são verdadeiros, ou o registro atual foi excluído. A operação solicitada pelo aplicativo requer um registro atual. /sisnot/teste.asp Veja como ficou o cód:
<% 
Set DB = server.CreateObject("ADODB.connection")
DB.open "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("database.mdb")
SQLPRIME = "SELECT TOP 1 * FROM noticias ORDER BY id DESC"
Set RSPRIME = DB.execute(SQLPRIME)

chamada = RSPRIME.fields("chamada")
dataextenso = RSPRIME.fields("dataextenso")
autor = RSPRIME.fields("autor")
html = RSPRIME.fields("html")
%>

<%=dataextenso%><br>
<b><%=chamada%></b><br>
<font color=666666><%=autor%></font><br><br>
<%=html%>

<%
RSPRIME.close
set RSPRIME = nothing

SQLNEWS = "select top 6 * from noticias ORDER BY id DESC"
set RSNEWS = DB.execute(SQLNEWS)
If not RSNEWS.eof then
  RSNEWS.MoveNext
else
  response.write "Nenhuma Noticia encotrada"
  response.end
end if
Do while Not RSNEWS.Eof
  'exibição
  RSNEWS.MoveNext
Loop
%>

<%=RSNEWS.fields("datanumerica")%> - <%=RSNEWS.fields("chamada")%>

Fiz o q fiz errado? sad.gif

Link para o comentário
Compartilhar em outros sites

  • 0

essa linha em vermelho???

não tem nenhuma validação de fim de recordset!!!

ela tem que estar dentro do loop!!

<%

Set DB = server.CreateObject("ADODB.connection")

DB.open "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("database.mdb")

SQLPRIME = "SELECT TOP 1 * FROM noticias ORDER BY id DESC"

Set RSPRIME = DB.execute(SQLPRIME)

chamada = RSPRIME.fields("chamada")

dataextenso = RSPRIME.fields("dataextenso")

autor = RSPRIME.fields("autor")

html = RSPRIME.fields("html")

%>

<%=dataextenso%><br>

<b><%=chamada%></b><br>

<font color=666666><%=autor%></font><br><br>

<%=html%>

<%

RSPRIME.close

set RSPRIME = nothing

SQLNEWS = "select top 6 * from noticias ORDER BY id DESC"

set RSNEWS = DB.execute(SQLNEWS)

If not RSNEWS.eof then

RSNEWS.MoveNext

else

response.write "Nenhuma Noticia encotrada"

response.end

end if

Do while Not RSNEWS.Eof

'exibição

RSNEWS.MoveNext

Loop

%>

<%=RSNEWS.fields("datanumerica")%> - <%=RSNEWS.fields("chamada")%>

Link para o comentário
Compartilhar em outros sites

  • 0

essa linha em vermelho???

não tem nenhuma validação de fim de recordset!!!

ela tem que estar dentro do loop!!

Olha eu estou utilizando outro código, n consegui com esse, pois n sei como faço para dizer aonde acaba o tal loop, é isso o loop?

Aí o código q estou utilizando:

<% Set RS = Server.CreateObject("adodb.recordset")
RS.PageSize = 5
RS.Open "SELECT TOP 6 * FROM Noticias ORDER BY id DESC",Conn,3,3
IF RS.EOF then 
Response.Write "nenhum registro encontrado"
Response.End 'paramos o programa
END IF
intrec=0
While intrec < RS.PageSize and not RS.EOF %>
  <tr>
    <td width="100%"><font face="Arial" style="font-size: 8pt">
    <a href="noticia.asp?id=<%=Rs("Id")%>"><font color="#003366"><%=Rs("DataNumerica")%> - <%=Rs("Chamada")%></font></a></font></td>
  </tr>
<%
RS.MoveNext
intrec=intrec+1 
IF RS.EOF then 
response.write " " 
END IF
Wend 
%>

Está funcionando bem, o único problema é q está mostrando a ultima noticia. E quero q mostre as 5 penultimas, como faço isso nesse cód, ou vou ter q utilizar outro?

Link para o comentário
Compartilhar em outros sites

  • 0

tenta assi:

<% Set RS = Server.CreateObject("adodb.recordset")

RS.PageSize = 5

RS.Open "SELECT TOP 6 * FROM Noticias ORDER BY id DESC",Conn,3,3

IF RS.EOF then

  Response.Write "nenhum registro encontrado"

  Response.End 'paramos o programa

else

  Rs.MoveNext

END IF

intrec=0

While intrec < RS.PageSize and not RS.EOF %>

<tr>

  <td width="100%"><font face="Arial" style="font-size: 8pt">

  <a href="noticia.asp?id=<%=Rs("Id")%>"><font color="#003366"><%=Rs("DataNumerica")%> - <%=Rs("Chamada")%></font></a></font></td>

</tr>

<%

RS.MoveNext

intrec=intrec+1

IF RS.EOF then

response.write " "

END IF

Wend

%>

Link para o comentário
Compartilhar em outros sites

  • 0

Das duas formas funcionaram, agora vejam este code de interpretação mais simples:

<%
Set Conn = server.CreateObject("ADODB.connection")
Conn.open "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("database.mdb")

SQL = "Select Top 5 * From Noticias Order By Id DESC"
set rs = Conn.Execute(SQL)
If rs.EOF Then
%>
Não tem Noticias<br>
<%
Else
'Agora vou mostrar a Primeira, mais atual
%>
<B>NOTICIA QUENTE : </b><br><a href="noticias.asp?ID=<%=rs("Id")%>"><%=rs("Chamada")%></a> <%=rs("Contador")%> visitas<br>
<B>NOTICIAS FRIAS:</B><br>
<%
'Agora vou mostrar as outras quatro
Rs.MoveNext
Do while not rs.eof
%>
<a href="noticias.asp?ID=<%=rs("Id")%>"><%=rs("Chamada")%></a><br>
<%
rs.movenext 
loop
End If
%>
Agora adiconei um contador (Coluna Numerica), fiz um metodo padrão de contagem:
Rs("Contador") = Rs("Contador") + 1
Mas n funcionou, então tive uma idéia, aonde mostra a primeira noticia coloquei:
<%Id = Rs("Id")%>
e depois no final de tudo coloquei:
<% Set Rs = Conn.execute("UPDATE Noticias SET Contador=Contador+1 where Id="&Id&"") %>

Agora será q um jeito mais correto para fazer isso? porque desse jeito, o internauta ver um numero a menos, n visualiza sua visita contada.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...