Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Ejemplo de una Transaccion (https://www.clubdelphi.com/foros/showthread.php?t=2715)

@-Soft 04-08-2003 14:34:12

Ejemplo de una Transaccion
 
hola

podria algun colega del foro tener la amabilidad de escribir un ejemplo sencillo y detallado de como se realiza una transaccion. sucede que tengo que empezar a trabajar con este tipo de operacion para la integridad de los datos y no se como se utiliza.


Saludo.

CORBATIN 04-08-2003 15:36:54

Aquí tienes un pequeño ejemplo:

with Query1 do
begin
Database1.StartTransaction;
try
ApplyUpdates;
Database1.Commit; {inicias la transacción};
except
Database1.Rollback; {en caso de error se deshacen los cambios hasta el último commit realizado}
raise;
end;
CommitUpdates; {se actualizan los datos y se borran de la caché si todo va bien}
end;

end;

Aunque yo sé de que va la cosa, pero este ejemplo lo he sacado de la ayuda de delphi, te aconsejo que busques en ella, yo no domino muy bien el ingles, pero con algunas palabras sueltas se sacan buenas conclusiones, saludos.

delphi.com.ar 04-08-2003 16:30:30

Disculpa CORBATIN, pero voy a cambiar tus traducciones:

Con querys modificables:
Código:

procedure TForm1.ApplyButtonClick(Sender: TObject);
begin
  with CustomerQuery do
  begin
  Database1.StartTransaction; {Abre la transacción}
    try
      ApplyUpdates; {Intenta escribir las modificaciones en la base de datos};
      Database1.Commit; {Si el ApplyUpdates es exitoso, cierra la transacción y guarda los datos};
    except
      Database1.Rollback; {Si el ApplyUpdates falla, deshace los cambios};
    raise;
  end;
  CommitUpdates; {si es exitoso, borra el cache}
  end;
end;

Con ExecSQL modificables:
Código:

procedure TForm1.ApplyButtonClick(Sender: TObject);
begin
  with CustomerQuery do
  begin
  Database1.StartTransaction; {Abre la transacción}
    try
      Sql.Text := 'UPDATE....';
      ExecSQL;
      Database1.Commit; {cierra la transacción y guarda los datos};
    except
      Database1.Rollback; {Si Falla, deshace los cambios};
      raise;
    end;
  end;
end;


@-Soft 05-08-2003 14:39:29

hola

despues de haber visto sus ejemplos que son bastantes satisfactorios, quisiera hacerles otra preguntita.

las transacciones solo funcionan con querys, porque yo estoy utilizando tables para insertar y todo eso y querys para las consultas.

saludos.

__marcsc 05-08-2003 14:51:44

Hola,

fijate que las transacciones son a nivel de la BD, de modo que no importa si es un query o una tabla, la que ejecuta la transacción es la Conexión a la que están enlazados los queries o tables.

Saludos.


La franja horaria es GMT +2. Ahora son las 07:01:12.

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