HTransactionStart - Windev

129 views
Skip to first unread message

KIM MARTINEZ

unread,
Mar 11, 2013, 6:53:08 PM3/11/13
to de-fox-...@googlegroups.com

HTransactionStart("", "REACTIVO,REACTIVO_PROVEEDOR,REACTIVO_STOCK")

HReset(REACTIVO_PROVEEDOR) 
REACTIVO_PROVEEDOR.IdReactivo = nId
REACTIVO_PROVEEDOR.IdProveedor = 99 //  es el id q no existe en pla tabla proveedores 
REACTIVO_PROVEEDOR.IdMoneda = gnPublic_IdMonPais
REACTIVO_PROVEEDOR.FechaMod = DateSys() 

WHEN EXCEPTION IN 
               HAdd(REACTIVO_PROVEEDOR) 
        HTransactionEnd() // validatA LA transaccion  
Info("Los datos se grabaron correctamente")
DO 
HTransactionCancel() // CANCELA LA TRANsaccion
Error("No se grabaron los datos"+HErrorInfo())
END

La excepción no se realiza es decir no cancela la transacción se queda en add(REACTIVO_PROVEEDOR). Me da el Error ya que es correcto pero no se ejecuta la excepción Para cancelar la transacción..

Alguien me podría ayudar…


Alexander Barreto

unread,
Mar 11, 2013, 10:22:42 PM3/11/13
to de-fox-...@googlegroups.com

El lunes, 11 de marzo de 2013 18:23:08 UTC-4:30, KIM MARTINEZ escribió:
Hola amigo , no soy un experto porque apenas tengo 4 meses trabando con windev y no al 100 porque aun tengo proyectos en fox pero si el error te lo da al cargar  el valor al buffer puebalo de esta forma .
HReset(REACTIVO_PROVEEDOR)
 
WHEN EXCEPTION IN
              
REACTIVO_PROVEEDOR.IdReactivo = nId
REACTIVO_PROVEEDOR.IdProveedor = 99 // es el id q no existe en pla tabla proveedores
REACTIVO_PROVEEDOR.IdMoneda = gnPublic_IdMonPais
REACTIVO_PROVEEDOR.FechaMod = DateSys()

HAdd(REACTIVO_PROVEEDOR)
HTransactionEnd() // validatA LA transaccion
Info("Los datos se grabaron correctamente")
DO
HTransactionCancel() // CANCELA LA TRANsaccion
Error("No se grabaron los datos"+HErrorInfo())
END 
 
y asi al tener el error dentro de la EXCEPTION se debe disparar .
prueba y  comentas
Saludos
Alexander Barreto
Venezuela  

Daniel Santiago Rodríguez Begambre

unread,
Mar 12, 2013, 12:40:15 PM3/12/13
to de-fox-...@googlegroups.com
Hola
 
El comando hAdd no devuelve un error en caso de no poder guardar, solo devuelve verdadero o falso y en hError devuelve el error, por lo tanto debes preguntar si se pudo guardar o no, por ejemplo:
 
HTransactionStart("", "REACTIVO,REACTIVO_PROVEEDOR,REACTIVO_STOCK")
HReset(REACTIVO_PROVEEDOR)
REACTIVO_PROVEEDOR.IdReactivo = nId
REACTIVO_PROVEEDOR.IdProveedor = 99 // es el id q no existe en pla tabla proveedores
REACTIVO_PROVEEDOR.IdMoneda = gnPublic_IdMonPais
REACTIVO_PROVEEDOR.FechaMod = DateSys()

WHEN EXCEPTION IN
         IF HAdd(REACTIVO_PROVEEDOR)  THEN
       HTransactionEnd() // validatA LA transaccion
Info("Los datos se grabaron correctamente")
         ELSE
HTransactionCancel() // CANCELA LA TRANsaccion
Error("No se grabaron los datos"+HErrorInfo())
         END
DO
HTransactionCancel() // CANCELA LA TRANsaccion
Error("No se grabaron los datos"+HErrorInfo())
END
 
Si lo deseas optimizar puedes cambiar el código algo como:
 
bGuardar is Boolean = True
 
HTransactionStart("", "REACTIVO,REACTIVO_PROVEEDOR,REACTIVO_STOCK")  // Solo debes colocar HTransactionStart()
 
HReset(REACTIVO_PROVEEDOR)
REACTIVO_PROVEEDOR.IdReactivo = nId
REACTIVO_PROVEEDOR.IdProveedor = 99 //  es el id q no existe en la tabla proveedores
REACTIVO_PROVEEDOR.IdMoneda = gnPublic_IdMonPais
REACTIVO_PROVEEDOR.FechaMod = DateSys()
 
WHEN EXCEPTION IN
    IF HAdd(REACTIVO_PROVEEDOR) = False THEN
        bGuardar = False
    END
DO
    bGuardar = False
END
 
IF bGuardar THEN
    HTransactionEnd() // VALIDA la Transaccion 
    Info("Los datos se grabaron correctamente")
ELSE
    HTransactionCancel() // CANCELA la Transaccion

    Error("No se grabaron los datos"+HErrorInfo())
END
 
Saludos,
 
 
Daniel

KIM MARTINEZ

unread,
Mar 12, 2013, 3:20:30 PM3/12/13
to de-fox-...@googlegroups.com

KIM MARTINEZ

unread,
Mar 12, 2013, 3:22:35 PM3/12/13
to de-fox-...@googlegroups.com
Gracias. Alexander. por la Ayuda...

KIM MARTINEZ

unread,
Mar 12, 2013, 6:23:21 PM3/12/13
to de-fox-...@googlegroups.com
Gracias Daniel por las Ayudas..
Reply all
Reply to author
Forward
0 new messages