Implementar RollBack para garantizar integridad referencial

Post Reply
User avatar
jose_murugosa
Posts: 943
Joined: Mon Feb 06, 2006 4:28 pm
Location: Uruguay
Contact:

Implementar RollBack para garantizar integridad referencial

Post by jose_murugosa »

Pues....

Me preguntaba si es posible con FWH lograr alguna forma de rollback al almacenar _ en varias tablas, de modo de que si en el proceso algo sucede, revertir la operación y garantizar integridad referencial.

O si no hay otra que usar ADS o cualquier otro cliente/servidor

No pretendo garantizar que siempre se graben los datos, ni que el software se vuelva "magicamente" cliente/servidor, pero que si se produce una colisión o cualquier cosa que impida guardar un dato en parte de un proceso de grabación, se produzca un rollback y se cancele el ingreso, de modo de avisar al operador que la operación no puede ser hecha.

Es preferible que algo no se grabe a que se grabe por la mitad... no?

Quizá mi pregunta sea un disparate, (de hecho soy algo rebuznante en la pregunta) pero... hay funciones de FWH y/o [x]Harbour que combinadas puedan ir en esta dirección?

Se puede implementar algo así en el futuro en FWH?

Apreciaré ser desasnado al respecto.
Saludos/Regards,
José Murugosa
FWH + Harbour + Bcc7. Una seda!
MOISES
Posts: 824
Joined: Wed Aug 22, 2007 10:09 am

Post by MOISES »

El grupo eidos editó un libro sobre programación en red con clipper en el que tenía esas funciones. El libro incluía el código fuente en un disco, pero no se dónde lo tengo.

Funcionaba bastante bien: tenía roll back, semáforos, etc. A ver si alguien lo tiene.
User avatar
dbzap
Posts: 189
Joined: Mon Nov 07, 2005 7:36 pm
Location: Chile
Contact:

Post by dbzap »

Jose...
Yo no pediria re-inventar la rueda...
Los sistemas transaccionales llegaron antes que nosotros a este ruedo...
En SQL y cliente/servidor, todo funcina perfecto con eso.
Nosotros desde que _ a cliente/servidor ( primero con ADS y luego M$SQL-Server ) nunca mas un transaccion quedo a medio camino.
Saludos
Julio Gonzalez V.
RANDOM S.A.
SISTEMICA S.A.
User avatar
jose_murugosa
Posts: 943
Joined: Mon Feb 06, 2006 4:28 pm
Location: Uruguay
Contact:

Post by jose_murugosa »

dbzap wrote:Jose...
Yo no pediria re-inventar la rueda...
Los sistemas transaccionales llegaron antes que nosotros a este ruedo...
En SQL y cliente/servidor, todo funcina perfecto con eso.
Nosotros desde que _ a cliente/servidor ( primero con ADS y luego M$SQL-Server ) nunca mas un transaccion quedo a medio camino.
Saludos
Comprendo, y de hecho, en enero tendré que implementar para un cliente un sistema que ahora está en arquitectura distribuída, en cliente/servidor con el fin de dar las garantías necesarias a los datos, para lo cual adquirirán ADS.

El tema es que muchos softs pequeños, no son vendibles con ADS o pagando MySQL.

Es para esta clase de software para la que sería bueno poder implementar funciones de rollback y así al menos cuidar la integridad referencial y permitir al usuario reingresar un dato que no pudo grabarse a posteriori, sin necesidad de que el programador tenga que ir a limpiar los datos que se grabaron por la mitad para restaurar la integridad referencial.
Saludos/Regards,
José Murugosa
FWH + Harbour + Bcc7. Una seda!
User avatar
Baxajaun
Posts: 853
Joined: Wed Oct 19, 2005 2:17 pm
Location: Gatika. Bizkaia

Post by Baxajaun »

Jose,

si no recuerdo mal, la TDBF de Manu Expósito soportaba commit y rollback.

Saludos,

Félix
FiveWiDi
Posts: 910
Joined: Mon Oct 10, 2005 2:38 pm

Post by FiveWiDi »

jose_murugosa wrote:
dbzap wrote:Jose...
Yo no pediria re-inventar la rueda...
Los sistemas transaccionales llegaron antes que nosotros a este ruedo...
En SQL y cliente/servidor, todo funcina perfecto con eso.
Nosotros desde que _ a cliente/servidor ( primero con ADS y luego M$SQL-Server ) nunca mas un transaccion quedo a medio camino.
Saludos
Comprendo, y de hecho, en enero tendré que implementar para un cliente un sistema que ahora está en arquitectura distribuída, en cliente/servidor con el fin de dar las garantías necesarias a los datos, para lo cual adquirirán ADS.

El tema es que muchos softs pequeños, no son vendibles con ADS o pagando MySQL.

Es para esta clase de software para la que sería bueno poder implementar funciones de rollback y así al menos cuidar la integridad referencial y permitir al usuario reingresar un dato que no pudo grabarse a posteriori, sin necesidad de que el programador tenga que ir a limpiar los datos que se grabaron por la mitad para restaurar la integridad referencial.
Tal como dice Félix, creo que con la clase TDBF de Manuel Expósito podrías disponer ROLLBACK.

Podría ser algo así:

If oTDBFperson:Save() .and. ;
oTDBFdomicilio:Save() .and. ;
oTDBFfacturas:Save()

