PDA

Ver la Versión Completa : Hacer preguntas en un query


IVAND
28-11-2003, 16:25:09
Hola a todos

Espero puedan ayudarme

Trabajo con delphi 6 y firebird 1.0

Deseo hacer una consulta que permita obtener el siguiente resultado

Cliente 15 30 45 60 total

00001 10 2.00 0 41.00 63.00

Es decir que tengo una tabla con fecha de vencimiento y un valor a cancelar, lo que pretendo es hacer un analizis de la cartera por cobrar medido por los dias que tiene vencida una factura

Espero puedan ayudarme, tengo una librerias llamadas Rfunc que tienen una instruccion Iif Pero no me sirve para este caso lo mejor seria que hubiera una funcion Iif que permita poner un BeetW y comparar los 2 valores y ver cual encaja en cada uno


Ejemplo
X = Variable
(Resulta de restar la fecha del sistema con el vencimiento , da un valor positivo si esta vencido o negativo si no lo esta

If x Betwee( 1 ,15) Then 15 dias
If x Betwee( 1 ,30) Then 30 dias

De antemano Gracias por su ayuda

agova
28-11-2003, 22:22:42
Una vez calculado los dias de vencido realiza una consulta del tipo TRANSFORM (instruccion de SQL) algo parecido a esto:

TRANSFORM Sum(Totales.Cantidad) AS SumaDeCantidad
SELECT Totales.Clave
FROM Totales
GROUP BY Totales.Clave
PIVOT Totales.Tipo In ('E/S','NV','FAC');

Poniendo como pivotes tus valores.

no lo he probado me imagino que puede funcionar, proba y despues me cuentas.

guillotmarc
28-11-2003, 23:07:18
Lamentablemente el operador TRANSFORM no está disponible en Interbase y Firebird 1

Aunque puedes actualizar a Firebird 1.5 y utilizar el operador CASE :

CASE WHEN X BETWEEN 1 AND 15 THEN 15 WHEN X BETWEEN 15 AND 30 THEN 30 END

Finalmente, si no puedes actualizar a la nueva versión de Firebird, puedes crear una función UDF que haga ese calculo. Podrás utilizar esa función dentro de tus consultas. Aquí tienes un documento sobre como crear una UDF en Delphi http://www.ibphoenix.com/a478.htm

Saludos.