Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-07-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
Podrías informarte sobre los ClientsDataset con cacheUpdates. Usas controles DBEdits asociados a ese CDS. Puedes Editar, insertar, eliminar registros, etc, pero realmente los datos no se graban a las tablas, sino que se hace en memoria.

Cuando el usuario Pulsa en Grabar, por código llamas a ApplyUpdates del CDS y en ese momento es cuando inicias la transacción, grabas los datos y despues terminas la transacción.

PD: Si me equivoco, por favor corríjanme.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #2  
Antiguo 05-07-2006
Avatar de Hagen
Hagen Hagen is offline
Miembro
 
Registrado: ene 2004
Posts: 65
Poder: 23
Hagen Va por buen camino
Question

Sick boy y Lepe:

Muchas gracias por responder tan rapido.

Me quedan otras dudas.

para Sick boy:
Cita:
Empezado por Sick boy
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.
Te refieres a que cuando se haga click en algun button "Guardar" ó "Grabar" debo
hacer que se llame a STARTTRANSACTION y seguidamente a COMMIT?

Cita:
Empezado por Sick boy
Depende, yo solo los uso cuando tengo claro que no interferirán en el funcionamiento de la aplicación.
Podrias darme algunos ejemplos


Para Lepe
Cita:
Empezado por Lepe
Podrías informarte sobre los ClientsDataset con cacheUpdates. Usas controles DBEdits asociados a ese CDS. Puedes Editar, insertar, eliminar registros, etc, pero realmente los
datos no se graban a las tablas, sino que se hace en memoria.
En este caso no habria problemas cuando se quiere obtener valores(generadores) desde el servidor?

Última edición por Hagen fecha: 05-07-2006 a las 15:16:02.
Responder Con Cita
  #3  
Antiguo 05-07-2006
[pepon386] pepon386 is offline
Miembro Premium
 
Registrado: ene 2005
Ubicación: Valencia
Posts: 68
Poder: 22
pepon386 Va por buen camino
Yo personalmente te recomiendo que utilices lo siguiente:
ConsultaIB -> TDataSetProvider -> TClientDataSet

En "ConsultaIB" utiliza los componentes de acceso a Interbase que prefieras (siempre que deriben de TDataset).

Al usar esta "técnica" lo que consigues es que las actualizaciones se realizan en local, y cuando llamas al método "ApplyUpdates" del TClientDataset, que se encarga de iniciar la transacción, realizar todas las actualizaciones a la base de datos que sean necesarias y a continuación el commit.

Sinceramente, tienes que cambiar un poco la mentalidad de cómo se realizan las actualizaciones, además de que cuando quieres realizar cambios en varias tablas a la vez en una sola transacción debes controlarlo manualmente, pero por lo demás es muy sencillo y eficaz. Documéntate sobre ello. Si mal no recuerdo hay varios ejemplos en bdn.borland.com. Y si tienes algo de dinero para invertir, cómprale a Ian Marteens uno de sus cursos a distancia (son de lo mejor para iniciarse en esto) en http://www.marteens.com
Responder Con Cita
  #4  
Antiguo 06-07-2006
Sick boy Sick boy is offline
Miembro
 
Registrado: may 2003
Ubicación: Cantabria
Posts: 245
Poder: 24
Sick boy Va por buen camino
La solución PROVIDER + CLIENTDATASET parece muy buena, aunque yo aun no la he probado, por eso no puedo opinar.

Como en todo, la solución del PROVIDER tendrá sus ventajas y sus inconvenientes.

Cita:
Te refieres a que cuando se haga click en algun button "Guardar" ó "Grabar" debo
hacer que se llame a STARTTRANSACTION y seguidamente a COMMIT?
Bueno, cuando te contesté estaba pensando en insertar datos sin controles DBAware, asi que no es solo iniciar y terminar la transacción, sino que tienes que poner el SQL en medio.

Por ejemplo, al crear una factura, recoges el codigo del producto y la cantidad mediante un par de edits, y luego al pulsar el boton construyes el SQL que hace la inserción.

Cita:
Podrias darme algunos ejemplos
A mi me gusta que al crear las facturas, el usuario pueda modificar lo minimo posible. Además, al insertar hago más operaciones con los registros (que ya se que se pueden y deben hacer con triggers),asi que me gusta saber en cada momento lo que inserto.

Esto es una opinión, seguro que hay otras formas de hacerlo, y posiblemente más eficientes, pero estaba migrando un programa de PARADOX a FB, y esto es lo que me resultó más facil.

Añadir que yo no utilizo IBX, uso los MDO (Mercury Database Objects), muy buenos, y libres.

Y recomendarte de nuevo la Cara Oculta de Delphi 4, libro gratuito y facil de encontrar. Hay mucha información sobre las transacciones en general.

Y en la cara oculta de delphi 6 hay todo un apartado sobre proveedores y modulos remotos y servidores de capa intermedia.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Las transacciones y yo gario Conexión con bases de datos 5 16-03-2009 17:23:13
Transacciones JulioGO Firebird e Interbase 1 07-05-2006 00:46:28
dudas sobre transacciones..... inexperto Conexión con bases de datos 2 18-11-2004 20:24:31
Dudas con Transacciones y Actualizaciones en Caché cybergerman Conexión con bases de datos 3 29-09-2004 21:13:03


La franja horaria es GMT +2. Ahora son las 23:45:37.


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