Muchas Gracias.
Mientras me escribias el ejemplo yo he escrito este procedimiento:
Código Delphi
[-]
procedure Tform1.Env_Altas;
var dd,ds: TSqlQuery;
s: String;
x: Integer;
begin
ds:= TSqlQuery.Create(nil);
dd:= TsqlQuery.Create(nil);
ds.DataBase:=Con_o;
ds.Transaction:=Transac_O;
dd.DataBase:=Con_d;
dd.Transaction:=Transac_D;
s:='Select Codigo,Almacen,Descripcion,existencias,pvp1 from articulo';
s:=s+' where exp='+QuotedStr('NO');
ds.SQL.Clear;
ds.SQL.Text:=s;
ds.Active:=true;
dd.SQL.Clear;
dd.SQL.Add('insert into articulo (codigo,almacen,descripcion,existencias,pvp1, exp) ');
dd.SQL.Add('values (:codigo, :almacen, :descripcion, :existencias, vp1, :exp)');
dd.ParseSQL:=true;
while not ds.EOF do
begin
dd.Params.ParamByName('codigo').Value:=ds.FieldByName('codigo').AsString;
dd.Params.ParamByName('descripcion').Value:=ds.FieldByName('descripcion').AsString;
dd.Params.ParamByName('existencias').Value:=ds.FieldByName('existencias').AsString;
dd.Params.ParamByName('pvp1').Value:=ds.FieldByName('pvp1').AsFloat;
dd.Params.ParamByName('exp').Value:='NO';
dd.ExecSQL;
ds.Next;
end;
dd.SQL.Clear;
dd.sql.Add('commit');
dd.ExecSQL;
dd.Free;
ds.Free;
end;
Ni que decir tiene que su ejemplo es mucho mejor y voy a estudiarlo a fondo, porque hay muchas cosas en él que desconozco.