Validar registo con TxBrowse

Validar registo con TxBrowse

Postby jicorral » 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?
User avatar
jicorral
 
Posts: 47
Joined: Thu Jul 10, 2008 7:33 am

Re: Validar registo con TxBrowse

Postby sambomb » Tue Jan 13, 2009 12:19 pm

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

Espero ter ajudado :wink:
Email: SamirSSabreu@gmail.com
MSN: SamirAbreu@hotmail.com
Skype: SamirAbreu
xHarbour 1.1.0 + FwXh 8.02
xHarbour 1.2.1 + Fwhh 10.6
User avatar
sambomb
 
Posts: 385
Joined: Mon Oct 13, 2008 11:26 am
Location: Itaocara - RJ - Brasil

Re: Validar registo con TxBrowse

Postby jicorral » Tue Jan 13, 2009 3: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 :)
User avatar
jicorral
 
Posts: 47
Joined: Thu Jul 10, 2008 7:33 am

Re: Validar registo con TxBrowse

Postby FranciscoA » Tue Jan 13, 2009 4: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
User avatar
FranciscoA
 
Posts: 2111
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Validar registo con TxBrowse

Postby jicorral » Tue Jan 13, 2009 4: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 :)
User avatar
jicorral
 
Posts: 47
Joined: Thu Jul 10, 2008 7:33 am


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 12 guests