PDA

Ver la Versión Completa : ¿ Es posible realizar una inserción sin tener una transaccion abierta ?


TrUnkS
03-02-2007, 01:52:16
Hola amigos mi duda es la siguiente:
Deseo utilizar un TIBDataSet que se almacene en memoria mientras le realizo operaciones de borrado, insercion, modificacion, etc ... y en el momento que deseo realmente guardar o cancelar los cambios entonces abrir la transaccion y realizar los cambios. La idea es que la transaccion se mantenga abierta el menor tiempo posible y solamente realizar operaciones con tablas imaginarias momentaneamente sin tener los DataSet abiertos ni la Transacción. Cuando inserto un registro y el DataSet esta cerrado, entonces me marca error porque el DataSet esta cerrado. Si abro el DataSet se abre la transacción y eso es justamente lo que no quiero. Trato de usar CachedUpdates pero igual tengo que abrir los DataSet para realizar las inserciones y borrados. De antemano gracias.

Gigabyte1024
03-02-2007, 02:10:34
podrias intentar introducir tus datos a un stringrid y ya cuando llegue el momento de guardar los datos pasar los campos de las celdas a tu dataset que seria algo asi:

IBTransaction1.Active:=True;
IBDataSet.Active:=True;

for y1:=1 to y-1 do //y es la cantidad de registros que hay en el stringgrid
begin
IBDataSet1.Insert;
IBDataSet1.FieldByName('clave').AsInteger:=strtoint(stringgrid.Cells[0,y1]);
IBDataSet1.FieldByName('nombre').AsString:=stringgrid.Cells[1,y1];
IBDataSet1.FieldByName('tel').AsInteger:=strtoint(stringgrid.Cells[2,y1]);
IBDataSet1.Post;
end;
IBTransaction1.Commit;



eso lo puedes poner en un boton, espero te sirva de algo