Foros del Web » Programando para Internet » ASP Clásico »

Como restringir caracteres por linea.

Estas en el tema de Como restringir caracteres por linea. en el foro de ASP Clásico en Foros del Web. Buenas Sres, como puedo hacer para restringir el numero de caracteres por linea que se mostraran por pantalla al levantar de una base access un ...
  #1 (permalink)  
Antiguo 15/09/2004, 04:50
Avatar de carlunchos  
Fecha de Ingreso: enero-2002
Ubicación: no tengo, soy un desubicado?.
Mensajes: 438
Antigüedad: 22 años, 4 meses
Puntos: 1
Pregunta Como restringir caracteres por linea.

Buenas Sres, como puedo hacer para restringir el numero de caracteres por linea que se mostraran por pantalla al levantar de una base access un campo memo?. Lo que pasa es que quiero mostrar el contenido del campo dentro de un <td></td> de una tabla de 70% de anchura, pero si el que ingreso el texto en la base puso todo en una sola linea (en el textarea), al haber muchos caracteres en linea la celda de la tabla se estira deformando el documento a imprimir.
La idea es que si los caracteres llegan hasta el largo de la celda de tabla envie los caracteres sobrantes a la linea de abajo.

Sugerencias?

Saludos.
__________________
Carlunchos
  #2 (permalink)  
Antiguo 15/09/2004, 05:08
Avatar de 3pies
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Desde una destilería
Mensajes: 2.584
Antigüedad: 20 años, 6 meses
Puntos: 144
Con javascript podrías hacer esto (yo lo uso a través de un fichero externo ".js"), poniendo en el HEAD:
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript" SRC="loquesea.js"></SCRIPT>, y contendría esto:

<!--
//Validador de formulario
function validacion(formulario) {

//Miramos que no exista ninguna palabra de más de 20 caracteres para que no se deformen las tablas
//primero reemplazamos los saltos de linea por espacios en blanco
var cadenadetexto = document.firmarlibro.comentarios.value;
while (cadenadetexto.search("\n") != -1) {
cadenadetexto = cadenadetexto.replace("\n"," ");
}
//luego descomponemos la cadena en palabras, separadas por espacios en blanco
var matriz = cadenadetexto.split(" ");
//por último controlamos que los elementos de la matriz no superen 20 caracteres
for (i=0; i<matriz.length; i++) {
if (matriz[i].length > 20) {
alert("Escribiste una palabra demasiado larga, en el comentario.\n\nSe trata de esta palabra: "+matriz[i]+"\nLargo de la palabra: "+matriz[i].length+" caracteres.\n\nLa longitud máxima por palabra, no puede superar los 20\ncaracteres.");
firmarlibro.comentarios.focus();
return false;
break;
}
}
-->

luego en el form de enviar el mensaje al foro, al tablón, o a lo que sea, pones:


<FORM onsubmit="return validacion(this)" METHOD="POST" ACTION="firmarlibroonombredetupagina.asp" NAME="firmarlibro">

Desventajas:

Si alguien se baja la página con el formulario a su disco duro, quita el javascript, y en el ACTION pone la dirección de tu web, con esa página asp, te podrán meter textos largosd (el ejemplo es para palabras de +20 caracteres).

Quizás sea mejor hacerlo en asp, aunque no creo que hayan muchos usuarios tan cabroncetes como para hacer eso que te comento.

Salu2
  #3 (permalink)  
Antiguo 15/09/2004, 07:20
 
Fecha de Ingreso: abril-2004
Ubicación: México D.F.
Mensajes: 1.724
Antigüedad: 20 años, 1 mes
Puntos: 4
Puedes restringir la entrada dese la página del cliente ya sea usando la propiedad maxlength de HTML, o si no desde ASP puedes poner :

mid(ob_rs("campo"),1,numeromaximoamostrardecaracte res)

Suerte!
  #4 (permalink)  
Antiguo 15/09/2004, 08:50
Avatar de lexus  
Fecha de Ingreso: enero-2002
Ubicación: Cali - Colombia
Mensajes: 2.234
Antigüedad: 22 años, 5 meses
Puntos: 4
Exclamación

hola, no recuerdo bien quien coloco est emensaje sorry por los creditos
aqui hay una funcion que te soluciona este problema de deformacion de las tablas.
chao


esta funcion corta palabras muy largas que veces nos dañan la estructura de nuestras tablas

Function cortarHasta(desde,cadena,caracterCortador)
'esta funcion devuelve la porcion de cadena encontrada
'hasta el caracter especificado en caracterCortador.
'si el tamaño de la cadena es menor que el
'especificado en desde, entonces, corregir el error.
dim enc
If desde > len(cadena) Then
cortarHasta = cadena
ElseIf desde < len(cadena) Then
enc = instr(desde,cadena,caracterCortador)
cortarHasta = left(cadena,enc - 1)
Else
cortarHasta = cadena
end if
end function
--------------------------------------------------------------------------------

Lo que tu deberias hacer es usar esa funcion en un bucle, e ir cortando la cadena desde el caracter ultimo. Es decir, si dices que cortas los 500 primers, desde el uno, asi;
cortarHasta(1, variable, 500)
y luego hacer
cortarHasta(501, variable, 500)
y mas tarde
cortarHasta(1001, variable, 500)
y asi indefinidamente...
Te diria com hacer esto, pero es que ahora estoy un poco espeso, y no se me ocurre mas que esto "


Function cortarHasta(desde,cadena,caracterCortador)
'esta funcion devuelve la porcion de cadena encontrada
'hasta el caracter especificado en caracterCortador.
'si el tamaño de la cadena es menor que el
'especificado en desde, entonces, corregir el error.
dim enc
If desde > len(cadena) Then
cortarHasta = cadena
ElseIf desde < len(cadena) Then
enc = instr(desde,cadena,caracterCortador)
cortarHasta = iif(enc>0,left(cadena,enc - 1),cadena)
Else
cortarHasta = cadena
end if
end function
__________________
Control de Visitantes, Control de Accesos, Minutas digitales, Manejo de Correspondencia
http://www.controldevisitantes.com
  #5 (permalink)  
Antiguo 15/09/2004, 10:03
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
Acá te paso otro código:


<%
Cadena = "la siguiente es un palabra larga: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA (que el foro la corta aplicando algo similar a esto :p)"

' Cantidad de caracteres permitidos
Largo = 25
' Separador utilizado
Separador = "_ "

arrCadena = Split(Cadena, " ")

For i = 0 to UBound(arrCadena)
If Len(arrCadena(i)) > Largo Then

Veces = (Len(arrCadena(i)) \ Largo) + 1

For j = 1 To Veces
Tmp = Mid(arrCadena(i),(j*Largo) - (Largo - 1), Largo)
Tmp2 = Tmp2 & Tmp & Separador
Next

Tmp2 = Left(Tmp2, Len(Tmp2) - Len(Separador))
arrCadena(i) = Tmp2
End if

Next

Response.Write Join(arrCadena)
%>
__________________
...___...
  #6 (permalink)  
Antiguo 15/09/2004, 19:39
Avatar de carlunchos  
Fecha de Ingreso: enero-2002
Ubicación: no tengo, soy un desubicado?.
Mensajes: 438
Antigüedad: 22 años, 4 meses
Puntos: 1
De acuerdo

A todos les digo gracias por la soga que me tiran, asi que chequeo cada cuestion y luego les comento.

Saludos.
__________________
Carlunchos
  #7 (permalink)  
Antiguo 16/09/2004, 06:40
Avatar de Muzztein  
Fecha de Ingreso: agosto-2002
Ubicación: Hangar 18
Mensajes: 1.703
Antigüedad: 21 años, 9 meses
Puntos: 16
Cita:
Iniciado por Al Zuwaga
Acá te paso otro código:


<%
Cadena = "la siguiente es un palabra larga: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA (que el foro la corta aplicando algo similar a esto :p)"

' Cantidad de caracteres permitidos
Largo = 25
' Separador utilizado
Separador = "_ "

arrCadena = Split(Cadena, " ")

For i = 0 to UBound(arrCadena)
If Len(arrCadena(i)) > Largo Then

Veces = (Len(arrCadena(i)) \ Largo) + 1

For j = 1 To Veces
Tmp = Mid(arrCadena(i),(j*Largo) - (Largo - 1), Largo)
Tmp2 = Tmp2 & Tmp & Separador
Next

Tmp2 = Left(Tmp2, Len(Tmp2) - Len(Separador))
arrCadena(i) = Tmp2
End if

Next

Response.Write Join(arrCadena)
%>


de todas las soluciones propuestas esta fue la que mas me gusto, por ser la mas elegante.

Saludos.
  #8 (permalink)  
Antiguo 16/09/2004, 09:42
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
Gracias por los "piropos a mi código", Muzztein

:p
__________________
...___...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:57.