Pues....
Me preguntaba si es posible con FWH lograr alguna forma de rollback al almacenar los campos 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.
Implementar RollBack para garantizar integridad referencial
- jose_murugosa
- Posts: 1182
- Joined: Mon Feb 06, 2006 4:28 pm
- Location: Uruguay
- Contact:
Implementar RollBack para garantizar integridad referencial
Saludos/Regards,
José Murugosa
"Los errores en programación, siempre están entre la silla y el teclado y la IA!!"
José Murugosa
"Los errores en programación, siempre están entre la silla y el teclado y la IA!!"
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 nos cambiamos a cliente/servidor ( primero con ADS y luego M$SQL-Server ) nunca mas un transaccion quedo a medio camino.
Saludos
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 nos cambiamos 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.
RANDOM S.A.
SISTEMICA S.A.
- jose_murugosa
- Posts: 1182
- Joined: Mon Feb 06, 2006 4:28 pm
- Location: Uruguay
- Contact:
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 nos cambiamos 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
"Los errores en programación, siempre están entre la silla y el teclado y la IA!!"
José Murugosa
"Los errores en programación, siempre están entre la silla y el teclado y la IA!!"
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 nos cambiamos 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.
- jose_murugosa
- Posts: 1182
- Joined: Mon Feb 06, 2006 4:28 pm
- Location: Uruguay
- Contact:
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 nos cambiamos 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 .
Saludos/Regards,
José Murugosa
"Los errores en programación, siempre están entre la silla y el teclado y la IA!!"
José Murugosa
"Los errores en programación, siempre están entre la silla y el teclado y la IA!!"
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.
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.
R.F.
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.
-
- Posts: 1071
- Joined: Fri Oct 07, 2005 3:33 pm
- Location: Cochabamba - Bolivia
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
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.