In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Ayuda ok comprobar base datos

Foro público de Xailer en español
Responder
PILO
Mensajes: 583
Registrado: Vie Jul 06, 2007 5:18 pm

Ayuda ok comprobar base datos

Mensaje por PILO »

Necesito ayuda para lo siguiente
en el ejemplo de xailer
C:xailerSamplesDataControlsDBFData2
cuando doy un alta nuevo
y ya he puesto los datos en el Form2
Cuando pulse el boton OK quiero comprobar
por el indice FIRST si el nombre puesto
en el TDBEdit oFirst ixiste en la base de datos
Si exite tiene que volver a el TDBEdit oFirst
para poner otro
Alquien me puede poner un pequeño ejemplo
Gracias a todos
--
jrcpoli-quitar
Mensajes: 558
Registrado: Mar Feb 09, 2010 2:26 pm

Ayuda ok comprobar base datos

Mensaje por jrcpoli-quitar »

PILO escribió:
> *Necesito ayuda para lo siguiente*
> en el ejemplo de xailer
> C:xailerSamplesDataControlsDBFData2
> cuando doy un alta nuevo
> y ya he puesto los datos en el Form2
> Cuando pulse el boton OK quiero comprobar
> por el indice FIRST si el nombre puesto
> en el TDBEdit oFirst ixiste en la base de datos
> Si exite tiene que volver a el TDBEdit oFirst
> para poner otro
>
> Alquien me puede poner un pequeño ejemplo
> Gracias a todos
Puedes hacerlo de dos formas una es capturando el evento OnExit cuando
salgas del campo, comprobando que el valor introducido en el mismo ya
existe en la base de datos.
METHOD FirstExit( oSender, oNextCtl ) CLASS TForm2
LOCAL lCorrecto := Nil
** Estamos en proceso de alta
IF ::oParent:oDataSet:lOnAppend
*
** Comprobamos que el campo no este vacio
IF !Empty(oSender:Value)
** Guardamos el estado de la base de datos
::oParent:oDataSet:SaveState( .T. )
** Seleccionamos el orden
::oParent:oDataSet:OrdSetFocus("FIRST")
IF ::oParent:oDataSet:Seek(Alltrim(oSender:Value))
MsgAlert("¡ El registro Existe ! " )
lCorrecto := .F.
ELSE
lCorrecto := .T.
ENDIF
** Restauramos el estado de la base de datos
::oParent:oDataSet:RestoreState( .T. )
ELSE
MsgInfo("¡ Este campo no puede estar vacio !")
lCorrecto := .F.
ENDIF
*
ENDIF
RETURN lCorrecto
y una segunda formula es capturando en evento OnClick del botón OK del
formulario que controla si se cierra o no el formulario, en tu caso si
el valor del campo está repetido mandas que el formulario no se cierre y
activas el foco sobre el campo del error.
METHOD OKClick( oSender ) CLASS TForm2
LOCAL lCorrecto := Nil
** Estamos en proceso de alta
IF ::oParent:oDataSet:lOnAppend
*
IF !Empty(::oFirst:Value)
** Guardamos el estado de la base de datos
::oParent:oDataSet:SaveState( .T. )
** Seleccionamos el orden
::oParent:oDataSet:OrdSetFocus("FIRST")
IF ::oParent:oDataSet:Seek(Alltrim(::oFirst:Value))
MsgAlert("¡ El registro Existe ! " )
::oFirst:SetFocus()
lCorrecto := .F.
ELSE
lCorrecto := .T.
ENDIF
** Restauramos el estado de la base de datos
::oParent:oDataSet:RestoreState( .T. )
ELSE
MsgInfo("¡ Este campo no puede estar vacio !")
::oFirst:SetFocus()
lCorrecto := .F.
ENDIF
*
ENDIF
RETURN lCorrecto
Me queda un pequeño detalle pero importante en el botón Cancelar del
formulario dos la propiedad lCancel pon la a .T. para que no te evalue
el evento OnExit al salir si empleas el método primero.
Espero no haberme equivocado, y como siempre digo dos no harán lo mismo
de la misma forma.
Mira todos los eventos y comandos en la Ayuda para que se te quedes con
ellos es importante que lo hagas.
José Ramón Castro
Responder