Power Builder - Consulta...

   
Vista:

Consulta...

Publicado por Jesus Faustor G. (8 intervenciones) el 25/10/2009 00:03:07
Buenas otra vez, hace poco hice una consulta, pero no fue lo que necesitaba la respuesta, la agradesco mucho pero es un caso distinto, el caso es un campo dentro de un datawindow, aca reescribo el caso, porfavor, si pudieran ayudarme, estare agradecido, porque me es urgente. gracias.

tengo un datawindow, lo que quiero es que uno de los campos del datawindos este validado para que solo me acepte 250 caracteres(la extension del campo es varchar(250)) si pasa esos 250 caracteres me arroje un mensaje diciendome que me excedi, y si es posible que me borre los caracteres excedentes, y no me deje salir del campo. aparte tambien quisiera su ayuda para que un single-line-edits sirva de contador de dicho campo validado del datawindos que mencione. Espero puedan ayudarme, muchas gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Consulta...

Publicado por miguell (153 intervenciones) el 25/10/2009 00:26:44
bueno ya sabes por anteriores contestaciónes cómo comprobar la longitud y dar mensaje etc.
------------------------------------------------------
te dijé como hacerlo en el itemchanged y te pasé también el código para evitar que saliese un mensaje de validación en inglés al hacer un return 1 en el itemchanged. Con eso no te deja salir de la columna al intentar pasarte de la longitud.

El itemchanged se dispara cuando cambias el cursos / foco de una columna a otra o cuando haces un update( ) ( dado que hace un accepText( ) ).

pero bueno ....
--------------------------------------
Si lo que quieres es que le salga un mensaje al usuario mientras que esté escribiendo sin que todavía haya cambiado / o intentado de cambiar el cursor a otra columna, entonces tendrás que codificarlo en el evento EDITCHANGED del datawindow.
(cosa que no recomiendo, ya que cada tecla que da el usuaria, se ejecuta tu control y no parece tener sentido, pero bien ...)

pega el siguiente código en el evento editchanged del control de dw
cambia 'nombre_de_mi_columna_con_max_250' por el nombre de tu columna:
// ------------------------- inicio código
choose case dwo.name
case 'nombre_de_mi_columna_con_max_250'
if len(data) > 250 then
this.setitem( row, dwo.name, left( data, 250) )
messagebox('Validación de longitud máxima', 'No puedes introducir más de 250 carácteres en campo ..... ')
end if
end choose

// ------------------------ fin código

saludos,
Miguell
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Consulta...

Publicado por jesus faustor g (8 intervenciones) el 25/10/2009 00:38:58
Gracias otra vez amigo, solo algo ultimo, y como haria para que borre los caracteres excedentes despues de lazarme el mensaje? Muchas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Consulta...

Publicado por mjlreina38@hotmail.com (153 intervenciones) el 25/10/2009 11:54:44
Está hecho ya en en código que te pasé:

...
if len(data) > 250 then
this.setitem( row, dwo.name, left( data, 250) )
...

con el "left( data, 250)" se están asignando sólo los primeros 250 caracteres de lo que ha tecleado el ususario ( DATA, que es un argumento del evento, igual que dwo.name)

en vez de usar left( data, 250), también puedes usar mid( data, 1, 250 )

saludos,
Miguel
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Consulta...

Publicado por jesus Faustor G. (8 intervenciones) el 25/10/2009 18:20:33
Muchas gracias amigo, muchisimas gracias, Ya complete lo que me faltaba, gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar