Ir para conteúdo

POWERED BY:

Arquivado

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

Solano Rodrigues Netto

Exibir parte de um texto de um campo do BD sem cortar palavra

Recommended Posts

Bom dia!

Alguém pode me ajudar? Estou precisando de um código ASP que me permita exibir um campo de um bando de dados mostrando apenas as 100 primeiras letras (caracteres) sem cortar a palavra no meio. É um sistema de notícias que estou implementando. o código está conforme descrito a seguir:

 

Conexão com o BD:

 

<%
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("../banco/db1.mdb") & ";"
sqlstmt = "SELECT TOP 5 * from noticias order by data desc"
'response.write(sqlstmt)
'response.end
set rsquery1 = objConn.execute(sqlstmt)
%>

 

Código que exibe as 100 primeiras letras do campo "corpo", que é aonde vai descrito o texto da notícia:

 

 

<%=left(rsquery1("corpo"),100)& "..."%>

 

Agredeço a atenção.

Compartilhar este post


Link para o post
Compartilhar em outros sites

USA ASSIM:

 

<%@ Language="VBScript" %>  
<%  
Public Function Pontos(VarTexto, Max) ' Recebemos os valores  
    If Int(Len(VarTexto)) > Max Then  
        Response.Write(Left(VarTexto, Max)&"...") ' Usamos a função "substring" para fazer os cortes  
    Else  
        Response.Write(VarTexto)  
    End If  
End Function  
  
Texto = "De acordo com o DigiTimes, além de um novo processador dual-core da linha Nano para netbooks, a VIA Technologies também está preparando um modelo quad-core que estará disponível até o final de 2011.O novo Nano dual-core, desenvolvido em parceria com a TSMC, terá clock de 2GHz, 2 MB de cache L2 e deve estar disponível ainda em 2010."  
  
Call Pontos(Texto, 100) ' Chamando a função e mostrando o resultado  
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seguinte, vc faz da seguinte forma.

 

left(rs("descricao"),100)

if rs("descricao")>100 then
response.write(len(rs("descricao"),100)&"...")
end if

No caso o numero 100 é a quantidade de caracteres que vai mostrar.

 

Att;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Substitua o texto pelo seu recordset

 

Texto=rsquery1("corpo")

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde,

 

Gilberto Jr no seu caso ele retorna o erro:

 

Erro de compilação do Microsoft VBScript erro '800a0414'

Não é possível utilizar parênteses durante a chamada de uma Sub

 

 

e no caso da resposta do Xanburzum da o seguinte erro:

 

ADODB.Recordset erro '800a0cc1'

O item não foi encontrado na colecção correspondente ao nome ou ordinal pedido.

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O meu o que eu postei eu devo ter escrito alguma coisa errada no codigo pois eu não uso ele.

 

O do Xan deu esse erro porque na tabela não existe uma coluna com o nome corpo, dai basta você olhar e sustituir o nome.

 

Como deu certo você mesmo pode colocar o topico com resolvido e também coloca o script como ficou pois pode ajuda outras pessoas ai.

 

 

Att;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou colocar como resolvido e agradeço, mas tenho um outro problema, pois na abertura do banco faço um "SELECT TOP 5 * from noticias order by data desc"

 

e nesse código do XAN ele mostra só o último artigo... quando deixo o <%while not rsquery1.eof%> antes do código ele dá erro...

 

será que alguem tem paciência para resolver esse outro problema?



<div id="meio3">
<table width="470" border="0" cellpadding="0" cellspacing="0">
<%
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("../banco/db1.mdb") & ";"
sqlstmt = "SELECT TOP 5 * from noticias order by data desc"
'response.write(sqlstmt)
'response.end
set rsquery1 = objConn.execute(sqlstmt)
%>
<tr>
<td><a href="artigos.asp?id=<%=rsquery1("id_coluna")%>"></a>
<div align="justify" class="Texto1" id="meiointart2">

<p class="stylelencois_tam">ÚLTIMAS NOTÍCIAS:</p>
<p class="Texto1">

</p>
<div align="justify" class="Noticias">
<a href="javascript:abre('artigos_view.asp?id=<%=rsquery1("id_noticia")%>&idcol=<%=request("id")%>','teste',550,500,'yes');"><p class="Noticias">"<%=rsquery1("titulo")%>": <%
Public Function Pontos(VarTexto, Max) ' Recebemos os valores
If Int(Len(VarTexto)) > Max Then
Response.Write(Left(VarTexto, Max)&"...") ' Usamos a função "substring" para fazer os cortes
Else
Response.Write(VarTexto)
End If
End Function

Texto =rsquery1("corpo")


Call Pontos(Texto, 100) ' Chamando a função e mostrando o resultado
%>





em <%=rsquery1("data")%></p>
</a>


<%while not rsquery1.eof%>


</div>
<%rsquery1.movenext

wend

rsquery1.close%>
</div>
</a></td>
</tr>
</table>
</div>



Quando eu usava o código <%=left(rsquery1("corpo"),100)& "..."%> , mas que corta a palavra no meio, ele apresentava os últimos 5 artigos conforme descrito no "SELECT TOP 5 * from noticias order by data desc", só que o código <%while not rsquery1.eof%> entrava antes do <%=left(rsquery1("corpo"),100)& "..."%>

 

Abraço...

Compartilhar este post


Link para o post
Compartilhar em outros sites

como eu disse

 

Quando eu usava o código <%=left(rsquery1("corpo"),100)& "..."%> , mas que corta a palavra no meio, ele apresentava os últimos 5 artigos conforme descrito no "SELECT TOP 5 * from noticias order by data desc", só que o código <%while not rsquery1.eof%> entrava antes do <%=left(rsquery1("corpo"),100)& "..."%> depois do código do XAN tenho q colocar o <%while not rsquery1.eof%> depois do código dele...



observe que se eu tiro o top ele deveria mostrar todos os registros do campo corpo, mas não mostra...

Compartilhar este post


Link para o post
Compartilhar em outros sites

dá um response.write na string SQL para ver como esta sendo passado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz o response.write na string sql, em diversos locais deu um resultado diferente do que quero, apesar de não ter dado erro...

 

Observe que qdo eu coloco o seu código dessa forma ele mostra os últimos artigos, mas só o último fica dentro da formatação que eu quero:

 

<%
Public Function Pontos(VarTexto, Max) ' Recebemos os valores
If Int(Len(VarTexto)) > Max Then
Response.Write(Left(VarTexto, Max)&"...") ' Usamos a função "substring" para fazer os cortes
Else
Response.Write(VarTexto)
End If
End Function
while not rsquery1.eof
Texto =rsquery1("corpo")
Call Pontos(Texto, 50) ' Chamando a função e mostrando o resultado
%>

 

Vou explicar, por exemplo, no site essa div deve exibir os últimos artigos (descrito no código) parcialmente com reticências... e qdo vc leva o mouse sobre os artigos ele linka para uma página tipo popup mostrando o artigo completo.

 

Nesse caso o código atual mostra na div apenas o campo "corpo" e "data" e não linka... é como ser não houvesse a formatação do hiperlink na string para abrir a página tipo popup mostrando o artigo completo.

 

Será que deu pra compreender?



Pessoal, resolvi dessa forma com ajuda de um amigo, substitui o código do Xan pelo:

 

<%=left(rsquery1("corpo"), 100 + instr(100," ",rsquery1("corpo")))%>

 

Deixando o

 

<% while not rsquery1.eof %>

 

no local original (antes do código) como era utilizado antes com o código

 

<%=left(rsquery1("corpo"),100)& "..."%>

 

 

Agradeço a todos!

Compartilhar este post


Link para o post
Compartilhar em outros sites

ele estava fora do loop

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.