Spanish [Solucionado] ¿Como realizo una Transacción en jRDC2?

Sergio Castellari

Active Member
Licensed User
Situación:
1) Actualmente realizo Insert, Update y delete de consultas individuales sin problemas
2) Necesito realizar una transacción con las siguientes consultas:

config.properties:
sql.insert_cab_RC=Insert into CABRC (NRO,LEYENDA,NOMCLIE,CODCLIE,FECHA,FECHA2,HORA,USUARIO,IMPORTE,PROCESO,ANTICIPO,RESTANTE,DGI) value (?,?,?,?,?,?,?,?,?,?,?,?,?)
sql.insert_cob_EFE=Insert into CAJA_MOVI (CODCAJA,DESCAJA,CAMBIO,DISPO,INGRESO,EGRESO,DETALLE,FECHA,HORA,USUARIO,PROCESO,SUCU,DGI) value (?,?,?,?,?,0.0,?,?,?,?,?,?,?)
sql.insert_cuerpo_RC_efe=Insert into CUERC (NRO,TIPO,DETALLE,FECHAEMI,IMPORTE,ENTRAPOR,PROCESO,NOMCONTA) value (?,?,?,?,?,?,?,?)
sql.insert_cob_CHE=Insert into CHEQTER (NROCHEQ,CODBANCO,BANCO,IMPORTE,FECHAEMI,FECHAVTO,FECHADEP,ENTRAPOR,SALEPOR,ESTADO,CAJAENTRA, \
                   CAJASALE,OPER,EXTERNO,NROCAJA,DGI,INGRESADO) value (?,?,?,?,?,?,"0000-00-00",?,"","E",?,"0",?,"N","0",?,?)
sql.insert_cuerpo_RC_che=Insert into CUERC (NRO,TIPO,DETALLE,FECHAEMI,FECHAVTO,IMPORTE,COMP,ENTRAPOR,PROCESO,NOMCONTA) value (?,?,?,?,?,?,?,?,?,?)

No me doy cuenta como puedo realizar una transacción con todas estas consultas.
He estado buscando en el foro, pero no encuentro ningún ejemplo de código donde se puede observar su funcionamiento.
Se que jRDC2 tiene la posibilidad de hacerlo.

Actualmente ejecuto una operación de la siguiente forma:
B4X:
        nProceso = nProceso + 1
            Dim aCom() As String
            aCom = Array As String(nProceso)
            Dim cmd As DBCommand = CreateCommand("update_proceso", aCom)
            Dim j As HttpJob = Main.jConex.CreateRequest.ExecuteBatch(Array(cmd), Null)
            Wait For(j) JobDone(j As HttpJob)
            If j.Success Then
                Log("Actualiza New PROCESO OK !!!")
                Return nProceso
            Else
                Log("Actualiza New PROCESO FALLO !!!")
                Return 0
            End If
        Else
            MsgboxAsync(Respuesta.Get("Mensaje"),"")
            Return 0
        End If

En config.properties tengo la siguiente instrucción SQL:
B4X:
sql.update_proceso=Update PROCESO Set PROCESO=? Where IDPROCESO=1

Saludos
 

José J. Aguilar

Expert
Licensed User
Hola Sergio:

Echa un vistazo a este ejemplo, a la parte del bucle, si te fijas, puedes ir añadiendo comandos a la lista (Commands.Add(cmd)) y después ejecutarlas todas con ExecuteBatch.
Si falla alguna, hay un rollback si no me equivoco.

saludos,
 

Sergio Castellari

Active Member
Licensed User
@José J. Aguilar funciono PERFECTO!!!!
Gracias por compartirlo, ademas aprendí como utilizar en este caso un "List"
Otra cosa que me sorprendió, es la velocidad de grabación de la transacción. Igual o mas rápido que mi sistema de Gestión actual en un mismo entorno...

Saludos Totales!!
 
Top