![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|
|
#1
|
|||
|
|||
|
Ado y transacciones
Ok, gracias por el comentario y tienes razón tengo que redactar bien, saludos.
|
|
#2
|
||||
|
||||
|
Hola.
Bueno cojo el relevo de jachguate(jejejeje). No termino de comprender que tengas que ejecutar dos veces el procedimiento almacenado para coger el ultimo valor. Bueno la verdad es que si lo entiendo pero no lo comparto. Podrias trabajar con los datasets en modo cache, es decir, poner la propiedad locktype = ltBatchOptimistc. Despues en el evento BeforePost del master recoges el ultimo valor introducido en la BD y por ultimo en el evento de AfterPost tambien del master recorres el Detalle y le añades el campo llave de la cabecera. Para terminar aplicas los datos de la cahé y listo. De esta forma no importa si el usuario tarda mucho en rellenar las lineas. Saludos |
|
#3
|
|||
|
|||
|
Ado y transacciones
Hola, ya lo hice asi, pero algo me falta, en una transacción no tengo problema, pero abri dos veces la aplicación en una capturo mi registro principal y al pasar a capturar detalles, le doy post al principal para que me deje capturar los detalles y lo dejo esperando, ¡ah! me dio el 18 (ultima clave), en la otra capturo como en la primera y lo grabo me graba el 18 porque en la anterior no lo hice, regreso a esta y trato de grabar, me dice que no puedo duplicar una clave, que me faltaria?, lo que entendi como aplicar datos de la cache lo hice con :
AdoDataset.cacheupdate, de antemano gracias. |
|
#4
|
|||
|
|||
|
Ado y transacciones
Perdón fue asi :
DataModule1.ADODataSet5.UpdateBatch(); *tabla principal DataModule1.ADODataSet15.UpdateBatch(); *tabla detalles DataModule1.ADODataSet12.UpdateBatch(); *tabla detalles DataModule1.ADODataSet10.UpdateBatch(); *tabla detalles DataModule1.ADOConnection1.CommitTrans; antes de esto, no doy otro post, pues cuando intentan capturar detalles ya lo hice y enseguida lo pongo en modo de edición. |
|
#5
|
|||
|
|||
|
Ado y transacciones
¡¡¡Gracias por la ayuda!!!, ya funciona, asi como me dijiste "kalimero", lo que paso es que cuando el usuario entra a alguno de los grids-detalle, yo doy un post al registro principal, para que me deje meter detalles.
Luego si el usuario le pica al boton Ok, ya no hacia otro post del registro principal, solo "vaciaba" el buffer e iniciaba otra transacción, append de registro principal y otra vez a capturar, lo cambie puse otra vez el post al registro principal y ¡¡¡listo!!!. En el caso de mi boton Cancel, no habia problema, porque le daba cancel al registro principal y deshacia la transacción. Ahora solo me falta ver como manejo la edición en la misma pantalla (por el llamado al proc. almac. dentro del post), pero creo debe ser mas facil, gracias otra vez por la ayuda, pues eso de pasar de Clipper a Delphi es otro mundo, pero muy bueno, saludos. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|