Dudas y problemas con :bEditValid

Post Reply
User avatar
Armando
Posts: 3271
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Been thanked: 2 times
Contact:

Dudas y problemas con :bEditValid

Post by Armando »

Amigos:

Tengo dudas con un xBrowse y FastEdit y no se como resolverlas, me explico

Utilizo MySql, El xBrowse contiene solo una columna, el contenido de dicha columna es
un código postal y es llave de mi tabla

Code: Select all | Expand

:bPastEof   := {|| Agregar(oBrw)}            <= Se agrega un registro e blanco y espera lo que teclee el usuario

:bEditValid := { | oGet, oCol | Validar(oBrw,oGet:VarGet()) } 
 
En la funcion Validar(), puede devolver (.T.) o (.F.) dependiendo del resultado de la
validación, si el resultado de la validación es (.T.) no tengo problema, pero cuando
el resultado es (.F.) digamos porque el código postal que el usuario teclea ya exista
en la tabla, el registro recién agregado se queda en blanco y si el usuario avanza mas
allá del final del Browse, se vuelve a agregar un registro en blanco con el consabido
error de llave duplicada, como puedo evitarlo?

Espero haberme explicado para contar con su apoyo

Gracias
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
cmsoft
Posts: 1297
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina
Been thanked: 2 times

Re: Dudas y problemas con :bEditValid

Post by cmsoft »

Puedes controlarlo en la funcion Agregar haciendo el control de que no haya ya agregado un registro en blanco

Code: Select all | Expand

************************************************************
** Agregar un familiar a la lista
STATIC FUNCTION Agregar(oBrw)
LOCAL lRta, oError, base
IF oApp:oServer:Query("SELECT codigopostal FROM mitabla WHERE codigopostal = ' ' "):RecCount() > 0
   RETURN nil 
ENDIF
lRta := MsgNoYes("Desea agregar ...?","Atencion")
IF lRta
....
 
Otra alternativa es haces un INSERT IGNORE en tu tabla, cosa de que ignore el insert si el codigo existe
Mira si te sirve...
User avatar
Armando
Posts: 3271
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Been thanked: 2 times
Contact:

Re: Dudas y problemas con :bEditValid

Post by Armando »

Hola César:

Muchas gracias voy a tirar por el INSERT IGNORE.

Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
FranciscoA
Posts: 2163
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Dudas y problemas con :bEditValid

Post by FranciscoA »

Hola Armando.
Esto es para DBF, pero creo que la misma logica te servirá traduciendola a MySql:
//Agregar 1 registro si el campo fecha de linea anterior no está vacío

Code: Select all | Expand

  WITH OBJECT oBrw
   :bPastEof  := { || if( !Empty(oBrw:Fecha:Value)  ,;
                        ( (oBrw:cAlias)->(DbAppend()) ,;
                          oBrw:GoLeftMost() ,;
                          oBrw:Refresh() ), )}  
END
Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
Armando
Posts: 3271
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Been thanked: 2 times
Contact:

Re: Dudas y problemas con :bEditValid

Post by Armando »

Francisco:

Muchas gracias por el aporte, lo voy a intentar.

Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
Post Reply