Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-11-2004
frudolph frudolph is offline
Miembro
 
Registrado: oct 2004
Posts: 40
Poder: 0
frudolph Va por buen camino
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).
Responder Con Cita
  #2  
Antiguo 02-11-2004
JANDREGUE JANDREGUE is offline
Miembro
 
Registrado: jun 2003
Ubicación: COLOMBIA
Posts: 40
Poder: 0
JANDREGUE Va por buen camino
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.
Responder Con Cita
  #3  
Antiguo 02-11-2004
JANDREGUE JANDREGUE is offline
Miembro
 
Registrado: jun 2003
Ubicación: COLOMBIA
Posts: 40
Poder: 0
JANDREGUE Va por buen camino
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.
Responder Con Cita
  #4  
Antiguo 05-11-2004
frudolph frudolph is offline
Miembro
 
Registrado: oct 2004
Posts: 40
Poder: 0
frudolph Va por buen camino
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.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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


La franja horaria es GMT +2. Ahora son las 23:17:54.


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