Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-06-2005
ferysil2003 ferysil2003 is offline
Miembro
 
Registrado: abr 2004
Posts: 26
Poder: 0
ferysil2003 Va por buen camino
Unhappy ¿Cómo usar mejor las transacciones?

Hola compañeros de programación.

Estoy haciendo pruebas de programación en delphi 7, firebird y componentes fibplus de devrace.
Lo cierto es que lo llevo bastante bien, pero antes de empezar en serio con un proyecto que tengo en mente tengo que practicar mucho y estar seguro de lo que hago para evitar problemas en el futuro.
Según veo yo lo más importante es tener claro como usar las transacciones y despues de leer mucho siempre se dice que deben de ser lo más cortas posibles.
En mis pruebas uso un data module en donde tengo el componente TpFIBDatabase para conectar a la base de datos firebird y varios componentes TpFIBDataset, por ejemplo uno llamado DataSetClientesLista para acceder a una lista de clientes, dataset al que modifico la sentencia sql para filtrar el resultado. Ademas como dicho dataset tiene que tener una transaccion asociada el componente TpFIBTransaction lo tengo en el formulario donde tengo el dbgrid, y mi proceso es el siguiente. Cuando creo el formulario, modifico el selectsql del DataSetClientesLista, asocio la transaccion de ese formulario al DataSetClientesLista, abro la transacción y despues abro el DataSetClientesLista.
El resultado me lo muestra en el dbgrid, y cuando cierro el formulario cierro todo, la transaccion y el DataSetClientesLista.
El dbgrid solo es de consulta, nunca para modificar ni para borrar. Así pues el tiempo de duración de la transacción es el tiempo que tengo abierto el formulario de consulta. Supongo que estará bien hecho, a mi no se me ocurre otra cosa.
Mi dilema viene cuando uso un formulario para modificar un ficha.
El proceso que hago es parecido al anterior, al crear el formulario que contiene los campos de la ficha asocio a un DataSet llamado DataSetCliente la sentencia sql que me devuelve sólo ese registro, le asocio la transaccion que la tengo en el formulario llamado Ficha Clientes, abro la transaccion y abro el DataSetClientes, y lo pongo en modo edicion. En el formulario con la ficha del cliente a modificar uso componentes DBEdit. Al pulsar aceptar hago un commit de la transaccion y cierro del DataSetClientes. Esto me funciona pero mi dilema es si es mejor esta opción o para que la transaccion dure menos debería de crear un formulario con campos edit el cual al crearlo hacer una consulta de lectura sobre la base de datos que me devolviera el registro de ese cliente y copiar yo los datos sobre cada campo edit, de esa manera abriría la transaccion, leería el registro, copiaría los datos sobre mis campos y cerraría la transaccion. Despues de modificar los campos oportunos, abriría de nuevo la transacción, enviaría una sentencia update de los campos modificados, y cerraría la transaccion. A nivel de programación sería algo más laborioso, pero de esa manera las transacciones serían muy cortas.
Os pido vuestra opinión al respecto y gracias de antemano por el tiempo altruista que dedicais.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 10:14:03.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi