Problemas con el foco de text box

hola amigo tengo este código en el evento keypress del text1
IF nKeyCode=13
SELECT * from nacidos WHERE ALLTRIM(numerovaca)=ALLTRIM(this.Value)and (estado)="t" INTO CURSOR cur_destetes
IF RECCOUNT("cur_destetes")>0
thisform.text2.Value=cur_destetes.nombre
thisform.text3.Value=cur_destetes.numerocria
ELSE
MESSAGEBOX("registro no encontrado",48," error")
thisform.text1.Value=""
this.SetFocus
ENDIF
endif
el problema es que si no encuentra el registro no me regresa el el foco al text1 sino lo coloca en el otro text box
te agradezco me ayudes con esto

1 Respuesta

Respuesta
1

Pon el código en el evento valid del textbox de la siguiente manera

SELECT * from nacidos WHERE ALLTRIM(numerovaca)=ALLTRIM(this.Value)and (estado)="t" INTO CURSOR cur_destetes
IF RECCOUNT("cur_destetes")>0
thisform.text2.Value=cur_destetes.nombre
thisform.text3.Value=cur_destetes.numerocria
ELSE
MESSAGEBOX("registro no encontrado",48," error")
thisform.text1.Value=""
return 0
ENDIF

Me comentas como te fue, suerte

si allí funciona pero en ese evento pero se vuelve muy engorroso. no me salir del formulario

hasta se encuentre el valor en la tabla como lo hago por ejemplo en el losfocus

En el lostfocus no lo puedes hacer porque es un evento que se ejecuta cuando el control ha perdido el enfoque, ahora podrías hacerlo en el evento valid agregando una condición

if len(alltrim(this.value)) > 0

SELECT * from nacidos WHERE ALLTRIM(numerovaca)=ALLTRIM(this.Value)and (estado)="t" INTO CURSOR cur_destetes
IF RECCOUNT("cur_destetes")>0
thisform.text2.Value=cur_destetes.nombre
thisform.text3.Value=cur_destetes.numerocria
ELSE
MESSAGEBOX("registro no encontrado",48," error")
thisform.text1.Value=""
return 0
ENDIF

Endif

La condicion que esta al inicio te indica que solo haga el proceso si el control tiene algun dato pero si esta en blanco podras salir sin problemas, pruebalo asi y me comentas

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas