![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|
|
#1
|
|||
|
|||
|
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). |
|
#2
|
|||
|
|||
|
Para Fudolph
Amigo Fudolph ...
Agradezco tu recomendacion... yo lo habia craneado asi... pero pense que depronto por SQL.. podia encontrar una consulta condicionada que me diera el dato rapidamente. estoy trabajando con Interbase De todas formas gracias por las recomendaciones
__________________
No hay metas imposibles... sólo barreras mentales. |
|
#3
|
|||
|
|||
|
Se me ocurrio otra cosa
Hola..Pensando otra cosa ...
Alguien sabe como por SQL.. puedo seleccionar los 10,20,30....n... mejores campos de una tabla? Es decir como un Top 10 Gracias
__________________
No hay metas imposibles... sólo barreras mentales. |
|
#4
|
|||
|
|||
|
Nuevamente, depende del motor con el que estás trabajando (cosa que deberías indicar). Igual, si se trata de Firebird 1.5 (no Interbase), la consulta debería tener la forma:
"select first n * from..." No recuerdo exactamente, pero creo que también era posible hacer ago por el estilo en Oracle. Sino, la otra opción es a través de un procedimiento almacenado, donde le deberías pasar la cantida de registros a mostrar y procesar la tabla a través de un "for do.." o un "for each..." (según el motor) y una variable de control, hasta llegar a la cantidad que necesites para luego terminar el procedimiento. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|