Validación en TextBox con Excepción

1,132 views
Skip to first unread message

stallman stallman

unread,
Jun 5, 2011, 3:27:39 AM6/5/11
to publice...@googlegroups.com
Buenas estimados Señores.

*Por favor quisiera me puedieran ayudar con lo siguiente:

1- En un TextBox digito el código de un cliente, éste lo busca en la Tabla "Clientes" si lo encuentra despliega en otro TextBox los datos del Cliente, si no entonces envía un Mensaje al usuario que no se encontró, que vuelva a digitar otro código hasta encontrarlo: En el LostFocus del TextBox tengo:


SELECT Clientes
            SEEK intCliente
           
            IF FOUND()
                strCliente_Desc=Nom_Cliente

                ELSE
                    MESSAGEBOX('El Código de Cliente:[' + ALLTRIM(STR(intCliente)) + ']   NO Existe',16,'Busqueda de Clientes')      
            ENDIF


2- Cómo le permito al usuario que salga del Formulario en el momento que lo desee, ya que así como se encuentra no me permite hacerlo, cada vez que quiero abandonar el formulario me envía el mensaje que no existe el código del cliente y me retorna al txtCliente nuevamente.

Les agradezco profundamente la ayuda y colaboración.

Walter R. Ojeda Valiente

unread,
Jun 5, 2011, 5:25:42 AM6/5/11
to publice...@googlegroups.com
Hay muchas formas:
- Podrías verificar si la última tecla presionada es ESC y si lo es, entonces salir del método antes de realizar la validación
- Podrías verificar si el usuario hizo click sobre el botón CANCELAR
- En tu validación en el LOSTFOCUS(), si hay un error pondrías: NODEFAULT y This.SetFocus()

Saludos.

Walter.

P.D.: No te molestes en enviarme bendiciones, haz eso con quien crea en esas tonterías, no conmigo.




Date: Sun, 5 Jun 2011 01:27:39 -0600
Subject: [vfp] Validación en TextBox con Excepción
From: stall...@gmail.com
To: publice...@googlegroups.com

GeoSys Diseño de Software

unread,
Jun 5, 2011, 9:50:56 AM6/5/11
to publice...@googlegroups.com
Lo que te dice Walter es correcto, además de eso, también puedes ponerle que si no tiene valor o sea nada digitado en el TextBox que no tome accion y que si se activa la búsqueda y no encontró coincidencia, que limpie inmediatamente lo digitado en el TextBox, para que al no encontrarlo quede vacío.

O sea, que si está vacío el Textbox que no busque, pero esto es solamente si te sirve que el usuario continue digitando alguna información.

Por supuesto que si se trata de guardar datos, a la hora de validar tienes que verificar en tu formulario los TextBox  y objetos que están vacíos y que deberían llevar información para no guardar datos en blanco en los que por exigencia tienen que llevar datos si o si.

Depende la estructuración que tienes en tu formulario.

Si es que ese TextBox tiene que esperar y no salir de allí, entonces aplica solo  solución de Walter


Saludos

Anthony Contreras Peralta

Costa Rica.


stallman stallman

unread,
Jun 5, 2011, 11:57:03 PM6/5/11
to publice...@googlegroups.com
Muchas Gracias Señores por las recomendaciones....

1- Me parece excelente la idea de verificar si el usuario hizo click en el botón Cancelar, es algo como éso que busco realizar.

1.1 - Si no les causo molestia o atraso quizás me puedan indicar la sintaxis para realizar lo anterior, dado que no tengo una idea como hacer y no he encontrado nada en la web.


Les agradezco profundamente la ayuda que me brindan día a día.

spartaco

unread,
Jun 6, 2011, 8:36:50 AM6/6/11
to Comunidad de Visual Foxpro en Español
Prueba con esto

If !mdow()
SELECT Clientes
SEEK intCliente
IF FOUND()
strCliente_Desc=Nom_Cliente
ELSE
MESSAGEBOX('El Código de Cliente:[' +
ALLTRIM(STR(intCliente)) + '] NO Existe',16,'Busqueda de Clientes')
ENDIF

endif

Jairo Miranda

unread,
Jun 6, 2011, 9:35:26 AM6/6/11
to publice...@googlegroups.com
Muchas veces al usuario hay que darle las cosas en bandeja para que le sea
más fácil la digitación de datos . te envio un ejemplo de cómo el usuario al
digitar el primer carácter de un código de cliente , sale una lista que
despliega los usuarios que empiezan por ese primer caracter digitado, es
solamente debe seleccionar el código que desea (mostrando el nombre del
cliente claro!) y ya uno hace las validaciones de búsqueda de teléfonos ,
cuota de crédito, saldos , etc.

Borra la extencion .txt y descomprímelo y pruébalo .

La idea es programar sin usar tanto código ..
JM espero sirva

-----Mensaje original-----
De: publice...@googlegroups.com
[mailto:publice...@googlegroups.com] En nombre de spartaco
Enviado el: Lunes, 06 de Junio de 2011 07:37
Para: Comunidad de Visual Foxpro en Español
Asunto: [vfp] Re: Validación en TextBox con Excepción

form.rar.txt

Guillermo MDQ

unread,
Jun 6, 2011, 10:20:09 AM6/6/11
to Comunidad de Visual Foxpro en Español
Aca tenes un ejemplo para salir de un Valid al pulsar un boton
Cancelar o un boton Salir.

IF Mdown()
loObj=SYS(1270)
IF Vartype(loObj)='O' AND loObj.Name="cmdSalir"
loObj = NULL
Thisform.Release
ENDIF
IF Vartype(loObj)='O' AND loObj.Name="cmdCancelar"
loObj = NULL
Return
ENDIF
ENDIF

Saludos
Guillermo

Luis Maria Guayan

unread,
Jun 6, 2011, 10:37:33 AM6/6/11
to publice...@googlegroups.com
Aqui tienes un ejemplo de Esparta en PortalFox

-- Evitar el Evento Valid al salir del Formulario --

http://www.portalfox.com/article.php?sid=931


Luis María Guayán
Tucumán, Argentina
_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________

stallman stallman

unread,
Jun 6, 2011, 11:35:28 AM6/6/11
to publice...@googlegroups.com
Mil Gracias estimados  Señores.
 
Les agradezco a cada uno las ideas y recomendaciones, en seguida las pongo en práctica.
 
 
Saludos y Bendiciones.

Antonio Meza

unread,
Jun 6, 2011, 12:05:54 PM6/6/11
to Comunidad de Visual Foxpro en Español
Hola a todos!!

Para evitar que un textbox u otros controles se ejecute el codigo del
valid, para mi es mas facil crear una propiedad en el formulario por
ejemplo

thisform.ValorTextboxCambio = .f.

Luego en cada TextBox en el evento InteractiveChange pongo asi
thisform.ValorTextboxCambio = .t.

Y por ultimo en el evento Valida del TexBox lo sigueinte

IF thisform.ValorTextboxCambio
thisform.ValorTextboxCambio = .f.
* Aqui lo que quiero validar
ENDIF

Lo que hace es que si el usuario cambia el valor del textbox, el
interactiveChange se ejecuta y pone en .T. la propiedad, de esta forma
al ejecutar el Valid comprueba si hubo cambios en el textbox y si no,
ya no realiza ninguna accion, por otro lado no se debe usar el gofocus
o lostfocus para realizar validaciones, para ello es el VALID.

Otro detalle si quieres que el focus regrese al textbox al ejecutar el
valid, por ejemplo que no encontro el cliente, le pones un Return 0,
tu codigo seria algo asi dentro del valid del textbox:

IF thisform.ValorTextboxCambio
thisform.ValorTextboxCambio = .f.
SELECT Clientes
SEEK intCliente
IF FOUND()
strCliente_Desc=Nom_Cliente
ELSE
MESSAGEBOX('El Código de Cliente:[' +
ALLTRIM(STR(intCliente)) + '] NO Existe',16,'Busqueda de Clientes')
strCliente_Desc= ""
Return 0
ENDIF
ENDIF


saludos
Antonio Meza

stallman stallman

unread,
Jun 6, 2011, 1:51:01 PM6/6/11
to publice...@googlegroups.com
Muy Bien. Muchas Gracias Don Antonio me parece estupenda la idea.
 
Te agradezco mucho.
 
Saludos.

Jairo Miranda

unread,
Jun 6, 2011, 3:16:16 PM6/6/11
to publice...@googlegroups.com
UN TRUCO PARA LO QUE LES GUSTA TRABAJAR CON IMÁGENES
Este es un excelente truco si deseas hacer una especie de ZOOM a un
gráfico . En este caso utilizamos la rueda (Scroll) del mouse para alejar
o acercar. No recuerdo quien fue el que escribió este código.

Public oform1
oform1=Newobject("form1")
oform1.Show
Return

Define Class form1 As Form
Top = 12
Left = 77
DoCreate = .T.
Caption = "Form1"
Name = "Form1"

Add Object image1 As Image With ;
Picture = Home(4)+"BitmapsGaugeDOME.BMP", ;
Stretch = 2, ;
Height = 48, ;
Left = 54, ;
Top = 47, ;
Width = 64, ;
Name = "Image1"

Procedure image1.Init
This.Left=(This.Parent.Width-This.Width)/2
This.Top =(This.Parent.Height-This.Height)/2
Endproc

Procedure image1.MouseWheel
Lparameters nDirection, nShift, nXCoord, nYCoord

With This
If Sign(nDirection) = 1
.Width = .Width* 1.1
.Height = .Height* 1.1
Else
.Width= .Width/ 1.1
.Height = .Height/ 1.1
Endif
.Left=(.Parent.Width-.Width)/2
.Top =(.Parent.Height-.Height)/2
Endwith
EndProc
Enddefine

JM
-----Mensaje original-----
De: publice...@googlegroups.com
[mailto:publice...@googlegroups.com] En nombre de Antonio Meza
Enviado el: Lunes, 06 de Junio de 2011 11:06


Para: Comunidad de Visual Foxpro en Español

Asunto: [vfp] Re: Validación en TextBox con Excepción

Walter R. Ojeda Valiente

unread,
Jun 6, 2011, 4:37:13 PM6/6/11
to publice...@googlegroups.com
Interesante, pero tendrías que haber abierto un nuevo hilo para mostrarlo ya que los que has escrito no tiene algo que ver con "Validación en TextBox con Excepción".

Saludos.

Walter.

Luis Maria Guayan

unread,
Jun 6, 2011, 4:39:29 PM6/6/11
to publice...@googlegroups.com
El 06/06/2011 17:37, Walter R. Ojeda Valiente escribió:
Interesante, pero tendrías que haber abierto un nuevo hilo para mostrarlo ya que los que has escrito no tiene algo que ver con "Validación en TextBox con Excepción".

Saludos.

Walter.

No te gastes Walter !!! Ya se le explico muchas veces a Jairo y no entiende o no quiere entender :-)

Jairo Miranda

unread,
Jun 6, 2011, 4:52:40 PM6/6/11
to publice...@googlegroups.com

Disculpen los dos , pero he visto que en algunos hilos se escribe cosas que a mi parecer nada tienen que ver lo del problema, creo entender que se abre un nuevo hilo cuando se requiere la ayuda en algún problema que se presente en programación.. pero si no es así tendré muy en cuenta de ahora en adelante estas observaciones.

 

Botón en el Screen y ejemplo de BindEvents

 

En este truco veremos como podemos agregar un botón en el Screen de VFP y darle funcionalidad utilizando el BindEvents

 

Public oHnd

 

oHnd = Newobject("MiClick")

 

With _Screen

    .AddObject("CmdBoton", "CommandButton")

    Bindevent(_Screen.CmdBoton,"Click",oHnd,"ReClick")

 

    With .CmdBoton

        .Caption = "Botón"

        .Top = 10

        .Left = 10

        .Height = 27

        .Visible = .T.

    Endwith

    Return

Endwith

 

 

Define Class MiClick As Session

    Procedure ReClick

        Messagebox("Hola a todos")

    Return

EndDefine

 

JM

Walter R. Ojeda Valiente

unread,
Jun 6, 2011, 5:21:55 PM6/6/11
to publice...@googlegroups.com
No, abrir un nuevo hilo no se hace solamente cuando se necesita AYUDA.

Un nuevo hilo se abre cuando es un tema DISTINTO.

Por ejemplo, hacer zoom a un gráfico es independiente a validar un texto. Nada que ver una cosa con la otra. Por lo tanto, requiere que se abra un hilo distinto.

¿Por qué?

Porque si en el mismo hilo estás tratando varios temas confundes a los lectores.

Debes ser organizado, cada cosa en su lugar.

Meter todo en la misma bolsa es muy desorganizado, muy de principiante. Y tú ya no eres tan principiante, hace rato que participas y ya muchas veces Luis María te repitió la misma cosa y no la entiendes: UN NUEVO TEMA SE DEBE TRATAR EN UN NUEVO HILO.

Quizás seas caprichoso y te gusta llevarle la contraria a Luis María, todo puede ser. Porque yo no puedo creer que no entiendas algo tan sencillo y que se te repitió tantas veces. ¿Tan difícil es para tí entender que un nuevo tema requiere de un nuevo hilo?

Si alguien escribe en un hilo algo que no tiene que ver con el título del hilo entonces está actuando mal, seas tú o sea quien sea. Están haciendo algo incorrecto.

Tu truco "Botón en el Screen y ejemplo de BindEvents" debería estar en un nuevo hilo, lo estás mezclando con el de "Validación en TextBox con Excepción" y es un tema completamente distinto, por lo tanto estás actuando mal.


Saludos.

Walter.



From: ja...@vidapanama.com
To: publice...@googlegroups.com
Subject: RE: [vfp] Re: Validación en TextBox con Excepción

Jose Oscar Vogel

unread,
Jun 6, 2011, 5:24:08 PM6/6/11
to publice...@googlegroups.com
No deberíamos abrir otro hilo para decir como abrir otro hilo?? je xq ya estamos mezclando todo nuevamente

Saludos
--
Prof. Jose Oscar Vogel
Garuhapé - Misiones
CP 3334
Cel: 03743-15667526
MSN: oscar...@gmail.com
Twitter: @ovogel23
Facebook: oscarvogel

Jairo Miranda

unread,
Jun 6, 2011, 5:40:30 PM6/6/11
to publice...@googlegroups.com

Listo!!! ,parce…

JM

Antonio Meza

unread,
Jun 6, 2011, 11:06:54 PM6/6/11
to Comunidad de Visual Foxpro en Español
hola Jairo Miranda!!!

Lo que intentan decirte es que tus aportaciones las abras igual como
haces para pedir ayuda, solo que en vez de preguntar como hacer un
ZOOM por ejemplo, pues nos ayudas a todos diciendo TRUCO PARA HACER
ZOOM o ENVIO EJEMPLO DE TRUCO PARA HACER ZOOM!!!

En lo personal esta muy bueno y es algo que andaba buscando, pero
seria fabuloso para todos no tener que entrar a ver las respuestas a
las preguntas de otros compañeros y darnos cuenta que ahi nos
regalaste un buen ejemplo!!!

Saludos
Antonio Meza!!

Jairo Miranda

unread,
Jun 7, 2011, 10:08:31 AM6/7/11
to publice...@googlegroups.com
Gracias por la observación... lo tendré en cuenta, lo mismo que las
sugerencias de Luis y Walter..

Algunos trucos son de ellos pero no se acuerdan...

Atte

JM

-----Mensaje original-----
De: publice...@googlegroups.com
[mailto:publice...@googlegroups.com] En nombre de Antonio Meza
Enviado el: Lunes, 06 de Junio de 2011 22:07


Para: Comunidad de Visual Foxpro en Español

Asunto: [vfp] Re: Validación en TextBox con Excepción

Luis Maria Guayan

unread,
Jun 7, 2011, 2:46:23 PM6/7/11
to publice...@googlegroups.com
El 07/06/2011 11:08, Jairo Miranda escribió:
Algunos trucos son de ellos pero no se acuerdan...

Atte

JM

También es muy buena práctica informar el autor y la fuente de donde tomaste esos trucos.

ibania blanco

unread,
Jun 16, 2011, 6:02:34 PM6/16/11
to Comunidad de Visual Foxpro en Español
quiere decir que si se tiran 100 a un precipicio
tu te tirarias

On 7 jun, 12:46, Luis Maria Guayan <luismar...@gmail.com> wrote:
> El 07/06/2011 11:08, Jairo Miranda escribió:Algunos trucos son de ellos pero no se acuerdan... Atte JMTambién es muy buena práctica informar el autor y la fuente de donde tomaste esos trucos.
>
> Luis María Guayán
> Tucumán, Argentina
> _________________________http://www.PortalFox.com
Reply all
Reply to author
Forward
0 new messages