MsgAlert("Ea", "Soy el mejor" )
Else

oTDBFperson:RollBack():Save()
oTDBFdomicilio:RollBack():Save()
oTDBFfacturas:RollBack():Save()

MsgAlert("Ea", "No pude grabar" )

EndIf

Saludos
Carlos G.
User avatar
jose_murugosa
Posts: 943
Joined: Mon Feb 06, 2006 4:28 pm
Location: Uruguay
Contact:

Post by jose_murugosa »

FiveWiDi wrote:
jose_murugosa wrote:
dbzap wrote:Jose...
Yo no pediria re-inventar la rueda...
Los sistemas transaccionales llegaron antes que nosotros a este ruedo...
En SQL y cliente/servidor, todo funcina perfecto con eso.
Nosotros desde que _ a cliente/servidor ( primero con ADS y luego M$SQL-Server ) nunca mas un transaccion quedo a medio camino.
Saludos
Comprendo, y de hecho, en enero tendré que implementar para un cliente un sistema que ahora está en arquitectura distribuída, en cliente/servidor con el fin de dar las garantías necesarias a los datos, para lo cual adquirirán ADS.

El tema es que muchos softs pequeños, no son vendibles con ADS o pagando MySQL.

Es para esta clase de software para la que sería bueno poder implementar funciones de rollback y así al menos cuidar la integridad referencial y permitir al usuario reingresar un dato que no pudo grabarse a posteriori, sin necesidad de que el programador tenga que ir a limpiar los datos que se grabaron por la mitad para restaurar la integridad referencial.
Tal como dice Félix, creo que con la clase TDBF de Manuel Expósito podrías disponer ROLLBACK.

Podría ser algo así:

If oTDBFperson:Save() .and. ;
oTDBFdomicilio:Save() .and. ;
oTDBFfacturas:Save()

MsgAlert("Ea", "Soy el mejor" )
Else

oTDBFperson:RollBack():Save()
oTDBFdomicilio:RollBack():Save()
oTDBFfacturas:RollBack():Save()

MsgAlert("Ea", "No pude grabar" )

EndIf

Saludos
Carlos G.
Felix y Carlos, Gracias por la información, procuraré obtener la clase y probarla, gracias desde ya :D .
Saludos/Regards,
José Murugosa
FWH + Harbour + Bcc7. Una seda!
R.F.
Posts: 840
Joined: Thu Oct 13, 2005 7:05 pm

Post by R.F. »

Como yo siempre he dicho.... donde este un buen ADS que se quite todo lo demas:

AdsBeginTransaction()
....
....

Append.....
Replaces......
commites.....
......
.....
AdsCommitTransaction()

Si el programa se "rompe" entre un ADSBeginTransaction() y un ADSCommitTransaction() el Rollback se hace automaticamente.

Tambien es posible llamar directamente a AdsRollBackTransaction()

Nos vemos en Santiago de Chile el dia 13 de Octubre
Buenos Aires del 3 al 5 de Noviembre.
Saludos
R.F.
FiveWiDi
Posts: 910
Joined: Mon Oct 10, 2005 2:38 pm

Post by FiveWiDi »

RF wrote:Como yo siempre he dicho.... donde este un buen ADS que se quite todo lo demas:

AdsBeginTransaction()
....
....

Append.....
Replaces......
commites.....
......
.....
AdsCommitTransaction()

Si el programa se "rompe" entre un ADSBeginTransaction() y un ADSCommitTransaction() el Rollback se hace automaticamente.

Tambien es posible llamar directamente a AdsRollBackTransaction()

Nos vemos en Santiago de Chile el dia 13 de Octubre
Buenos Aires del 3 al 5 de Noviembre.
Rene,

Buscando integridad, SQL (aunque yo de eso sólo se escribir su nombre).

Hay que tener en cuenta lo que dice Jose:
"El tema es que muchos softs pequeños, no son vendibles con ADS o pagando MySQL. "

Para estos soft pequeños que solución les darías?

Saludos
Carlos G.
Marcelo Via Giglio
Posts: 1033
Joined: Fri Oct 07, 2005 3:33 pm
Location: Cochabamba - Bolivia

Post by Marcelo Via Giglio »

Hola

una solucion podria ser SQLite, mira productos cono RealSQL (REALBASIC) han desarrollado sobre SQLite, pongo SQLlite por que es peque~no, ahora si quieres algo robusto de verdad (comparado con Oracle) ademas de gratis lo tienes a Postgres

solo una opinion personal

saludos

Marcelo
FiveWiDi wrote:
RF wrote:Como yo siempre he dicho.... donde este un buen ADS que se quite todo lo demas:

AdsBeginTransaction()
....
....

Append.....
Replaces......
commites.....
......
.....
AdsCommitTransaction()

Si el programa se "rompe" entre un ADSBeginTransaction() y un ADSCommitTransaction() el Rollback se hace automaticamente.

Tambien es posible llamar directamente a AdsRollBackTransaction()

Nos vemos en Santiago de Chile el dia 13 de Octubre
Buenos Aires del 3 al 5 de Noviembre.
Rene,

Buscando integridad, SQL (aunque yo de eso sólo se escribir su nombre).

Hay que tener en cuenta lo que dice Jose:
"El tema es que muchos softs pequeños, no son vendibles con ADS o pagando MySQL. "

Para estos soft pequeños que solución les darías?

Saludos
Carlos G.
Post Reply