FoxPro/Visual FoxPro - validar txtfield

 
Vista:

validar txtfield

Publicado por gaby (6 intervenciones) el 28/09/2010 20:05:57
Hola a todos en el foro......
Tengo un problema espero alguien me pueda ayudar. resulta que he creado una tabla en la que especifico que valores quiero que sean null y cuales no.
Tengo un boton de nuevo que habre un append black.
Tengo un boton Guardar en el que actualizo el espacio en blanco por lo que este en los campos.
descubri que no necesito dar guardar para que me guarde los cambios o me actualice lo hace directamente al modificar en pantalla y si algun campo de los que no deben ser nullos lo envio vacio si lo guarda.

como puedo validra que no esten vacios si no hay necesidad de guardar con el boton o darle un valor por default para que si no se mete nada se valla con un valor por default.


Agradezco la ayuda que me puedan proporcionar.....
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:validar txtfield

Publicado por xx (378 intervenciones) el 28/09/2010 20:53:37
Cuando editas el registro no debe estar enlazado el control al campo es decir

THISFORM.text1.CONTROLSOURCE=""
y asi una vez que decidas presionar el boton guardar lo que haces es

********************************
*THISFORM.guardar.CLICK()
********************************
*validas el campo
IF EMPTY( THISFORM.text1.VALUE )
THISFORM.text1.SETFOCUS()
RETURN
ENDIF
REPLACE CAMPO WITH THISFORM.text1.VALUE
RETURN
esto es una buena forma de controlar las actualizaciones

una vez guardo puedes volver a enlazar el control al campo
THISFORM.text1.CONTROLSOURCE="TABLA.CAMPO"

es algo engorroso pero no muy complicado
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
sin imagen de perfil

RE:validar txtfield

Publicado por Juanma Cruz (512 intervenciones) el 29/09/2010 11:03:52
... o puedes dejar los campos enlazados a los controles del formulario.

Asegurate antes de empezar la edición, de tener activo el modo de almacenamiento de registro en buffer.

Entonces, para guardar los campos debes hacer un TableUpdate() o deshacer los cambios con TableRevert().

En caso que quieras hacer el TableUpdate() (grabar los cambios hechos al registro) verificas primero que se cumplan las condiciones que mencionas. Eso ya por programación en el mismo formulario, o por desencadenantes de la BD si la tienes bien estructurada.

Dejar controles sin enlazar y hacer actualizaciones manualmente es una forma de programar obsoleta y que no saca ventaja de las capacidades de un lenguaje como VFP.
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:validar txtfield

Publicado por xx (378 intervenciones) el 29/09/2010 20:31:04
*********************************************************************************************
Dejar controles sin enlazar y hacer actualizaciones manualmente es una forma de programar obsoleta y que no saca ventaja de las capacidades de un lenguaje como VFP.
*********************************************************************************************

ehhhhh!!!! y porque?, la pregunta del millon

Hasta donde se todas las documentaciones sobre programacion nos enseñan que no siempre lo mas simple o mas facil es lo mas eficiente!!!, y los buffers ofrecen una engañosa facilidad que consumen mas recursos, memoria y mucho mas lenta que grabarlo directamente (tratandose de DBF's) y francamente no le veo de malo el hacer uso de las propiedades de algun objeto.

Me parece a una opinion sin fundamento!!!
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
sin imagen de perfil

RE:validar txtfield

Publicado por Juanma Cruz (512 intervenciones) el 30/09/2010 10:18:43
Tienes todo el derecho a discrepar.

Pero, si me permites un ejemplo, el día que quieras poner dos campos nuevos (como si digo 20) en un formulario de mantenimiento, tendrás que buscar el código correspondiente y agregar las líneas que recojan el valor de los controles y luego los graben en disco.

De la otra manera, es sólo poner los controles enlazados. El TableUpdate y los desencadenantes se encargan del resto.

Más recursos... más memoria... depende, si se trata de una red de ordenadores 386 en... Uganda, por decir algo.

Además, un programador responsable siempre intentará liberar recursos en cuanto dejen de necesitarse.
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:validar txtfield

Publicado por xx (378 intervenciones) el 30/09/2010 16:17:44
Es asi mismo como lo dije!!!, no siempre lo mas facil es lo mas eficiente,
te cuento la cantidad de lineas no tiene relacion con la eficiencia esto
significa que no siempre un programa de 100 lineas es mas eficiente que
otro de 500 suponiendo que hacen las mismas cosas.

Sinceramente mi discrepancia contigo no deseo se convierta en rencilla!! y
si me gustaria mucho saber como liberarias los recursos cuando utilizas
buffers?, puesto que los buffers se manejan abstractamente es decir lo hace
el VFP y nosotros solo podemos cancelarla o confirmarla.

+memoria +recursos solo importa si es una 386, si hay personas que le toman
costrumbre y no le dan importancia a esto, y es el cuento que en la mayoria
de las casas de estudio nos relatan, me ha tocado reemplazar algunos sistemas
que sus creadores utilizaban esta filosofia por el simple motivo de que hicieron
un cumulo grande de esta filosofia que retrazaba los tiempos de procesos del
usuario.

Espero esta discusión sea constructiva y no destructiva, o sea sin nigun animo
de ofender y/o herir sentimientos.

Saludos
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
sin imagen de perfil

RE:validar txtfield

Publicado por Juanma Cruz (512 intervenciones) el 30/09/2010 16:44:19
En absoluto, siempre encuentro gratificante ver y conocer otros métodos de programación. :)

Liberación de recursos: minimizar el uso de variables públicas, cerrar cursores en cuanto dejen de ser útiles, no usar excesivas conexiones al motor SQL y cerrarlas apenas se pueda, no hacer consultas innecesarias ni intentar 'mostrar todo en una sola pantall', etc. Ah, y los buffers y bloqueos hacerlos siempre por registro, y nunca por tabla, ya si usas el modo optimista o pesimista depende de la seguridad que quieras darle.

Tengo trabajando con lenguajes xBase desde 1992 y NUNCA he visto que una aplicación mía sea vea limitada de recursos, llámese memoria, disco, controladores de memoria, etc. En base a esta experiencia es que aconsejo sacar el máximo posible a las particularidades de cada lenguaje, en este caso el VFP.

Más cantidad de líneas tampoco hacen un mejor programador, y en todo caso, separar en capas, módulos, y optimizar la cantidad de código es lo más viable cuando se piensa en un mantenimiento a futuro, o actualización, o cambios progresivos.
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