# Contar caracteres de un campo

**URL:** <https://foros.velneo.com/t/contar-caracteres-de-un-campo/9103>\
**Category:** Velneo\
**Created:** [21 Septiembre, 2016 09:08 UTC](https://foros.velneo.com/t/contar-caracteres-de-un-campo/9103 "2016-09-21T09:08:10Z")\
**Posts on this page:** 18\
**Page:** 1

<div class="post-metadata">

**Author:** ![overall](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/overall/32/5437_2.png) [@overall](https://foros.velneo.com/u/overall)\
**Post date:** [21 Septiembre, 2016 09:08 UTC](https://foros.velneo.com/t/contar-caracteres-de-un-campo/9103/1 "2016-09-21T09:08:10Z")

</div>

Hola,  
Muy sencillo, pero ne hay manera.  
Lo que quiero es poder contabilizar en una variable los caracteres que faltan para completar los 296 que tiene el campo ALFA 128.  
Desde una “Conexión de eventos” con señal “Tecla pulsada, Tecla soltada o Value changed”, lanzo un Manejador de evento que hace la correspondiente comprobación y va actualizando visualmente el contador de caracteres que faltan.  
Lo único que hace el proceso es actualizar el valor de la variable y lanzar un mensaje justo cuando nos excedemos.  
Pues bien, cuando estamos escribiendo, al poner un espacio, siempre nos manda al principio del campo, no pudiendo poner espacio al final. Si que acepta espacios entre letras.  
No hay forma de poder hacer una cosa tan sencilla.  
Alguna idea?  
Gracias

---

<div class="post-metadata">

**Author:** ![eic](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/eic/32/5064_2.png) [@eic](https://foros.velneo.com/u/eic)\
**Post date:** [21 Septiembre, 2016 09:52 UTC](https://foros.velneo.com/t/contar-caracteres-de-un-campo/9103/2 "2016-09-21T09:52:06Z")

</div>

Hola, Luis.

Una posible alternativa es colocar un cuadro de texto (p.ej., en rojo) a la derecha del control alfabético del campo en cuestión, con condicion de visibilidad: (296-len(#CAMPO)) \< 1. Esto funciona sin necesidad de manejadores de evento. No es un mensaje emergente, pero aparece un texto al lado que avisa de la incidencia.

Lo intenté con un evento “Value changed” (sólo ese evento), para mostrar un mensaje, pero no me deja escribir espacios en el campo (!!) si lo tengo activado. Raro (versión 7.18.1).

---

<div class="post-metadata">

**Author:** ![overall](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/overall/32/5437_2.png) [@overall](https://foros.velneo.com/u/overall)\
**Post date:** [21 Septiembre, 2016 11:37 UTC](https://foros.velneo.com/t/contar-caracteres-de-un-campo/9103/3 "2016-09-21T11:37:05Z")

</div>

Muchas gracias Fran

---

<div class="post-metadata">

**Author:** ![pacosatu](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/pacosatu/32/5131_2.png) [@pacosatu](https://foros.velneo.com/u/pacosatu)\
**Post date:** [21 Septiembre, 2016 14:34 UTC](https://foros.velneo.com/t/contar-caracteres-de-un-campo/9103/4 "2016-09-21T14:34:03Z")

</div>

Hola Luis.

Dices:

> ... al poner un espacio, siempre nos manda al principio del campo, no pudiendo poner espacio al final. Si que acepta espacios entre letras.

Esto es un comportamiento nativo de Velneo, cuando se produce cualquier evento en el formulario se refrescan todos los controles. Los campos de la tabla “NO pueden tener espacios al final” y por esa razón se quitan en cada resfresco.

Aunque la solución de Fran es perfecta, para otra ocasión, se puede evitar ese comportamiento usando una Variable Local, la cual no se verá afectada por el refresco respeteando los espacios al final.

Por ejemplo, en un formulario de Búsqueda en el que quieres que el usuario vaya tecleando en el campo #NAME palabras o trozos y al mismo tiempo ejecutando las Búsquedas resultantes. En este caso no se puede usar el campo de la tabla debido al efecto indeseado del refresco y habrá que sustituir el campo #NAME por una Variable Local del formulario.

Saludos  
Paco Satué

---

<div class="post-metadata">

**Author:** ![overall](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/overall/32/5437_2.png) [@overall](https://foros.velneo.com/u/overall)\
**Post date:** [21 Septiembre, 2016 21:29 UTC](https://foros.velneo.com/t/contar-caracteres-de-un-campo/9103/5 "2016-09-21T21:29:07Z")

</div>

Gracias Paco.  
El método que indicas de utilizar variables locales ya lo utilizo y va perfecto.  
Creía que la espacios en blanco al final del campo los quitaba al guardar el registro.  
Saludos

---

<div class="post-metadata">

**Author:** ![victorgt1](https://avatars.discourse-cdn.com/v4/letter/v/4491bb/32.png) [@victorgt1](https://foros.velneo.com/u/victorgt1)\
**Post date:** [22 Septiembre, 2016 09:41 UTC](https://foros.velneo.com/t/contar-caracteres-de-un-campo/9103/6 "2016-09-22T09:41:37Z")

</div>

Humm… interesante.

Hace tiempo intente utilizar un campo cuadro de texto (memo) para editar campos alfa largos en varias lineas, ya que el control de edicion alfabetico normal NO ACEPTA MULTILINEA. En el año 2016, en fin…

Todo va bien, el campo alfa funciona con el cuadro de texto, hasta que empiezas a pensar en la longitud maxima. El cuadro acepta cualquier cosa y si el usuario se pasa de largo al guardar trunca. Bastante razonable.

Y claro, lo siguiente es usar un evento cada vez que cambie el texto para controlar con len() y esas cosas… Logicamente todo esto no funciona por el problema expuesto en este post. Cada vez que se ejecuta el evento al carajo los blancos del final y ademas te pone el cursor al principio. Total que abandone la idea. La unica solucion es controlar el tamaño al guardar y avisar al usuario (un poco cutre, le dejas escribir).

Pero ahora se me ocurre que con una variable local quiza funcione (edicion multilinea de una variable local alfa en un cuadro de texto con control de longitud maxima). ¿Merecera la pena hacer la prueba?

PD: ya podian los de Velneo añadir una propiedad “Longitud maxima” al cuadro de texto. Pero seguramente sea algo complicadisimo y esten muy ocupados con cosas mas importantes.

Saludos.

---

<div class="post-metadata">

**Author:** ![manuel.rd](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/manuel.rd/32/3508_2.png) [@manuel.rd](https://foros.velneo.com/u/manuel.rd)\
**Post date:** [22 Septiembre, 2016 09:53 UTC](https://foros.velneo.com/t/contar-caracteres-de-un-campo/9103/7 "2016-09-22T09:53:52Z")

</div>

Alguien ha probado esto:  
[https://velneo.es/info\_v7\_719\_es/velneo\_vdevelop/scripts/clases/core/widget/vlineedit/#maxLength](https://velneo.es/info_v7_719_es/velneo_vdevelop/scripts/clases/core/widget/vlineedit/#maxLength)

Se supone que establece la longitud máxima del edit.

---

<div class="post-metadata">

**Author:** ![victorgt1](https://avatars.discourse-cdn.com/v4/letter/v/4491bb/32.png) [@victorgt1](https://foros.velneo.com/u/victorgt1)\
**Post date:** [22 Septiembre, 2016 09:59 UTC](https://foros.velneo.com/t/contar-caracteres-de-un-campo/9103/8 "2016-09-22T09:59:33Z")

</div>

Copio y pego de la ayuda:  
VLineEdit  
Hereda de: Widget  
Esta clase representa **al control de edición de una linea de texto.**

Creo que nada de multilinea aqui. Este debe ser el control normal de edicion de texto.

Necesitamos eso pero en el control cuadro de texto.

---

<div class="post-metadata">

**Author:** ![victorgt1](https://avatars.discourse-cdn.com/v4/letter/v/4491bb/32.png) [@victorgt1](https://foros.velneo.com/u/victorgt1)\
**Post date:** [22 Septiembre, 2016 10:12 UTC](https://foros.velneo.com/t/contar-caracteres-de-un-campo/9103/9 "2016-09-22T10:12:31Z")

</div>

Perdon, el control en Velneo se llama “caja de texto”, no cuadro de texto.

Saludos.

---

<div class="post-metadata">

**Author:** ![overall](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/overall/32/5437_2.png) [@overall](https://foros.velneo.com/u/overall)\
**Post date:** [22 Septiembre, 2016 10:31 UTC](https://foros.velneo.com/t/contar-caracteres-de-un-campo/9103/10 "2016-09-22T10:31:08Z")

</div>

Hola Wikan, perdona la ignorancia, pero donde deberíamos poner maxLength?

---

<div class="post-metadata">

**Author:** ![manuel.rd](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/manuel.rd/32/3508_2.png) [@manuel.rd](https://foros.velneo.com/u/manuel.rd)\
**Post date:** [22 Septiembre, 2016 10:38 UTC](https://foros.velneo.com/t/contar-caracteres-de-un-campo/9103/11 "2016-09-22T10:38:57Z")

</div>

En el Post Inicializado del formulario.

`theRoot.DataView().control("EDIT").maxLength(296)`

Incluso con un poco más de trabajo se podría leer directamente la longitud máxima del campo y hacerlo dinámico.

```auto
var tableInfo = theRegisterIn.tableInfo()
var maxLength = tableInfo.fieldBufferLen(tableInfo.findField("CAMPO_ALFA"))

```

Nota: Está escrito directamente en el post, podría contener errores.

---

<div class="post-metadata">

**Author:** ![overall](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/overall/32/5437_2.png) [@overall](https://foros.velneo.com/u/overall)\
**Post date:** [22 Septiembre, 2016 11:02 UTC](https://foros.velneo.com/t/contar-caracteres-de-un-campo/9103/12 "2016-09-22T11:02:57Z")

</div>

HOLA WIKAN,  
He probado lo que dices, y nos funciona.  
`theRoot.DataView().control("DSC").maxLength(296)`  
lo he puesto en el Pre-ini y en el Post-ini, y no hace nada  
Hay que hacer algo más, o no debe funcionar?  
Saludos

---

<div class="post-metadata">

**Author:** ![manuel.rd](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/manuel.rd/32/3508_2.png) [@manuel.rd](https://foros.velneo.com/u/manuel.rd)\
**Post date:** [22 Septiembre, 2016 11:30 UTC](https://foros.velneo.com/t/contar-caracteres-de-un-campo/9103/13 "2016-09-22T11:30:52Z")

</div>

Cambia DataView por dataView que lo escribi mal, a ver si es por eso

---

<div class="post-metadata">

**Author:** ![overall](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/overall/32/5437_2.png) [@overall](https://foros.velneo.com/u/overall)\
**Post date:** [22 Septiembre, 2016 11:41 UTC](https://foros.velneo.com/t/contar-caracteres-de-un-campo/9103/14 "2016-09-22T11:41:54Z")

</div>

No funciona,  
En el Pre-ini “Rompe” vClient y en Post-ini no hace nada (el control es una Caja de texto)  
Saludos

---

<div class="post-metadata">

**Author:** ![manuel.rd](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/manuel.rd/32/3508_2.png) [@manuel.rd](https://foros.velneo.com/u/manuel.rd)\
**Post date:** [22 Septiembre, 2016 11:56 UTC](https://foros.velneo.com/t/contar-caracteres-de-un-campo/9103/15 "2016-09-22T11:56:29Z")

</div>

Las cajas de texto no tienen la propiedad maxLength ya que pueden contener mucho texto (4GB si no recuerdo mal).

Está solución solo sirve para “edit” de una sola línea.

PD: En el Pre-Ini nunca se puede manipular controles ya que todavía no están construidos.

---

<div class="post-metadata">

**Author:** ![overall](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/overall/32/5437_2.png) [@overall](https://foros.velneo.com/u/overall)\
**Post date:** [22 Septiembre, 2016 13:56 UTC](https://foros.velneo.com/t/contar-caracteres-de-un-campo/9103/16 "2016-09-22T13:56:38Z")

</div>

Ok, gracias,.  
Nadie quiere escribir 296 caracteres en una sola linea. Un cosa tan sencilla y de solución …

---

<div class="post-metadata">

**Author:** ![informatica](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/informatica/32/5336_2.png) [@informatica](https://foros.velneo.com/u/informatica)\
**Post date:** [9 Noviembre, 2017 12:56 UTC](https://foros.velneo.com/t/contar-caracteres-de-un-campo/9103/17 "2017-11-09T12:56:23Z")

</div>

Hola, hoy me ha surgido la necesidad de controlar el número máximo de caracteres en un control de edición alfabético, y tras varias pruebas, lo he logrado creando un evento javascript al que llamo en el evento post\_ini del formulario con el siguiente contenido:

theRoot.dataView().control(“ED\_TBL\_10\_4”).maxLength = 10;  
theRoot.dataView().control(“ED\_TBL\_40\_1”).maxLength = 35;  
theRoot.dataView().control(“ED\_TBL\_60\_1”).maxLength = 60;

donde “ED\_TBL\_10\_4”, “ED\_TBL\_40\_1”, “ED\_TBL\_60\_1” son los identicadores de los controles en el formulario.

Un saludo,

---

<div class="post-metadata">

**Author:** ![alid-buritica](https://avatars.discourse-cdn.com/v4/letter/a/f6c823/32.png) [@alid-buritica](https://foros.velneo.com/u/alid-buritica)\
**Post date:** [9 Noviembre, 2017 16:27 UTC](https://foros.velneo.com/t/contar-caracteres-de-un-campo/9103/18 "2017-11-09T16:27:11Z")

</div>

buern dia  
VERP es una aplicacion ya finalizdda?
