Ver Mensaje Individual
  #2  
Antiguo 05-07-2006
Sick boy Sick boy is offline
Miembro
 
Registrado: may 2003
Ubicación: Cantabria
Posts: 245
Reputación: 24
Sick boy Va por buen camino
Solo espero que lo que voy a poner sea lo correcto. Al menos es como yo lo hago.

Cita:
Cuando se dice que las transacciones no deben quedar abiertas mucho
tiempo. Esto se refiere a que una vez ejecutado starttransaction se
debe ejecutar inmediatamente un commit o commitretaining???
Piensa en que los usuarios son muy ingeniosos, y que se le pueden ocurrir hacer cosas que tu ni te imaginas. Imagina que un usuario inicia una transacción (editando un registro), le llaman por telefono y se le olvida terminar.
También puede pasar que un registro sea modificado desde varios terminales (casi) al mismo tiempo, por ejemplo, el clasico del stock en los supermercados.

La filosofia no es hacer un commit justo al abrir la transacción, sino en no abrir la transacción hasta que no vayas a hacer un commit.

Es decir, que recojes los datos, y cuando ya los tienes todos y el usuario esta seguro y quiere aceptar, inicias la transacción, grabas los datos y la terminas.

Conseguir esto a veces te obliga a escribir más código, y a utilizar controles no dbaware.

Recomiendo la "cara oculta de delphi 6", aunque creo que la versión de delphi 4 tambien es muy buena.

Cita:
- Supongamos que tenemos un formulario en donde el usuario debe
introducir una gran cantidad de informacion. Durante ese tiempo
la transaccion debe quedar abierta hasta que el usuario termine
de introducir los datos???
Justo a esto es a lo que me refería. Depende de los datos que manejes, pero en general, si va a estar en red, yo intentaría evitarlo.

Cita:
- Cuando se trabajan con transacciones es adecuado utilizar
los controles DataAware (DBEdits, DBComboBox,etc.)???
Depende, yo solo los uso cuando tengo claro que no interferirán en el funcionamiento de la aplicación.

También hay que tener en cuenta los diferentes tipos de transacciones, y buscar el que mejor se ajuste a lo que necesitas. En mi caso, casi todas son "read committed"

Espero que te solucione algo.
Responder Con Cita