Ir para conteúdo

POWERED BY:

Arquivado

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

PhoEniXFirE

Select Ultimalinha From Noticias

Recommended Posts

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. Pq qndo eu faço a seleção SQL = "select * from noticias ORDER BY id DESC", mando selecionar tudo, qndo apenas meu interesse era selecionar a última linha. Alguém sabe fazer isso?

 

Agora estou tendo problemas mesmo eh 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 http://forum.imasters.com.br/public/style_emoticons/default/assobiando.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.

 

;) hum?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pro segundo voce seleciona as 5 ultimas, ignora o primeiro registro com "MoveNext", e mostra os próximos quatro.

<{POST_SNAPBACK}>

Cara n consegui, veja ai meu codigo:

<% 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.closeset RSPRIME = nothingSQLNEWS = "SELECT TOP 4 nome1,nome2,nome3,Max(id) FROM noticias Group by nome1,nome2,nome3 Having id < MAX(id) ORDER BY 1,2,3,4 DESC "set RSNEWS = DB.execute(SQLNEWS)If not RSNEWS.eof then  RSNEWS.MoveNextelse  response.write "Nenhuma Noticia encotrada"  response.endend ifDo while Not RSNEWS.Eof  'exibição  RSNEWS.MoveNextLoop%><%=RSNEWS.fields("datanumerica")%> - <%=RSNEWS.fields("chamada")%>
Veio o seguinte erro:

Tipo de erro:

Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)

[Microsoft][Driver ODBC para Microsoft Access] Você tentou executar uma consulta que não inclui a expressão 'id<MAX(id)' especificada como parte de uma função agregada.

/sisnot/teste.asp, line 23

 

Só consegui colocar a ultima noticia, http://forum.imasters.com.br/public/style_emoticons/default/cry.gif mas as chamadas das penultimas n...

Compartilhar este post


Link para o post
Compartilhar em outros sites

você não pode fazer issoid<MAX(id)MAX(id) não significa nadatente assimid<(SELECT MAX(id) FROM noticias)acho que ficaria assim tudoem vez de SQLNEWS = "SELECT TOP 4 nome1,nome2,nome3,Max(id) FROM noticias Group by nome1,nome2,nome3 Having id < MAX(id) ORDER BY 1,2,3,4 DESC "tente fazerSQLNEWS = "SELECT TOP 4 nome1,nome2,nome3 FROM noticias WHERE id<(SELECT MAX(id) FROM noticias) ORDER BY 1,2,3,4 DESC "ah, veja se os nomes no order by são estes mesmo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

você não pode fazer isso

 

id<MAX(id)

 

MAX(id) não significa nada

 

tente assim

 

id<(SELECT MAX(id) FROM noticias)

 

acho que ficaria assim tudo

 

em vez de

 

SQLNEWS = "SELECT TOP 4 nome1,nome2,nome3,Max(id) FROM noticias Group by nome1,nome2,nome3 Having id < MAX(id) ORDER BY 1,2,3,4 DESC "

 

tente fazer

 

SQLNEWS = "SELECT TOP 4 nome1,nome2,nome3 FROM noticias WHERE id<(SELECT MAX(id) FROM noticias) ORDER BY 1,2,3,4 DESC "

 

ah, veja se os nomes no order by são estes mesmo...

<{POST_SNAPBACK}>

Cara fiz como você falou, olha como ficou meu código:

<% Set RS = Server.CreateObject("adodb.recordset")RS.PageSize = 5RS.Open "SELECT TOP 4 nome1,nome2,nome3 FROM noticias WHERE id<(SELECT MAX(id) FROM noticias) ORDER BY 1,2,3,4 DESC",Conn,3,3IF RS.EOF then Response.Write "nenhum registro encontrado"Response.End 'paramos o programaEND IFintrec=0While 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.MoveNextintrec=intrec+1 IF RS.EOF then response.write " " END IFWend %>
Mas recebi um retorno de erro:

Tipo de erro:

Microsoft OLE DB Provider for ODBC Drivers (0x80004005)

[Microsoft][Driver ODBC para Microsoft Access] O mecanismo de banco de dados Microsoft Jet não reconhece '4' como um nome de campo ou expressão válida.

/sisnot/Default.asp, line 97

 

N ffiz td certo? Qual o problema?

Compartilhar este post


Link para o post
Compartilhar em outros sites

existe este 4 lá no db???

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara faz o seguinte tenta tirar esse pedaço aqui

 

ORDER BY 1,2,3,4 DESC

 

e muda ele pra ficar assim

 

ORDER BY ID DESC

 

tenta assim e veja o q acontece

 

Flw

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara faz o seguinte tenta tirar esse pedaço aqui

 

ORDER BY 1,2,3,4 DESC

 

e muda ele pra ficar assim

 

ORDER BY ID DESC

 

tenta assim e veja o q acontece

 

Flw

<{POST_SNAPBACK}>

Cara tinha feito assim tb, mas n funcionou.

Agora estou com um código bem mais simples q une tudo:

<%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 quatroRs.MoveNextDo while not rs.eof%><a href="noticias.asp?ID=<%=rs("Id")%>"><%=rs("Chamada")%></a><br><%rs.movenext loopEnd 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? Pq desse jeito, o internauta ver um numero a menos, n visualiza sua visita contada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

não entendi seu comentario...

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

não entendi seu comentario...

<{POST_SNAPBACK}>

Como o internauta pode ver sua visita contada com este código, pq consegui contabilizar, só será visto no proximo acesso, você viu o post completo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

não vi nãovocê pode corrigir isso adicionando um ao valor que será exibido ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

não vi não

 

você pode corrigir isso adicionando um ao valor que será exibido ...

<{POST_SNAPBACK}>

Agora foi eu quem n entendi. você pode me explicar como fazer isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

você disse que o usuario ve um valor não atualizado certo??onde você mostra isso para ele??

Compartilhar este post


Link para o post
Compartilhar em outros sites

você disse que o usuario ve um valor não atualizado certo??

 

onde você mostra isso para ele??

<{POST_SNAPBACK}>

Veja você mesmo:

<%Set Conn = server.CreateObject("ADODB.connection")Conn.open "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("database.mdb")SQL = "Select Top 6 * From Noticias Order By Id DESC"set rs = Conn.Execute(SQL)If rs.EOF Then%>Nenhuma notícia foi adicionada. Aguarde atualizações...<%Else'Mosta a última notícia enviada, a mais atual%><%=rs("DataExtenso")%><br><%=rs("Chamada")%><bR><%=rs("Autor")%><br><%=rs("Html")%><br><br><%=rs("Contador")%> clique(s)<%'Guardando número do Id para contar a visitaId = Rs("Id")'Agora vou mostrar as outras cincoRs.MoveNextDo while not rs.eof%>    <a href="noticia.asp?id=<%=rs("Id")%>"><%=rs("DataNumerica")%> - <%=rs("Chamada")%></a><%Rs.MoveNextLoopEnd If'Agora vou contabilizar a visitaSet Rs = Conn.execute("UPDATE Noticias SET Contador=Contador+1 where Id="&Id&"")%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

aqui<%=rs("Contador")%> clique(s)você pode adionar já o novo valor exibindo o correto<%=rs("Contador") + 1%> clique(s)

Compartilhar este post


Link para o post
Compartilhar em outros sites

aqui

 

<%=rs("Contador")%> clique(s)

 

você pode adionar já o novo valor exibindo o correto

 

<%=rs("Contador") + 1%> clique(s)

<{POST_SNAPBACK}>

Hehehe. Q solução mais louca essa hehehe + 1 KKKKKKKKKK

 

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Valew pela força!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

aqui

 

<%=rs("Contador")%> clique(s)

 

você pode adionar já o novo valor exibindo o correto

 

<%=rs("Contador") + 1%> clique(s)

Hehehe. Q solução mais louca essa hehehe + 1 KKKKKKKKKK

 

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Valew pela força!!

de nada amigo do login complicado (li isso em algum lugar, não sei de quem copiei)

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.