FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Validar registo con TxBrowse
Posts: 47
Joined: Thu Jul 10, 2008 07:33 AM
Validar registo con TxBrowse
Posted: Tue Jan 13, 2009 10:39 AM

Estoy usando la clase TxBrowse y necesito validar el registro, no me vale con validar solo los campos, antes de darlo por bueno: no puedo abandonar el registro harta que sea bueno o se salgan del browse, en cuyo caso lo borraria.

Necesito consejo sobre como hacerlo. Por lo que veo no hay ningun bloque de codigo para hacerlo ni hay nada que se ejecute antes de abandonar el registro o de insertarlo. ¿Como lo haceis?

Jorge Ignacio Corral
Enjoy it :)
Posts: 389
Joined: Mon Oct 13, 2008 11:26 AM
Re: Validar registo con TxBrowse
Posted: Tue Jan 13, 2009 12:19 PM

oBrw:aCols[1]:bEditValid {|| if(CAMPO != 0, .T., .F. }

Espero ter ajudado :wink:

Email: SamirSSabreu@gmail.com
xHarbour 1.2.3 + Fwhh 20.2
Posts: 47
Joined: Thu Jul 10, 2008 07:33 AM
Re: Validar registo con TxBrowse
Posted: Tue Jan 13, 2009 03:45 PM

Esto solo me valida los campos. Mientras se esta dando de alta un registro en el browse hay campos que estan en blanco. Una vez que se salga del registro, para darlo por bueno, es necesario que todos los campos tengan valor. Lo mismo pasa si 2 campos dependen de otros 2 de otra tabla. Es el mismo problema.

O se usa algo parecido al lEditCol del TWBrowse controlando campo por campo y obligando a meterlos en un orden determinado (¿?) o hay que utilizar un bloque de codigo que se evalue antes de abandonar el registro. No sirve bValid porque es para el browse completo y bEditValid no sirve porque el campo es correcto.

Con la clase TDATABASE que uso, modificada por mi heredando de la original, tengo un bloque de codigo que valida el registro. El problema es donde ejecutarlo. La clase TxBrowse no permite trabajar con el buffer y hacerlo en bSkip, bGoTo, bBookMark, bSearch, etc, ademas de en los clcks del raton, me parece una chapuza, aunque me parece la unica solucion. Lo que hare sera refinar la TxBrowse porque tampoco le veo sentido que me permita insertar registros no validos en la tabla.

Jorge Ignacio Corral
Enjoy it :)
Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
Re: Validar registo con TxBrowse
Posted: Tue Jan 13, 2009 04:00 PM
jicorral wrote:Esto solo me valida los campos. Mientras se esta dando de alta un registro en el browse hay campos que estan en blanco. Una vez que se salga del registro, para darlo por bueno, es necesario que todos los campos tengan valor. Lo mismo pasa si 2 campos dependen de otros 2 de otra tabla. Es el mismo problema.

O se usa algo parecido al lEditCol del TWBrowse controlando campo por campo y obligando a meterlos en un orden determinado (¿?) o hay que utilizar un bloque de codigo que se evalue antes de abandonar el registro. No sirve bValid porque es para el browse completo y bEditValid no sirve porque el campo es correcto.

Con la clase TDATABASE que uso, modificada por mi heredando de la original, tengo un bloque de codigo que valida el registro. El problema es donde ejecutarlo. La clase TxBrowse no permite trabajar con el buffer y hacerlo en bSkip, bGoTo, bBookMark, bSearch, etc, ademas de en los clcks del raton, me parece una chapuza, aunque me parece la unica solucion. Lo que hare sera refinar la TxBrowse porque tampoco le veo sentido que me permita insertar registros no validos en la tabla.


jicorral, creo que debes hacer una validacion del registro al editar la ultima col del xbrowse, al usar bOnPostEdit, bkeydown, o al hacer bPostEof. Revisa este post, puede ser que te ayude a solucionar.

viewtopic.php?f=6&t=13246&hilit=txbrowse

Saludos
Francisco J. Alegría P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql
Posts: 47
Joined: Thu Jul 10, 2008 07:33 AM
Re: Validar registo con TxBrowse
Posted: Tue Jan 13, 2009 04:38 PM

jicorral, creo que debes hacer una validacion del registro al editar la ultima col del xbrowse, al usar bOnPostEdit, bkeydown, o al hacer bPostEof. Revisa este post, puede ser que te ayude a solucionar.


Esto es lo que me temo. Lo que me mandas me sirve pero es lo que queria evitar. ¿Y si el ultimo campo no es obligatorio? ¿O si hace click en otro registro o en otro campo? ¿Y si te cambian el orden de las columnas?

En toda la aplicacion no escribo codigo para validar ni los campos ni los registros, solo cuando defino el objeto DBF. A partir de aqui ya se entienden ellos solos y si quiero validarlo "a mano" llamo al metodo lValid() de mi clase TDATABASE. Asi evito repetir codigo y que quede todo mas limpio; pero al usar TxBrowse pierdo el control porque no puedo invocar el metodo Save() con un registro incompleto.

Como lo veo es que tengo 3 alternativas:
1. La que tu me dices, comprobando columna x columna donde y como estoy
2. Modificar TDatabase, para que admita registros erroneos temporalmente
3. Modificar TxBrowse, para que no sea un editor de columnas si no de registros.

La 2 ya la estaba contemplando (aunque de forma mas ostentosa, hablando de transacciones). La 2 y la 3 me sirven para siempre. La 1 es la mas rapida ahora mismo.

Muchas gracias en cualquier caso y ya te contare.
Jorge Ignacio Corral
Enjoy it :)

Continue the discussion