Transacciones, TCF, Logout, Commit, Rollback

Consultas, trucos, consejos. Todo sobre Clarion en todas sus versiones
Responder
carlin
Novato
Mensajes: 38
Registrado: Dom Mar 30, 2014 3:23 am
Contactar:

Transacciones, TCF, Logout, Commit, Rollback

Mensaje por carlin » Mar Dic 15, 2015 2:15 pm

Creo que he puesto fin a lo que fue un gran misterio para mi en su momento y es algo sumamente simple: manipulacion de transacciones.
Es bastante criptica la informacion al respecto tanto en Clarion como en los foros. Por esto y luego de mucho leer en foros en español e ingles, logre estractar lo siguiente, que espero les sirva mis estimados colegas.

Paso 1
En el punto embebido del FRAME (windowsManager init (priority 6100) o sea antes que se abra ningun archivo, Insertar el siguiente codigo:

GLO:Datos:TCF = 'TCF=' & CLIP(GLO:WorkDir) & '\' & 'AR.TCF'
Send(CLIENTES,GLO:Datos:TCF)

Nota 1:
No es necesario definir en ningun lado el archivo .TCF ni su estructura porque de todo se encarga el driver.
Nota 2:
no enviar (SEND) los datos para el .TCF desde el diccionario, según los autores, esto no funciona.
Nota 3: Solo es necesario un archivo .TCF para toda la aplicación.

Listo, el archivo de control de transacciones ya esta creado y sin dudas funcionara.
Para que todo quede completo deberiamos hacer:

LOGOUT(1,CabeceraFactura,DetalleFactura) !Comienza la transaccion
DO ErrHandler !Chequear errores
ADD(CabeceraFactura) !Agregar registro al padre
DO ErrHandler !
LOOP X# = 1 TO RECORDS(DetailQue) !Procesar los registros almacenados
GET(DetailQue,X#) !traer uno de la Cola
DO ErrHandler !
Det:Record = DetailQue !Asignar al record buffer
ADD(DetalleFactura) !Hacer el Add al archivo
DO ErrHandler !
END
COMMIT !Terminar la transaccion, todo OK
ASSERT(~ERRORCODE())

ErrHandler ROUTINE !Runina de manejo de errores
IF NOT ERRORCODE() THEN EXIT. !Sale si no hay errores
Err" = ERROR() !Guarda el mensaje de error
ROLLBACK !Anula la transaccion
ASSERT(~ERRORCODE())
BEEP !Avisa al usuario
MESSAGE('Transaction Error - ' & Err")
RETURN

Lo anterior es copia de la ayuda del manual de Clarion 6.3

Para verificar que exista realmente el archivo .TCF podemos usar en cualquer punto de la aplicación lo siguiente:

Poner un string variable en pantalla y en un boton:

Loc:Tcf = SEND(CLIENTES, 'TCF')
DISPLAY()

Eso deberia ser todo. Por lo menos para mi funciona.


Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 7 invitados