INI - FIN
--------
0 - 10
10 - 30
30 - 60
Aquí el usuario captura el primer registro con 10 en fin, entonces en ini se le asigna 0 por ser el primer registro, el usuario captura el segundo registro con 30 en fin, entonces en ini se le asigna 10 que fue el fin del registro anterior, esto se repite igual para todos los demás registros que no sean el primero.
Por lo pronto lo estoy haciendo de la siguiente manera en el evento OnCalcFields de un ClientDataSet que apunta a la tabla de Estratos (cdsEstratos) la cual tambien esta asignada a otro ClientDataSet que se llama cdsClon:
procedure TfrmParcelas.cdsEstratosCalcFields(DataSet: TDataSet); var anterior: double; begin anterior:= 0; if cdsEstratos.RecNo > 1 then begin if cdsEstratos.RecordCount <> cdsClon.RecordCount then begin cdsClon.Close; cdsClon.Open; end; if cdsClon.Locate('ID', cdsEstratos.FieldByName('ID').Value, []) then begin cdsClon.Prior; if not cdsClon.FieldByName('FIN').IsNull then anterior:= cdsClon.FieldByName('FIN').Value end; end; cdsEstratos.FieldByName('INI').Value:= anterior; end;
Pero creo que esto no es muy eficiente usando datasnap y me gustaría saber si ustedes conocen otra forma más eficiente.
Saludos