Si estás trabajando con una base de datos relacional (Interbase, Firebird, Oracle, SQL-Server, Informix, DB2, MySQL u otra), la mejor opción sería a través de un procedimiento almacenado que recorra la tabla y acumule en una variable local al procedimiento el total. Cuando llegues al monto deseado (antes de que te pases), deberías cortar el recorrido de la tabla y devolver el último valor.
Otra opción es a través de un método, función o procedimiento directamente con Delphi haciendo lo mismo (recorrer la tabla e ir acumulando hasta alcanzar el valor).
Por supuesto lo primero que tienes que hacer (antes de acumular) ver si te pasas o no del vaor deseado y luego: acumular; o cortar el procedimiento.
Esto es fácil siempre que lo que necesites sea recorrer la tabla secuencialmente; ahora bien, si lo que necesitas es calcular el valor más aproximado, considerando todos los registros posibles, ya tienes que recurrir a un procedimiento recursivo y ver que sumatoria (de las posibles) te cae mejor. Por supuesto, esto llevaría mucho más tiempo de procesamiento y muchos más recursos (memoria).
|