Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-11-2003
IVAND IVAND is offline
Miembro
 
Registrado: may 2003
Ubicación: ECUADOR
Posts: 523
Poder: 21
IVAND Va por buen camino
Hacer preguntas en un query

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
__________________
IVAND
Responder Con Cita
  #2  
Antiguo 28-11-2003
agova agova is offline
Miembro
 
Registrado: may 2003
Posts: 69
Poder: 21
agova Va por buen camino
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.
Responder Con Cita
  #3  
Antiguo 28-11-2003
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 23
guillotmarc Va por buen camino
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.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
Respuesta



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 10:21:02.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi