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)
-   -   Transacciones con Delphi (https://www.clubdelphi.com/foros/showthread.php?t=1441)

Gregory Mazon 14-06-2003 02:42:56

Transacciones con Delphi
 
Hola
Soy novato en el manejo de Interbase y Delphi, estoy usando un TQuery para actualizar las tablas de una base de Interbase pero no se como se realizan las transacciones, el codigo que estoy utilizando es el siguiente :

Var
myQuery : TQuery;

Begin
myQuery := TQuery.Create(application);
myQuery.Sql.Clear;
myQuery.Add('Insert into Articulos(modelo,describe,linea...etc')
myQuery.Add('Values("0001","PRUEBAS","FALDA")');
myQuery.ExecSQL;

myQuery.Sql.Clear;
myQuery.Add('Insert into Precios(costo,publico,mayoreo...etc')
myQuery.Add('Values(200,400,600)');
myQuery.ExecSQL;
End;

Supongo que existe la correcta de hacerlo, si alguin me puede ayudar de antemano les agradesco a todos.

jhonny 14-06-2003 18:21:47

Holap, bueno la variable esta bien declarada, y la forma de limpiar el SQL tambien pero
al momento de agregar el SQL no debido a que no estas haciendo referencia a la propiedad
SQL del TQuery y ademas te faltan algunos "punto y comas"...osea que quedaria asi:

Código:

Var
myQuery : TQuery;

Begin
myQuery := TQuery.Create(nil);
myQuery.Sql.Clear;
myQuery.SQL.Add('Insert into Articulos(modelo,describe,linea...etc');
myQuery.SQL.Add('Values("0001","PRUEBAS","FALDA")');
myQuery.ExecSQL;

myQuery.Sql.Clear;
myQuery.SQL.Add('Insert into Precios(costo,publico,mayoreo...etc');
myQuery.SQL.Add('Values(200,400,600)');
myQuery.ExecSQL;
myQuery.free;
End;


Por otra parte...para usar transacciones debes bajar un componente TDatabase y configurarlo,
ya sea en su propiedad AliasName o en DriverName segun sea tu necesidad...no olvides configurar tambien los parametros
de la base de datos y si no quieres que se pida la contraseña del interbase poner la propiedad LoginPromt en 'False'.

Entonces ya podes trabajar con Transacciones y tu codigo quedaria asi, suponiendo de que el TDatabase se llama "database1":
Código:

Var
myQuery : TQuery;

Begin
    database1.StartTransaction;
    try
        myQuery := TQuery.Create(application);
        myQuery.Sql.Clear;
        myQuery.SQL.Add('Insert into Articulos(modelo,describe,linea...etc');
        myQuery.SQL.Add('Values("0001","PRUEBAS","FALDA")');
        myQuery.ExecSQL;

        myQuery.Sql.Clear;
        myQuery.SQL.Add('Insert into Precios(costo,publico,mayoreo...etc');
        myQuery.SQL.Add('Values(200,400,600)');
        myQuery.ExecSQL;
        myQuery.free;
    database1.Commit;
  except
    database1.Rollback;
    raise exception.create('No se pudo ejecutar la transaccion');
  end;
End;

Espero te sirva.;)

Gregory Mazon 17-06-2003 00:37:02

:) Muchas Gracias

Modifique mi codigo y funciona perfectamente


La franja horaria es GMT +2. Ahora son las 07:52:44.

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