transacciones

05/05/2005 - 16:51 por eliana | Informe spam
Hola
Estoy trabajando con VFP 6.0, con la tecnología Paso a través de SQL.
Tengo problema con las transacciones
Este es el codigo que tengo
hConn = SQLConnect("ConServidorE3Aux","","") abro la conexión con el
servidro
sqlsetprop(hConn,'Transactions',2) abro el manejo de transacciones
manuales
la=.t. esta variable me va a indicar si las operaciones se realzaron
correctamente o no
SQLExec(hConn,lcquery) ejecuto la operación A, puede ser update, un
delete
SQLExec(hConn,lcquery) ejecuto la operación B, puede ser update, un
delete
SQLExec(hConn,lcquery) ejecuto la operación C, puede ser update, un delete
La variable “la“ si algo salio sale mal en alguna operación la pongo en
.f. .
if la=.t. si todo estuvo ok
sqlcommit(hconn)
else si algo salio mal
sqlrollback(hconn)
endif
bien, hasta ahí siempre funciona todo bien.

Si por alguna razon el programa produce algun error y se cuelga(no llega a
la parte del if la=.t) las operaciones que hizo hasta el momento de
colgarse el programa las deje efectiva,
Probe con el sgte codigo y efectivamente es asi, cuando encuentra el
return, se val del codigo y las operaciones A y B las ejecuta y la C no

hConn = SQLConnect("ConServidorE3Aux","","") abro la conexión con el
servidro
sqlsetprop(hConn,'Transactions',2) abro el manejo de transacciones
manuales
la=.t. esta variable me vaa indicar si las operaciones se realzaron
correctamente o no
SQLExec(hConn,lcquery) ejecuto la operación A, puede ser update, un
delete
SQLExec(hConn,lcquery) ejecuto la operación B, puede ser update, un
delete
reutrn
SQLExec(hConn,lcquery) ejecuto la operación C, puede ser update, un delete
La variable “la“ si algo salio mal en alguna operación la pongo en .f. .
if la=.t. si todos estuvo ok
sqlcommit(hconn)
else si algo salio mal
sqlrollback(hconn)
endif
como manejo esos casos?, en que la ejecucion nunca llega ni al commit ni
al rollback, pero por defecto ejecuto el commit.
Gracias




-
PortalFox :: Nada corre como un zorr
http://www.portalfox.co

PortalFox - NNTP Forum Gatewa

Preguntas similare

Leer las respuestas

#1 Esparta Palma
06/05/2005 - 23:35 | Informe spam
Parece que si es un problema en versiones anteriores de VFP, ya que en
VFP9 hay un setting para esto:

SQLSetProp(lnHandle,"DisconnectRollback",llValue)

En lo personal tuve muy pocos problemas con desconexiones a mi servidor
de base de datos. Desconozco si exista alguna manera de darle la vuelta
a esto.


¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º

Espartaco Palma Martínez
SysOp http://www.PortalFox.com
México D.F.
MoBlogs!
http://weblogs.golemproject.com/esparta/ <- Tech
http://www.espartha.com/blog/ <- Personal
VFP Bookmarks http://del.icio.us/esparta/vfp

eliana wrote:
Hola
Estoy trabajando con VFP 6.0, con la tecnología Paso a través de SQL.
Tengo problema con las transacciones
Este es el codigo que tengo
hConn = SQLConnect("ConServidorE3Aux","","") abro la conexión con el
servidro
sqlsetprop(hConn,'Transactions',2) abro el manejo de transacciones
manuales
la=.t. esta variable me va a indicar si las operaciones se realzaron
correctamente o no
SQLExec(hConn,lcquery) ejecuto la operación A, puede ser update, un
delete
SQLExec(hConn,lcquery) ejecuto la operación B, puede ser update, un
delete
SQLExec(hConn,lcquery) ejecuto la operación C, puede ser update, un delete
La variable �la� si algo salio sale mal en alguna operación la pongo en
.f. .
if la=.t. si todo estuvo ok
sqlcommit(hconn)
else si algo salio mal
sqlrollback(hconn)
endif
bien, hasta ahí siempre funciona todo bien.

Si por alguna razon el programa produce algun error y se cuelga(no llega a
la parte del if la=.t) las operaciones que hizo hasta el momento de
colgarse el programa las deje efectiva,
Probe con el sgte codigo y efectivamente es asi, cuando encuentra el
return, se val del codigo y las operaciones A y B las ejecuta y la C no

hConn = SQLConnect("ConServidorE3Aux","","") abro la conexión con el
servidro
sqlsetprop(hConn,'Transactions',2) abro el manejo de transacciones
manuales
la=.t. esta variable me vaa indicar si las operaciones se realzaron
correctamente o no
SQLExec(hConn,lcquery) ejecuto la operación A, puede ser update, un
delete
SQLExec(hConn,lcquery) ejecuto la operación B, puede ser update, un
delete
reutrn
SQLExec(hConn,lcquery) ejecuto la operación C, puede ser update, un delete
La variable �la� si algo salio mal en alguna operación la pongo en .f. .
if la=.t. si todos estuvo ok
sqlcommit(hconn)
else si algo salio mal
sqlrollback(hconn)
endif
como manejo esos casos?, en que la ejecucion nunca llega ni al commit ni
al rollback, pero por defecto ejecuto el commit.
Gracias





PortalFox :: Nada corre como un zorro
http://www.portalfox.com

PortalFox - NNTP Forum Gateway
Respuesta Responder a este mensaje
#2 david alarcon
08/05/2005 - 20:10 | Informe spam
Hola

Por que no intentas enviar una instruccion BEGIN TRANSACTION antes de la
operacion A, creo que podria funcionar como deseas. Checa la ayuda de fox
para ese comando.

Ojala te sirva

Saludos

David



Con Fox, todo se puede !!

-
PortalFox :: Nada corre como un zorr
http://www.portalfox.co

PortalFox - NNTP Forum Gatewa
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida