Como ejecutar una transcion Cursor Adapter con ado y SPT

31/07/2004 - 02:25 por Mauricio Pulla B. | Informe spam
Hola

No tengo experiencia en CursorAdapter con Ado apuntando a Sql server
Revise el ejemplo de José G. Samper, sobre como trabajar en forma
desconectada con cursor adapter, ado y Ms SqlServe. excelente pero tengo
algunas dudas.

1) Se pueden compartir varios CA un mismo obejto Connection
Ej. Thisform.CA1.ActiveConnection = Thisform.oADOConnection
Thisform.CA2.ActiveConnection = Thisform.oADOConnection

2) Se puede compartir el objeto connection de varios CAs con SPT para
ejecutar una transaccion
Ej: nConnectionHandle = Thisform.oADOConnection &&Asumo que esto
me daria el manejador
SQLSETPROP(nConnectionHandle, "Transactions", 2)
llSuccess = TABLEUPDATE(.T., .F., CA1)
if llSuccess
llSuccess = TABLEUPDATE(.T., .F., CA2)
if llSuccess
llSuccess=SqlExec(nConnectionHandle, cSQLCommand) > 0
if llSuccess
SQLCOMMIT(nConnectionHandle)
return llSuccess
endif
endif
endif
=SQLROLLBACK(nConnectionHandle)
&&Detecto error
*-Si esta no es la forma de hacer una transccion de CAs con SPT con una
misma conneccion como hacerlo.

3) En caso de estar correcta la pregunta 2 seria correcto ejecutar el codigo
en un try cath

4) En el SP1 de VFP8.0 se corrgio el error que al hacer un Tableupdate()
siempre devolvia .T. pese a existir errores.

5) Cual seria la mejor estrategia para que la aplicacion corriera en una LAN
como en Una WAN tomando en cuenta que se trabajaria con W2000 Server, SQL
Server, CAs + Ado.

6) Cuando se tratara de una red WAN como cual seria la mejor forma de
conectar una sucursal distante con el servidor, y cual seria los equipos
requeridos.

Siempre e desarrollado aplicaciones para redes LAN y no tengo la menor idea
para que trabajen en una WAN..!

Saludos,
Mauricio Pulla.
Cuenca-Ecuador.
 

Leer las respuestas

#1 José G. Samper
31/07/2004 - 15:12 | Informe spam
Hola como estas,

1) Se pueden compartir varios CA un mismo obejto Connection
Ej. Thisform.CA1.ActiveConnection = Thisform.oADOConnection
Thisform.CA2.ActiveConnection = Thisform.oADOConnection

Sip


2) Se puede compartir el objeto connection de varios CAs con SPT para
ejecutar una transaccion
Ej: nConnectionHandle = Thisform.oADOConnection &&Asumo que
esto me daria el manejador
SQLSETPROP(nConnectionHandle, "Transactions", 2)
llSuccess = TABLEUPDATE(.T., .F., CA1)
if llSuccess
llSuccess = TABLEUPDATE(.T., .F., CA2)
if llSuccess
llSuccess=SqlExec(nConnectionHandle, cSQLCommand) > 0
if llSuccess
SQLCOMMIT(nConnectionHandle)
return llSuccess
endif
endif
endif
=SQLROLLBACK(nConnectionHandle)
&&Detecto error
*-Si esta no es la forma de hacer una transccion de CAs con SPT con una
misma conneccion como hacerlo.

Jamas lo he probado de esta forma, asi que realmente no te puedo decir si
funciona o no, cuando yo tuve que imprementar transacciones lo hice contra
la conexión, eje:
Thisform.oADOConnection.BeginTrans()
Thisform.oADOConnection.RollbackTrans()
Thisform.oADOConnection.CommitTrans()

en en cuenta que debes estar en transacciones lo menos posible, y solo
debes usar este sistema cuando vayas a actualizar mas de una tabla o mas de
un registro y quieras reversar todo. Por que MS SQL es transacional por
definición, o sea que si solo vas a actualizar una tabla y un registro el ya
abre una transacción

3) En caso de estar correcta la pregunta 2 seria correcto ejecutar el codigo
en un try cath

Sip

4) En el SP1 de VFP8.0 se corrgio el error que al hacer un Tableupdate()
siempre devolvia .T. pese a existir errores.

Nop, por lo menos a mi siempre me devuelve .T., lo trato de solventar
haciendo un go(recno()) despues del tableupdate esto hace que al tratar de
moverse dispare e excepcion



José G. Samper

"Mauricio Pulla B." escribió en el mensaje
news:
Hola

No tengo experiencia en CursorAdapter con Ado apuntando a Sql server
Revise el ejemplo de José G. Samper, sobre como trabajar en forma
desconectada con cursor adapter, ado y Ms SqlServe. excelente pero tengo
algunas dudas.

1) Se pueden compartir varios CA un mismo obejto Connection
Ej. Thisform.CA1.ActiveConnection = Thisform.oADOConnection
Thisform.CA2.ActiveConnection = Thisform.oADOConnection

2) Se puede compartir el objeto connection de varios CAs con SPT para
ejecutar una transaccion
Ej: nConnectionHandle = Thisform.oADOConnection &&Asumo que


esto
me daria el manejador
SQLSETPROP(nConnectionHandle, "Transactions", 2)
llSuccess = TABLEUPDATE(.T., .F., CA1)
if llSuccess
llSuccess = TABLEUPDATE(.T., .F., CA2)
if llSuccess
llSuccess=SqlExec(nConnectionHandle, cSQLCommand) > 0
if llSuccess
SQLCOMMIT(nConnectionHandle)
return llSuccess
endif
endif
endif
=SQLROLLBACK(nConnectionHandle)
&&Detecto error
*-Si esta no es la forma de hacer una transccion de CAs con SPT con una
misma conneccion como hacerlo.

3) En caso de estar correcta la pregunta 2 seria correcto ejecutar el


codigo
en un try cath

4) En el SP1 de VFP8.0 se corrgio el error que al hacer un Tableupdate()
siempre devolvia .T. pese a existir errores.

5) Cual seria la mejor estrategia para que la aplicacion corriera en una


LAN
como en Una WAN tomando en cuenta que se trabajaria con W2000 Server, SQL
Server, CAs + Ado.

6) Cuando se tratara de una red WAN como cual seria la mejor forma de
conectar una sucursal distante con el servidor, y cual seria los equipos
requeridos.

Siempre e desarrollado aplicaciones para redes LAN y no tengo la menor


idea
para que trabajen en una WAN..!

Saludos,
Mauricio Pulla.
Cuenca-Ecuador.


Preguntas similares