Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #9  
Antiguo 12-09-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por Jere_84 Ver Mensaje
Esta opción anda muy bien siempre y cuando el usuario vaya cargando los registro en el orden 1, 2, 3, 4...
Tenés toda la razón

Pero algo que remarcó pacopenin: "siendo solo 7 registros" me dió una idea...

Si tu TDataSet soporta la propiedad RecNo podrías hacer:
Código Delphi [-]
...
implementation

type
  TPrevValues = record
    Valor: Currency;
    Porce: Currency;
    Fijo: Currency;
  end;

var
  // Índice 0 valores para reg 1
  vPrev: array[0..7] of TPrevValues;

procedure TForm1.FormCreate(Sender: TObject);
begin
  // Sólo si deseas valores manuales para reg 1
  with vPrev[0] do
  begin
    // Valores de ejemplo
    Valor:= 1;  
    Porce:= 1;
    Fijo := 1;
  end;

  // Cargar el arreglo
  with DataSet do
    try
      DisableControls;
      while not Eof do
      begin
        vPrev[RecNo].Valor:= FieldByName('VALOR').AsCurrency;
        vPrev[RecNo].Porce:= FieldByName('PORCENTAJE').AsCurrency;
        vPrev[RecNo].Fijo := FieldByName('IMPORTEFIJO').AsCurrency;
        Next;
      end;
      First;
    finally
      EnableControls;
    end;
end;

procedure TForm1.DataSetBeforeScroll(DataSet: TDataSet);
begin
  with vPrev[DataSet.RecNo] do
  begin
    Valor:= DataSet.FieldByName('VALOR').AsCurrency;
    Porce:= DataSet.FieldByName('PORCENTAJE').AsCurrency;
    Fijo := DataSet.FieldByName('IMPORTEFIJO').AsCurrency;
  end;
end;

procedure TForm1.DataSetBeforePost(DataSet: TDataSet);
var
  Value: Currency;
  ix: Integer;
begin
  with DataSet  do
  begin
    // Registro anterior
    ix := DataSet.RecNo-1;

    if ix = 0 then ix:= 7;  { Sólo si deseas que reg 1 compute con reg 7 }

    Value:= (FieldByName('VALOR').AsCurrency - vPrev[ix].Valor) *
      vPrev[ix].Porce/100 + vPrev[ix].Fijo;

    Edit;
    FieldByName('VALOR').AsCurrency:= Value;
  end;
end;

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
concatenar dos valores de registros distintos según duplicados lmpadron SQL 3 30-08-2012 17:05:05
Detectar en un label registros con valores iguales y mostrarlo como uno solo Rofocale Varios 7 16-06-2011 09:48:20
Realizar calculos y buscar número mayor en DBGrid lujurock Conexión con bases de datos 14 12-11-2008 11:05:17
cambiar valores de registros daniel_snokker Conexión con bases de datos 1 12-10-2007 18:52:56
Hacer calculos con campos de un dbgrid... hademon Varios 1 16-09-2005 15:13:27


La franja horaria es GMT +2. Ahora son las 04:41:12.


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