Ver Mensaje Individual
  #3  
Antiguo 28-06-2012
Avatar de olbeup
olbeup olbeup is offline
Miembro
 
Registrado: jul 2005
Ubicación: Santiago de la Ribera (España)
Posts: 685
Reputación: 19
olbeup Va camino a la fama
No lo he probado, espero que te funcione
Código Delphi [-]
var
  CodigoArtic: Integer;
  CantidadArtic: Double;
  oSQLQry: TSQLQuery;
  oDSProvider: TDataSetProvider;
  oCDSet: TClientDataSet;
  ...
  case UpdateKing of
    ukInsert:
      begin
        if (SourceDS.Name = 'SQLDataSetDetalle') then
          if (DeltaDS.FieldByName('CANTIDAD').AsFloat > 0) then
          begin
            CodigoArtic   := DeltaDS.FieldByName('COD_ARTIC').AsInteger;
            CantidadArtic := DeltaDS.FieldByName('CANTIDAD').AsFloat;

            oSQLQry := TSQLQuery.Create(nil);
              oSQLQry.SQLConnection := SQLConnectionMovimientos;
              oSQLQry.SQL.Add('SELECT CANTIDAD FROM "Articulos" WHERE CODIGO = ' + IntToStr(CodigoArtic));

            oDSProvider := TDataSetProvider.Create(nil);
              oDSProvider.DataSet := oSQLQry;

            oCDSet := TClientDataSet.Create(nil);
              oCDSet.ProviderName := oDSProvider;

            oCDSet.Open;
            oCDSet.Edit;
            oCDSet.FieldByName('CANTIDAD').AsFloat := (oCDSet.FieldByName('CANTIDAD').AsFloat - CantidadArtic);
            oCDSet.Post;

            FreeAndNil(oCDSet);
            FreeAndNil(oDSProvider);
            FreeAndNil(oSQLQry);
          end;
      end;
  end;

Un saludo
__________________
Al hacer una consulta SQL, haz que los demás te entiendan y disfruten de ella, será tú reflejo de tú saber.
Responder Con Cita